← Files RiversideARCHIVED FILE

skills/social-publishing/SKILL.md

3.46 KB · Oct 8, 2026 · 12:02 UTC

↓ Download file

See the change to this file →

---
name: social-publishing
description: Publish/schedule Riverside clips, manage unpublished posts and social accounts, or read analytics on YouTube, TikTok, Instagram, Facebook, LinkedIn or X. Clip editing uses video-editing; live posts must be edited/removed on their platform.
---

# Social publishing

| Tool | Purpose |
|---|---|
| `social_get_connected_platforms` | Accounts and live limits |
| `social_get_publishing_guidelines` | Platform rules and recovery |
| `social_upload_create` | Publish or schedule a clip |
| `social_get_upload_status` | Publish outcome |
| `social_list_uploads` | Find posts |
| `social_get_upload` | Content and capability flags |
| `social_update_upload` | Change an unpublished post |
| `social_cancel_upload` | Permanently cancel a cancellable post |
| `social_get_upload_analytics` | Collected metrics |
| `social_connect_social_account` | User authorization link |
| `social_disconnect_social_account` | Disconnect and cancel scheduled posts |

## Safety contract

Create and `publishNow` can produce real posts: never call them to test or
diagnose. No tool can edit, delete or unpublish a live post. Cancellation cannot
be undone. Success, processing, timeout, transport failure and unknown outcomes
may have posted: never repeat the publish. Only explicit failures passing the
recovery gate can become eligible for a fresh publish.

Use current schemas, connected account limits and live guidelines. Resolve
studio/production ids through content-discovery. Publishing needs `clipId`
(typically an exported edit id) and a connected account.

## Mandatory routing

Before social calls, read all matching references and no unrelated ones. After
every response/failure, re-evaluate and read new matches before the next call.

| Observable condition | Required reference |
|---|---|
| Wall-clock/future time, or draft export may need `composeSettings` | [Scheduling and draft export](references/scheduling-and-draft-export.md) |
| Posts, analytics, accounts, or processing/partial/failed/unknown publish (timeout, transport failure or unusable response) | [Results, management and recovery](references/results-and-recovery.md) |
| A publish was made and its outcome is unconfirmed | [Publish outcome](references/upload-status.md) |

"Tomorrow at 9" matches scheduling before its timezone is known.

## Publish workflow

1. Resolve `studioId` and read connected platforms. Select a valid
   `platformAccountId` by account/channel name; ask if studio/account is unclear.
   Empty `accounts: []` may mean failed account-detail lookup. Retry this read
   once; if still empty, report unavailable details and stop.
2. Load `social_get_publishing_guidelines` for the platform. Use current create
   schema and platform counting rules, not raw string length. Ask for YouTube
   privacy from live values; never infer/default it. Before YouTube publishing,
   inspect `editing_get_export_publish_data` and surface copyright/Content-ID
   flags instead of publishing over them.
3. Show exact metadata, account/channel, visibility, resolved schedule and
   compose choices. Explain that a live post cannot be undone here; wait for
   explicit confirmation. It covers one call for that target/payload. Preview
   material changes; retries need new confirmation even if unchanged. Stop on
   refusal, hesitation, changed direction or withdrawn confirmation.
4. Make one `social_upload_create` call per separately confirmed target/payload.
5. Report account, visibility, schedule and outcome per target; re-run routing.

SHA-256: 3e469f1f689d4aa94ef8395ffd45a7070e2051e5197a05d1acff7b405c7433f3