> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.simplified.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.simplified.com/_mcp/server.

# Social publishing

Use the social commands with accounts already connected in Simplified. Start by
listing them, then choose the IDs for the channels you want to use:

```bash
simplified accounts:list
simplified accounts:list --network instagram
```

Supported network filters are `facebook`, `instagram`, `linkedin`, `tiktok`,
`tiktokBusiness`, `youtube`, `pinterest`, `threads`, `google`, `bluesky`,
`mastodon`, `reddit`, and `telegram`. Use `google` for Google Business accounts.

## Create a draft

```bash
simplified posts:create \
  --content "Our autumn collection is here." \
  --accounts "ACCOUNT_ID" \
  --action draft
```

Choose the action deliberately:

| Action         | Use it when                                                                                                 |
| -------------- | ----------------------------------------------------------------------------------------------------------- |
| `draft`        | The content needs editing or review.                                                                        |
| `add_to_queue` | The content should enter the account's publishing queue. Check that account's queue settings in Simplified. |
| `schedule`     | The post should be scheduled for a specific date and time.                                                  |

Queueing is not an explicit “publish now” command. The CLI's create command
supports the three actions above.

## Add images and video

Use publicly reachable media URLs, including a fresh stored URL from
[assets:get](/cli/assets-and-uploads). A local path such as `./photo.jpg` must be
uploaded first.

```bash
simplified posts:create \
  --content "Explore the collection." \
  --accounts "ACCOUNT_ID" --action draft \
  --media "https://cdn.example.com/front.jpg,https://cdn.example.com/detail.jpg"
```

For a video with a poster frame, supply objects through `--media-json`:

```bash
simplified posts:create \
  --content "See the collection in motion." \
  --accounts "ACCOUNT_ID" --action draft \
  --media-json '[{"url":"https://cdn.example.com/launch.mp4","thumbUrl":"https://cdn.example.com/poster.jpg"}]'
```

`--media-json` takes precedence over `--media`. The CLI accepts up to ten media
URLs through `--media`; each platform can impose additional format and count
requirements.

## Choose platform-specific settings

Pass per-platform options as a JSON object in `--additional`. For example, an
Instagram Reel uses a video and the Reel/direct publishing settings:

```bash
simplified posts:create \
  --content "Behind the scenes." --accounts "INSTAGRAM_ACCOUNT_ID" \
  --action draft --media "https://cdn.example.com/behind-the-scenes.mp4" \
  --additional '{"instagram":{"postType":{"value":"reel"},"channel":{"value":"direct"}}}'
```

Use the Social Media API reference for the current `additional` schema. Options
are platform-specific; a caption and media combination suitable for one channel
may need changes for another.

For a LinkedIn document carousel, provide a reachable PDF URL in
`additional.linkedin.document.url` and an empty media array. Use a JSON file as
shown below so the full payload is explicit. An asset UUID is not a PDF URL.

## Work across multiple accounts

Supply comma-separated IDs. Add `--group` to create a grouped post for two or
more accounts:

```bash
simplified posts:create \
  --content "A new chapter starts today." \
  --accounts "LINKEDIN_ACCOUNT_ID,BLUESKY_ACCOUNT_ID" \
  --action draft --group
```

Review the content for each destination. Use separate drafts when the copy or
media needs to differ substantially.

## Schedule a post

Use a future date in `YYYY-MM-DD HH:MM` format:

```bash
simplified posts:create \
  --content "Our collection is now available." \
  --accounts "ACCOUNT_ID" --action schedule \
  --date "2027-01-15 17:00"
```

Replace the sample date with your intended publishing time and check the result
in the calendar. In version 1.8.0, `posts:create` forwards the date without a
separate timezone flag. To set an explicit timezone on an existing scheduled
post, use `posts:update`:

```bash
simplified posts:update --post-id "POST_ID" \
  --date "2027-01-15" --time "09:00" --timezone "America/Los_Angeles"
```

Notice that updates take separate `--date` and `--time` values. Listing posts uses
`--tz` to choose the display timezone; this does not reschedule them.

## Use a JSON file for a reusable payload

Create `post.json` and replace the placeholder account and media values:

```json
{
  "message": "Our latest field guide.",
  "account_ids": [12345],
  "action": "draft",
  "media": [],
  "additional": {
    "linkedin": {
      "document": {
        "url": "https://cdn.example.com/field-guide.pdf",
        "title": "The field guide"
      }
    }
  }
}
```

```bash
simplified posts:create --json post.json
```

`--json` reads the complete API request body from the file; the usual content,
accounts, action, and media flags do not build that body for you in this mode.
Use valid JSON, not comments or shell variables inside the file.

## Add follow-up comments

```bash
simplified posts:create \
  --content "Read our latest guide." --accounts "ACCOUNT_ID" --action draft \
  --comment "Full guide: https://example.com/guide"
```

For several comments, use `--comments` with an array of objects containing
`message` and a `delay` in seconds. `--comments` takes precedence over `--comment`.
Comments are intended for after publication; platform support still applies.

## Find, edit, and remove content

```bash
simplified posts:list --accounts "ACCOUNT_ID" --category scheduled --page 1 --per-page 20
simplified posts:list-drafts --accounts "ACCOUNT_ID"
simplified posts:update --post-id "POST_ID" --content "Updated caption."
simplified posts:update-draft --draft-id "DRAFT_ID" --content "Revised draft."
```

Copy identifiers from the matching list response. Scheduled-post IDs, draft IDs,
and group IDs are different inputs. To remove an attachment, an update command
accepts `--media ""`.

To delete content, choose the narrowest identifier that matches your intention:

```bash
simplified posts:delete --post-schedule-id "POST_SCHEDULE_ID"
simplified posts:delete-draft --draft-ids "DRAFT_ID"
```

Both delete commands also accept `--group-id` to act on a group. Re-list content
after changes to verify the result. For a review process before scheduling,
continue to [reviews and approvals](/cli/reviews-and-approvals).