← PostSyncerCONTENT HISTORY

Update to PostSyncer

Snapshot Sep 30, 2026 · 22:58 UTC · version 1.0.2

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "schedule-content-week",
  "description": "Plan and schedule a week of social posts with PostSyncer. Drafts per-platform variants from a brief, shows the full week for approval, then schedules to the user's connected accounts. Trigger on \"plan my week\", \"batch my posts\", \"schedule content\", \"fill my calendar\", or any request to draft and schedule social posts ahead of time. Do not use for replying to or moderating comments, for pulling analytics, or for publishing a single post right now.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 903
    },
    {
      "relative_path": "references/platform-notes.md",
      "size_in_bytes": 2794
    }
  ],
  "skill_md_contents": "---\nname: schedule-content-week\ndescription: Plan and schedule a week of social posts with PostSyncer. Drafts per-platform variants from a brief, shows the full week for approval, then schedules to the user's connected accounts. Trigger on \"plan my week\", \"batch my posts\", \"schedule content\", \"fill my calendar\", or any request to draft and schedule social posts ahead of time. Do not use for replying to or moderating comments, for pulling analytics, or for publishing a single post right now.\n---\n\n# Schedule a week of content\n\nTurn a rough brief into a reviewed, scheduled week of posts across the user's connected\nsocial accounts.\n\nPublishing is public and hard to undo. The approval step below is not optional.\n\n## 1. Establish context before drafting\n\nCall `list-workspaces`, then `list-accounts`. Never guess or invent a `workspace_id` or\naccount ID — every ID must come from a tool response in this conversation.\n\nStop and tell the user if:\n\n- **No accounts are connected.** They need to connect one in PostSyncer first.\n- **An account has `has_expired: true`.** Say which one. Posts scheduled to an expired\n  account will fail at publish time. Offer to schedule to the remaining accounts instead.\n\nIf the user has more than one workspace, ask which to use rather than assuming the first.\n\n## 2. Get the brief\n\nYou need enough to write with. Ask only for what is missing, in one message:\n\n- What the week is about (topics, launches, themes)\n- How many posts, across which of the connected accounts\n- Any dates or times that matter\n\nIf they say \"you decide\", pick a sensible cadence — roughly one post per weekday per\naccount — and say what you chose so they can correct it.\n\n## 3. Draft per-platform variants\n\nWrite each post for the platform it will appear on. Do not paste one block of text across\nevery network. See `references/platform-notes.md` for per-platform guidance.\n\nNever fabricate a statistic, quote, customer name, or result. If the brief implies a claim\nyou cannot source, write around it or ask.\n\nTo attach images or video, use IDs from `list-media`, or `upload-media-from-url` for a URL\nthe user supplied. Do not attach media the user did not ask for.\n\n## 4. Show the whole week and wait for approval\n\nPresent every post as a table: date, time, account(s), and the full text. Ask for explicit\napproval to schedule.\n\n**Do not call `create-post` until the user has approved.** \"Go ahead\", \"schedule it\", or\n\"yes\" is approval. Silence, a follow-up question, or a general expression of enthusiasm is\nnot. If they approve only part of the plan, schedule only that part.\n\n## 5. Schedule the approved posts\n\nOne `create-post` call per post:\n\n- `workspace_id` — from `list-workspaces`.\n- `schedule_type` — `\"schedule\"`. Use `\"draft\"` if the user wants to review in the app\n  first. Only use `\"publish_now\"` if they explicitly ask to post immediately.\n- `schedule_for` — `{ date: \"Y-m-d\", time: \"H:i\", timezone }`. Times are interpreted in the\n  workspace timezone unless you pass one.\n- `content` — an array of thread items, each `{ text, media? }`. A single post is a\n  one-item array. For an X/Twitter thread, use one item per tweet.\n- `accounts` — `[{ id }]` using IDs from `list-accounts`. Omit only if the user wants the\n  workspace default account.\n- `labels` / `campaign_id` — optional, from `list-labels` / `list-campaigns`, when the user\n  is organizing a campaign.\n\nTo put a link or CTA in a first comment rather than the caption, set `is_first_comment: true`\non a **separate** thread item, and keep at least one item that is not a first comment.\nThis applies to Instagram, Facebook, LinkedIn and YouTube only — TikTok and Threads will not\nget it, so anything those platforms need belongs in the main caption. Never use it for an\nX/Twitter thread.\n\nIf a call fails, report which post failed and why. Do not silently retry with different\ncontent, and do not continue scheduling the rest as if nothing happened.\n\n## 6. Confirm what landed\n\nCall `list-posts` and summarize what is now on the calendar: how many posts, the date range,\nand the accounts. If anything from the approved plan is missing, say so plainly.\n\n## Rules\n\n- Approval before publishing, every time. Scheduling to a real account is a public act.\n- Confirm before anything destructive. `delete-post` is irreversible and removes the post\n  from the social platform, losing its likes, comments and reach. `update-post` overwrites a\n  live post in place with no version history.\n- Never invent IDs. Workspace, account, media, label and campaign IDs come from tool calls.\n- Do not report a post as scheduled unless a `create-post` call returned successfully.\n"
}

SHA-256: 574aafdf11658a9d54d2804281f426ec6f89ec8afab02ec7551971d41f30b9f3