← PostFastCONTENT HISTORY
WHAT CHANGED
Update to PostFast
Snapshot Oct 24, 2026 · 13:10 UTC · version 1.3.2
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save PostFast and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Schedule and publish social media posts through PostFast, with the user's approval before anything goes out. Use when someone wants to post or schedule something on X, Instagram, Facebook, TikTok, LinkedIn, YouTube, Threads, Pinterest, Bluesky, Telegram or Google Business Profile, plan a week of content, save a draft for later, or check, fix or remove posts that are scheduled or failed.",
"included_files": [
{
"relative_path": "references/platform-rules.md",
"size_in_bytes": 8014
}
],
"name": "schedule-posts",
"skill_md_contents": "---\nname: schedule-posts\ndescription: Schedule and publish social media posts through PostFast, with the user's approval before anything goes out. Use when someone wants to post or schedule something on X, Instagram, Facebook, TikTok, LinkedIn, YouTube, Threads, Pinterest, Bluesky, Telegram or Google Business Profile, plan a week of content, save a draft for later, or check, fix or remove posts that are scheduled or failed.\n---\n\n# Schedule posts with PostFast\n\nThese steps use the PostFast connector's tools. PostFast holds each post you create until the user approves it, so the user sees exactly what will go out, where and when, before anything is published.\n\n## Rules\n\n1. **Create on hold, publish only on a yes.** Create every post with `approvalStatus: \"PENDING_APPROVAL\"`. Show the user the preview (step 6), and call `approve_posts` only after they say yes to it in the conversation, even when their first message asked you to post right away. A yes covers the posts as previewed; if anything changes, preview again.\n2. **Only connected accounts publish.** Check each account's `connectionStatus` in `list_accounts` before you schedule to it.\n3. **Fit each network.** Before you write or adapt a post, read `references/platform-rules.md` in this skill's folder: text limits, required media, and the settings each network needs.\n4. **Use the user's time zone.** `scheduledAt` is ISO 8601 with a UTC offset. If you don't know the user's time zone, ask once, and show every time back in it.\n\n## Steps\n\n### 1. Pick the workspace\n\nCall `list_workspaces`. With one workspace, carry on and leave `workspaceId` out. With several, use the one the user names or ask which, then pass its `id` as `workspaceId` on every call that follows, including `approve_posts`, `delete_post`, `delete_posts` and `list_posts` in later turns. Leaving it out uses the workspace the user connected, where a post from another workspace isn't found: `delete_post` then answers `deleted: false`, `delete_posts` lists it in `notFoundIds`, and `list_posts` returns nothing.\n\n### 2. Pick the accounts\n\nCall `list_accounts` and match what the user asked for (\"our Instagram\", \"LinkedIn and X\") by `platform`, `platformUsername` and `displayName`. If a network has more than one account, ask which one.\n\nIf an account's `connectionStatus` is DISABLED:\n\n- Don't schedule to it; PostFast rejects that. Tell the user, and give the `disabledReason`.\n- Offer a reconnect link: `generate_connect_link` with `platforms` set to that network. Whoever owns the account opens the link and signs in again. Set `sendEmail` only when the user asks you to email the link and gives the address.\n- Offer to save the post as a draft in the meantime.\n\n### 3. Write the posts\n\n- One post per account: a post for three networks is three posts.\n- When the user gives exact text, use it as given. If it's over a network's limit, say so and offer a shorter version rather than cutting it yourself.\n- When you write the text, fit it to each network instead of pasting one text everywhere: its length, how hashtags, mentions and links work there, and its tone. Keep names, prices, dates and links exactly as the user gave them.\n\n### 4. Add media\n\n- TikTok, Instagram, Pinterest and YouTube need media, even for a draft. If the user hasn't given any, ask for it before you create anything.\n- A file at a public https URL: `upload_from_url` with `sourceUrl`. For a caption file or a document, link to the file itself; a share page doesn't work.\n- A file in the conversation: `upload_media`. If your app can attach the file to the tool call, pass it as `file`. Otherwise pass its bytes as base64 in `data` with its MIME type in `contentType`, which suits images of a few MB. For a video or a large file you can't attach, ask for a public https link that downloads the file, and use `upload_from_url`.\n- Each upload returns a `media_id` and its `type`. Pass an IMAGE or VIDEO one as `mediaItems[].key`, with that `type` and `sortOrder` from 0. A CAPTION one (an .srt or .vtt file) goes in `controls.youtubeCaptionKey` and a DOCUMENT one (a PDF, Word or PowerPoint file) in `controls.linkedinAttachmentKey`, never in `mediaItems`; the platform rules cover both. You can use the same `media_id` in several posts.\n\n### 5. Create the posts, held\n\nCall `create_posts` with:\n\n- `posts`: one entry per account, each with `socialMediaId`, `content`, and where needed `mediaItems`, `scheduledAt` and `firstComment`. Up to 15 posts per call.\n- `status`: SCHEDULED, with a `scheduledAt` in the future and within a year on every post; or DRAFT, with no `scheduledAt`, to save it in PostFast without a time.\n- `approvalStatus`: `\"PENDING_APPROVAL\"`. The connector holds every post until it is approved anyway; passing it makes that explicit.\n- `controls`: the network settings from the platform rules. They apply to every post in the call, so posts that need different settings go in separate calls.\n\nIf the call is rejected, the error names the rule, for example `socialMediaDisconnected`, `contentLength.x` or `platformMedia.instagram.mediaRequired`. Fix that post and create it again. Keep the post ids from the result.\n\n### 6. Show the preview and ask\n\nShow every post as it will go out, then ask for a yes. For example:\n\n> **Nothing is published yet. Shall I schedule these?**\n>\n> 1. **Instagram @acme**, Tue 14 Oct, 09:00 (Europe/Sofia), feed post with 1 image\n> \"Our autumn menu is here…\" *(the full text)*\n> 2. **LinkedIn Acme Ltd**, Tue 14 Oct, 09:00 (Europe/Sofia), text only\n> \"We're launching our autumn menu…\" *(the full text)*\n>\n> Reply **yes** to schedule both, or tell me what to change.\n\nGive the full text, the media, and the settings that change what people see, such as Reel or feed, a Threads topic, a Pinterest board, a LinkedIn document and its title, or YouTube captions. A draft needs no approval: say it is saved in PostFast and has no time yet.\n\n### 7. Approve after the yes\n\nWhen the user says yes to the preview, call `approve_posts` with the post ids and `approvalStatus: \"APPROVED\"`. Then check them with `list_posts` and `ids`: each should be SCHEDULED and APPROVED, and it publishes at its time.\n\n- **Changes:** there is no edit. Delete the held post with `delete_post` (its `id`, and the same `workspaceId`), create the new version (step 5), and preview again.\n- **No, or no answer:** leave the posts held. They stay in PostFast unpublished, where the user can review them. Delete them only if the user asks.\n- **The time has passed:** approved less than 2 hours late, the post goes out within about a minute. Past 2 hours, don't approve it: tell the user, and only if they agree, create it again with a new time and delete the old one.\n\n## \"Post it now\"\n\nPostFast has no publish-now. Schedule the post about 5 minutes ahead and say so in the preview. If the yes arrives after that time, the post goes out right after approval (step 7).\n\n## Check, fix or remove posts\n\n- `list_posts` filters by `statuses` (DRAFT, SCHEDULED, PUBLISHED, FAILED), `platforms`, accounts (`socialMediaIds`, the `id`s from `list_accounts`), `from` and `to`, or `ids`, up to 50 per page.\n- A FAILED post has a `lastError`. MISSED_DISCONNECTED means its account was disconnected when it was due: reconnect the account (step 2), then create the post again. MISSED_NOT_PUBLISHED means it passed its time by more than 2 hours without going out. Other errors are usually media the network refused.\n- Each post shows its settings in `controls`. Only the field for the post's own network means anything; the others can hold defaults.\n- `delete_post` removes a post from PostFast and stops a scheduled post from going out. To remove several, pass up to 100 ids to `delete_posts` in one call; it returns `deletedIds` and `notFoundIds`. Neither removes a post that was already published: that stays on the network until the user deletes it there, so say so. Deleting can't be undone, so confirm first: list every post you are about to delete.\n"
}SHA-256 of public snapshot: e0358800d2df5f86e1ca8850bab23cc00364c3dc68512b43a5021494331e556a