← WoopSocial Social SchedulerCONTENT HISTORY

Update to WoopSocial Social Scheduler

Snapshot Nov 10, 2026 · 12:09 UTC · version 1.1.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save WoopSocial Social Scheduler and check future changes in Following.

Up to 3 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Cross-post one piece of content to Instagram, TikTok, LinkedIn, X, Threads, Bluesky, Facebook, Pinterest and YouTube in one go through WoopSocial. Use when the user says \"post this everywhere\", \"cross-post this\", \"share this on all my accounts\", \"same post to LinkedIn and X\", \"turn this video into posts for every platform\". Writes a native version per platform, validates every account in one check so nothing is created until every version passes, shows the versions for approval, then publishes or schedules. Reddit and Mastodon are not supported.",
  "included_files": [],
  "name": "cross-post-everywhere",
  "skill_md_contents": "---\nname: cross-post-everywhere\ndescription: \"Cross-post one piece of content to Instagram, TikTok, LinkedIn, X, Threads, Bluesky, Facebook, Pinterest and YouTube in one go through WoopSocial. Use when the user says \\\"post this everywhere\\\", \\\"cross-post this\\\", \\\"share this on all my accounts\\\", \\\"same post to LinkedIn and X\\\", \\\"turn this video into posts for every platform\\\". Writes a native version per platform, validates every account in one check so nothing is created until every version passes, shows the versions for approval, then publishes or schedules. Reddit and Mastodon are not supported.\"\n---\n\n# Cross-post everywhere\n\nOne piece of content, one WoopSocial post, a native version on every platform. The point is not to paste the same caption everywhere: each platform gets text written for how people read it there.\n\nThe user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.\n\n## If WoopSocial isn't connected\n\nIf no WoopSocial tools are available, say the WoopSocial connector isn't set up. The user can create an account at https://app.woopsocial.com/signup?utm_source=chatgpt-plugin&utm_medium=skill&utm_campaign=woop-plugin-v1&utm_content=cross-post-everywhere and connect WoopSocial in the app's plugin or connector settings, then retry. You can still write every platform version now, so offer that. Never pretend to post.\n\n## 1. Find the accounts\n\nCall projects_list. If there are several projects, ask which brand by name. All accounts in one post must belong to the same project, so one cross-post covers one brand or client. Then call social_accounts_list and show the CONNECTED accounts by platform and username (never IDs).\n\n\"Everywhere\" means every connected account in that project, unless the user names a subset. Mention any DISCONNECTED account and offer to reconnect it with oauth_create_authorization before going on. Reddit and Mastodon aren't supported. If the user asks for them, say so in one line.\n\n## 2. Check what each platform needs\n\nGet the content (text, link, image, video) and check each platform against it:\n\n| Platform | Needs | Target fields |\n|---|---|---|\n| Instagram | An image or video | `postType` POST (image, carousel) or REEL (vertical video) |\n| TikTok | A video, or images for a photo post | Settings from social_accounts_get_platform_inputs (below) |\n| YouTube | A video and a title | `title`, `privacy` (public, private, unlisted), optional `tags`, `madeForKids` |\n| Pinterest | An image or video, a board, ideally a link | `pinterestBoardId`, `title`, `link` |\n| Facebook | Text only is fine | `postType` TEXT_ONLY, IMAGE, VIDEO or REEL; optional `link` |\n| LinkedIn (profile or page) | Text only is fine | optional `link` |\n| X, Threads, Bluesky | Text only is fine | none |\n\nIf a platform can't take this content (text only for Instagram, an image for YouTube), say which ones drop out and why, and ask whether to continue without them or add the missing media.\n\n- **Pinterest:** call social_accounts_get_platform_inputs for the account and let the user pick a board by name.\n- **TikTok:** call social_accounts_get_platform_inputs. The user must choose privacy from `privacyLevelOptions`. Never default it. Only allow comments, duets and stitches where the flags say they're available (duets and stitches are video only). The API needs `allowComment`, `allowDuet`, `allowStitch`, `isYourBrand`, `isBrandedContent` and `autoAddMusic` as true or false. Ask whether the content is AI-generated (`isAiGeneratedContent`) and whether it promotes their own business (`isYourBrand`) or is a paid partnership (`isBrandedContent`). For a photo post, ask whether TikTok should add music (`autoAddMusic`). The video must be within `maxVideoPostDurationSec`. For more TikTok detail, tiktok-posts covers it.\n- **YouTube:** ask for or write the title, and ask the privacy and whether it's made for kids (`madeForKids`).\n- **Media aspect ratios:** a horizontal video can go to YouTube but may fail as a Reel or TikTok. posts_validate is the final check, so don't guess limits.\n\n## 3. Write a native version per platform\n\nStart from the user's core message and write each one for its platform. Never invent facts, prices or results. Ask, or leave a `[placeholder]`.\n\n- **X:** short and punchy, one idea, aim for under 280 characters. One or no hashtag.\n- **Threads:** conversational, like talking to a friend. A question works well.\n- **Bluesky:** 300 characters max, plain and conversational, no hashtag stuffing. Put a link in the text if there is one.\n- **LinkedIn:** professional and specific. First two lines earn \"see more\", short paragraphs, end on a takeaway or real question, 0 to 3 hashtags. No engagement bait.\n- **Facebook:** friendly and plain, a little context, the link if there is one.\n- **Instagram:** hook in the first line, value, one clear ask, 3 to 5 specific hashtags.\n- **TikTok:** a hook that matches the video's first second, short, 3 to 5 hashtags.\n- **YouTube:** a searchable title plus a description with the key words.\n- **Pinterest:** a keyword-rich title and description of what the pin shows, plus the link.\n\nSingle post per platform: WoopSocial doesn't post X, Threads or Bluesky thread chains. If the content is long, cut it to one strong post and offer a link.\n\n## 4. Upload media once\n\nUpload each local file once and reuse the media id on every platform:\n\n1. Get the file size. Call media_uploads_create_session with projectId and fileSizeInBytes (max 5 GB).\n2. Split into `partCount` parts. Every part except the last is exactly `partSizeInBytes`. PUT each part's raw bytes to its `uploadUrl`.\n3. Call media_uploads_complete_session and keep the media id.\n\nFiles already in WoopSocial: media_list. If uploads are blocked, ask the user to allow `*.r2.cloudflarestorage.com` (in the app's code execution or sandbox network settings). If you can't make HTTP requests at all, say so. Offer to cross-post text only to X, Threads, Bluesky, LinkedIn and Facebook, or the user uploads the media in the WoopSocial app.\n\n## 5. Build one post with overrides\n\nOne posts_create call for all platforms:\n\n- `content`: one item with the base text and media.\n- `socialAccounts`: one target per account, with its platform fields. Give each target a `contentOverride` (same one-item shape: text plus media) holding that platform's own version. Use the override for media too, for example a different image on Pinterest, or no media on X.\n- `schedule`: DRAFT, PUBLISH_NOW, or SCHEDULE_FOR_LATER with `scheduledFor` in UTC. Ask the time zone once if unclear. Past times aren't allowed.\n- `retryPolicy: {maxRetries: 2, delaySeconds: 300}` unless the user doesn't want retries.\n\n## 6. Validate together\n\nCall posts_validate with the full payload. It returns `isValid` and a list of `errors` (each with a `path` and a `message`); treat `isValid: false` as a failure even though the call succeeded. If an error names a field you don't recognize, schema_describe shows the tool's full input schema. Validation is atomic: if one platform fails, nothing is created. For each error, say which platform and why in plain words. Fix it (shorten text, swap media, add a title) and validate again. If a platform can't be fixed, ask the user before dropping it. Never drop one silently.\n\n## 7. Preview and confirm\n\nShow a preview table, one row per account:\n\n| Platform | Account | Text (full) | Media | Settings |\n|---|---|---|---|---|\n\nSettings include post type, link, board, title, privacy and TikTok labels. Add the time in the user's time zone. Ask for a yes, because you wrote the per-platform versions and the user hasn't seen them yet. Skip the question only if the user supplied the exact text for every platform, the accounts, the time and every required setting, and you changed none of it. A yes covers exactly what was shown. On yes, call posts_create with the validated payload. On a 429, wait briefly and retry once.\n\n## 8. Report back\n\nPer platform: scheduled (with time) or published. For PUBLISH_NOW, check social_account_posts_list for this post and list each externalPostUrl once PUBLISHED. If one platform FAILED while others went out, explain its errorMessage in plain words and offer to re-send just that one. fix-failed-posts can help with that.\n\n## Good to know\n\n- A scheduled cross-post can't be edited in place. To change one platform, show the new version, get a yes, create it as a new post, then delete the old platform copy with social_account_posts_delete. If that delete is refused, delete the whole post with posts_delete and recreate the rest.\n- Several pieces of content across all platforms over weeks: bulk-schedule-posts fits better.\n"
}

SHA-256 of public snapshot: 16ff994cbc69d4dd7e19c60f81dc9d67308e5cbde6ef5569d26361da9e7cf2a2