{"id":89059,"plugin_id":"plugin_asdk_app_6ae20d28f30c81919992b6b198b05d2b","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-10T12:09:58.007Z","digest":"274026959a2d1b5ff91e762dfba8a29ed49f475a4f5e44e7d3568f761f2276f1","against":null,"payload":{"description":"See and manage scheduled social posts in WoopSocial: what's going out this week, gaps in the calendar, moving a post to a new time, cancelling posts, or pausing everything during a crisis or bad news and resuming later. Use when the user asks \"what's scheduled\", \"move Thursday's post\", \"cancel that post\", \"pause all my posts\", \"hold the queue\".","included_files":[],"name":"manage-post-queue","skill_md_contents":"---\nname: manage-post-queue\ndescription: \"See and manage scheduled social posts in WoopSocial: what's going out this week, gaps in the calendar, moving a post to a new time, cancelling posts, or pausing everything during a crisis or bad news and resuming later. Use when the user asks \\\"what's scheduled\\\", \\\"move Thursday's post\\\", \\\"cancel that post\\\", \\\"pause all my posts\\\", \\\"hold the queue\\\".\"\n---\n\n# Manage the post queue\n\nShow the user what's scheduled, and move, cancel, pause or resume posts safely. WoopSocial can't edit a scheduled post, so moving, pausing and resuming work by recreating it and deleting the original. Say this in one line before any of those.\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=manage-post-queue, connect WoopSocial in the app's plugin or connector settings, sign in and retry. There's no queue to show until then. Never pretend to change anything.\n\n## 1. Load the queue\n\n1. Call projects_list (ask by name if there are several), then social_accounts_list so you can show platform and username. Never show IDs.\n2. Call social_account_posts_list with projectIds and deliveryStatus NOT_STARTED,SENDING, limit 100. Keep calling with nextCursor until it's gone.\n3. Split the results: `schedule.type` SCHEDULE_FOR_LATER are scheduled (they have `scheduledFor`). DRAFT items are drafts and have no date, so list them separately as \"undated drafts\".\n4. Group items by postId. One post can go to several platforms; each platform copy is its own item.\n\nAsk the time zone once if it isn't clear. Show the next 7 days unless the user asks for another range, and say how many posts are scheduled after that.\n\n## 2. Show it\n\nBy day, in the user's time zone, sorted by time:\n\n```\nTue 4 Nov\n  08:00  Instagram (@shop), LinkedIn page  \"First line of the text...\"  [2 images]\n  17:30  TikTok (@shop)                    \"First line...\"              [video]\n```\n\nThen point out, briefly:\n\n- **Gaps:** days in the shown period with nothing on an account that has posts on other days.\n- **Clusters:** several posts on the same account within a few hours, or the same text on the same day.\n- **Retries:** an automatic retry of a failed post is its own new post, scheduled the retry delay after the failure, with the same text and account. To label retries, also list FAILED posts from the last few days and mark matching text on the same account as a retry.\n- Anything that looks off: a post more than a few minutes in the past that's still NOT_STARTED, a DISCONNECTED account with posts waiting (those won't go out; offer to reconnect with oauth_create_authorization).\n\nItems in SENDING are going out right now and can't be stopped or changed. Say so if the user asks about one.\n\n## 3. Cancel\n\n1. Identify the post with the user (day, time, platform, preview). Ask: all platforms, or just one?\n2. Show what will be removed and ask for a yes.\n3. All platforms: posts_delete on the parent post. It only works while every platform copy is still NOT_STARTED. If it returns `POST_NOT_DELETABLE`, one copy is already sending, published or failed; explain and offer to remove the remaining copies one by one.\n   One platform: social_account_posts_delete for that platform's copy only.\n4. Reload the list and confirm it's gone.\n\n## 4. Move to a new time\n\nThere's no edit, so a move is recreate then delete. Say this in one line first.\n\n1. Ask: all platforms, or just one? For one platform, the new post targets only that account and you delete only that copy (social_account_posts_delete).\n2. Get the new time and convert to UTC. If the time is in the past, ask for another.\n3. Call posts_get on the post to copy every setting: the same text and media ids (`type: MEDIA_LIBRARY`, `mediaId`, in order), each account with its platform fields (postType, privacyLevel, pinterestBoardId, title, link and so on), `contentOverride` where a platform differs, `retryPolicy` and `autoDeleteMediaAfterPublish`. Only change `schedule` to SCHEDULE_FOR_LATER with the new `scheduledFor`.\n4. Call posts_validate. 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. Fix and re-validate if needed.\n5. Show old time, new time, accounts and text preview. Ask for a yes.\n6. posts_create. Only after it confirms the new post was created, delete the old one (posts_delete, or social_account_posts_delete if only one platform moves).\n7. Reload and show the new slot. If the delete fails, tell the user both copies exist right now and offer to retry the delete.\n\nMoving several posts: show the full list of old and new times, get one yes, then do them one at a time.\n\n## 5. Pause everything (crisis or bad news)\n\nGoal: nothing goes out, and nothing is lost.\n\n1. List every SCHEDULE_FOR_LATER item that's NOT_STARTED for the project (or the accounts the user names).\n2. Write a recovery list, one row per post: platforms and usernames, original time in the user's zone, and the first line of the text. If you can write files, save it (for example `queue-recovery-<date>.md`) and say where. Always show it in chat as well. The drafts keep the full text, media and settings.\n3. Explain the plan once: each post is recreated as an undated DRAFT in WoopSocial, then the scheduled original is deleted. Ask for one yes for the whole list.\n4. Work soonest first, one post at a time: posts_get the original, posts_validate and posts_create the same payload with `schedule: {type: DRAFT}`, confirm it was created, then posts_delete the original. If the delete returns `POST_NOT_DELETABLE`, the post is already going out: tell the user and delete the new draft (the yes above covers this). On a 429, wait and retry that call.\n5. Reload the queue and report: how many paused, any that couldn't be (for example already SENDING), and that the recovery list holds the original times.\n\n## 6. Resume\n\n1. List the drafts (social_account_posts_list, NOT_STARTED, `schedule.type` DRAFT) and match them to the recovery list (ask the user to paste it, or read the saved file) for the original times. If there's no recovery list, show the drafts and ask for times.\n2. Ask for new times: the original ones where they're still in the future, and new ones for anything whose time has passed. Past times must move forward. Offer to spread them out rather than release everything at once.\n3. Show the new schedule, say each draft is deleted once its scheduled copy exists, and ask for one yes.\n4. One post at a time: posts_get the draft, posts_validate and posts_create the same payload with SCHEDULE_FOR_LATER and the new time, then posts_delete the draft once the new post is confirmed.\n5. Reload and show the queue by day.\n\n## Good to know\n\n- Go one call at a time. On a 429, wait briefly and retry.\n- If a call fails mid-batch, stop, report what was done and what's left, and ask before continuing.\n- To fill gaps with new posts, instagram-posts, linkedin-posts, tiktok-posts, cross-post-everywhere or bulk-schedule-posts can help. Failed posts belong in fix-failed-posts.\n\n## Never\n\n- Delete anything without a yes for exactly what was shown.\n- Delete an original before its replacement is confirmed created.\n- Show internal IDs.\n- Say a draft is \"on\" a date. Drafts are undated.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}