← Plugin catalog
Productivity

WoopSocial Social Scheduler

WoopSocial v1.1.0

Plan and schedule social posts

Create a free account to save this plugin.

From the developer

Declared capabilities

  • Connect social accounts
  • Write posts
  • Upload photos and videos

Cost & access

This plugin does not sell products or process payments.

Declared limitations

  • Unsupported platform
  • Unsupported comment replies
  • Analytics for posts made outside WoopSocial

Onboarding example

Schedule this post to Instagram and LinkedIn for tomorrow at 9am.

View onboarding source →

Sources & dates

Developer declarations; not independently tested. Listing last checked Nov 10, 2026. Package observed Nov 10, 2026.

View package source →

Description

From the marketplace listing

Write, schedule and publish social media posts to Instagram, TikTok, LinkedIn, X, Threads, Bluesky, Facebook, Pinterest and YouTube from a conversation, through your WoopSocial account. What you can do: connect your social accounts; write and schedule Instagram posts, carousels, Reels and Stories, TikTok videos and photo carousels, and LinkedIn posts for profiles and company pages; post one piece of content to every platform at once; bulk schedule from a spreadsheet or a folder of media; see, move, cancel or pause scheduled posts; find and re-send posts that failed; see how your posts performed; plan a content calendar; get post ideas; audit an account; run a weekly content routine; and create ready-to-post content for real estate agents and restaurants. For creators, small businesses, marketers and agencies who manage social media accounts. Before anything goes out, posts the assistant wrote or changed are shown to you for approval, as are batches of posts and any delete, move or pause. Limitations: Reddit and Mastodon are not supported. Each post is a single post, not a thread. Replying to comments or direct messages is not supported. Performance results only cover posts published through WoopSocial. Uploading photos and videos needs an environment that can run code or a shell; text posts work everywhere.

Language: English · Automatically detected from descriptions.

Changes

No changes recorded yet. Follow this plugin to keep track of future changes.

First seen Nov 10, 2026. Last seen Nov 10, 2026.

Keywords

Files & skills

File archives

Plugin package23 files · 71.6 KBBrowse files →
Skill instructions
bulk-schedule-posts7.29 KB

View saved version →

---
name: bulk-schedule-posts
description: "Bulk schedule many posts at once through WoopSocial from a spreadsheet, CSV, Notion table or a folder of photos and videos. Use when the user says \"schedule all of these\", \"upload this folder and spread it over the month\", \"import my content calendar sheet\", \"I have 30 clips to post\". Maps rows or files to accounts and dates, writes missing captions, uploads media, validates every post, shows the full queue for approval, then schedules it."
---

# Bulk schedule posts

Turn a content calendar or a pile of media into a full, validated queue in WoopSocial with one approval. The work is in the mapping and the checking: get every row right before anything is created.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## If WoopSocial isn't connected

If 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=bulk-schedule-posts and connect WoopSocial in the app's plugin or connector settings, then retry. You can still clean up the sheet and build the queue table now, so offer that. Never pretend to post.

## 1. Read the input

Accept any of these:

- **CSV** or a **Google Sheet export** (File > Download > CSV)
- **Notion table export** (Export > Markdown & CSV) or a table pasted into chat
- **A folder of photos or videos**, with or without captions

If the user shares a Google Sheet or Notion link that you can't open, ask for the CSV export.

## 2. Map the columns

Find these columns, whatever they're called:

| Field | Typical headers | Needed |
|---|---|---|
| Date | date, day, publish date | Yes |
| Time | time, hour (or inside the date) | Yes, or a default the user sets |
| Platform | platform, channel, network | Yes, or one platform for all |
| Text | caption, copy, text, post | Yes, unless the user approves writing them |
| Media | file, image, media path, filename | When the platform needs it |
| Link, title | link, url, title | Optional (title is required for YouTube) |

Show the mapping in a few lines and ask about anything ambiguous: a date like 03/04 (March 4 or April 3?), a time without am/pm, "IG + FB" in one cell (one post to both), a platform name that matches two accounts, LinkedIn profile or company page. Ask the time zone once.

## 3. A folder of media

List the files, then propose a spread, for example "one post a day at 9:00, Monday to Friday, starting next Monday, in filename order". Ask which platforms and let the user adjust days, times and order. If they know their best posting times, use those. Don't claim to know them otherwise.

## 4. Missing captions

If rows have no text, ask before writing any. With approval, write each caption for its platform and the file it goes with (look at the image if you can). Never invent prices, results, reviews or claims. Use a `[placeholder]` and flag it.

## 5. Resolve accounts

Call projects_list (ask by name if there are several), then social_accounts_list. Every post in one call must use accounts from the same project. Match each row's platform to a CONNECTED account and show accounts by platform and username, never IDs. If a platform is missing or DISCONNECTED, offer to connect it with oauth_create_authorization before going on.

For Pinterest rows, call social_accounts_get_platform_inputs and map each row to a board by name. For TikTok rows, call it too and ask the user once for privacy (only from `privacyLevelOptions`), comments, duets and stitches (only where available), and whether the content is AI-generated or promotional. Apply those answers to every TikTok row unless the user says otherwise. YouTube rows need a title and a privacy choice. Instagram and Facebook rows need a post type: an image or carousel is POST (Instagram) or IMAGE (Face

Preview of the first 4,000 characters. Read full instructions →

connect-social-accounts5.39 KB

View saved version →

---
name: connect-social-accounts
description: "Connect Instagram, TikTok, LinkedIn, X, Threads, Bluesky, Facebook, Pinterest and YouTube accounts so the assistant can post to them through WoopSocial. Use when the user asks \"can you post to my Instagram?\", \"connect my LinkedIn\", \"link my TikTok\", \"add a new client's accounts\", or a post can't go out because no account is connected. Explains what the assistant can and can't post (not Reddit or Mastodon), creates a project per brand or client, gives a secure sign-in link and confirms the account is live."
---

# Connect social accounts

Get the user from "can you post for me?" to a connected, working account in a few minutes. WoopSocial does the posting. The assistant never sees or stores social media passwords.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## Step 0: Is WoopSocial available here?

If no WoopSocial tools (projects_list, social_accounts_list and so on) are available, the connector isn't set up yet. Tell the user:

1. Create a WoopSocial account: https://app.woopsocial.com/signup?utm_source=chatgpt-plugin&utm_medium=skill&utm_campaign=woop-plugin-v1&utm_content=connect-social-accounts
2. Connect WoopSocial in the app's plugin or connector settings and sign in. No API key is needed.
3. Come back and say "connect my accounts".

Stop there. Don't pretend anything is connected.

## Answering "can you post to my socials?"

Answer in a few lines, then offer to connect:

- **Yes, through WoopSocial:** Instagram (posts, carousels, Reels, Stories, Trial Reels), TikTok (videos and photo carousels), LinkedIn (personal profile and company pages), X, Threads, Bluesky, Facebook Pages (posts, Reels, Stories), Pinterest (pins to boards) and YouTube (videos and Shorts).
- **The assistant can** write the post, schedule it for a set time, publish it now, save it as a draft, post the same thing to several platforms, show what's scheduled, and report results for posts sent through WoopSocial.
- **Not supported:** Reddit and Mastodon. Thread chains on X, Threads or Bluesky go out as single posts only. Replying to comments and DMs isn't supported.
- **Uploading photos and videos** needs the assistant to be able to run code or a shell (an app that can run code or a shell). Text posts work everywhere.
- **Nothing posts** unless the user asks for it. When the assistant wrote or changed the post, when it's more than one post, or when the account or time is unclear, the assistant shows it first and waits for a yes.

## Connect flow

1. **Pick the project.** Call projects_list.
   - None: ask what the brand or business is called, then call projects_create with that name.
   - One: use it.
   - Several: list them by name and ask which one, or whether this is a new brand or client (then projects_create).
   - Agencies get one project per client. A single post can only go to accounts in the same project, so don't mix clients.
2. **Check what's already there.** Call social_accounts_list for the project. Tell the user which platforms are connected and which show DISCONNECTED.
3. **Ask which platforms to connect,** if the user didn't say. LinkedIn: ask whether it's their personal profile (LINKEDIN) or a company page (LINKEDIN_PAGES). Each is its own connection.
4. **Create the sign-in link.** For each platform, call oauth_create_authorization with the projectId and platform. Don't pass redirectUrl. If the returned URL starts with `/`, put `https://app.woopsocial.com` in front of it. Give the user the link and tell them:
   - Open it in a browser, sign in to the platform, and approve access.
   - Instagram needs a professional account (Business or Creator). If it's a personal account, the sign-in won't work until they switch it to Business or Creator in the Instagram app.
   - Facebook Pages and LinkedIn company pages: if the sign-in asks which page to allow, pick the one they want to

Preview of the first 4,000 characters. Read full instructions →

content-calendar-generator7.97 KB

View saved version →

---
name: content-calendar-generator
description: "Build a social media content calendar for a month: themes per week, a balanced mix of post types, the dates, and a draft caption for every post, for the platforms the user picks. Use when the user says \"make me a content calendar\", \"plan a month of posts\", \"30 days of Instagram content\", \"what should I post this month\". Once the user approves the plan, it schedules the posts that are ready for their dates through WoopSocial and saves the rest as drafts to finish later."
---

# Content calendar generator

Plan a month of social posts the user can actually keep up with: weekly themes, a balanced mix, a date and time per post, a hook and a draft caption for each. The calendar is a complete deliverable on its own. After approval, offer to put it into WoopSocial.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## 1. Get the inputs

Ask in one short message, only for what's missing:

- **Platforms:** which ones (Instagram, TikTok, LinkedIn, Facebook, X, Threads, Bluesky, Pinterest, YouTube).
- **Posts per week,** per platform.
- **Goal for the month:** awareness, leads, sales, bookings, community, a launch.
- **Audience:** who they want to reach, and what those people care about.
- **Key dates:** launches, sales, holidays, events, seasonal moments in their market.
- **Capacity:** how much time they have, and what they can produce (photos, videos, design). Be realistic. If they ask for 5 Reels a week and film nothing now, suggest fewer, easier posts and say why. A plan they keep beats a plan they drop in week two.
- **Month and time zone.**

If they've shared past posts or a website, use them for voice and topics.

## 2. Plan the month

- **Weekly themes:** one theme per week that ties to the goal and the key dates. Name each week.
- **Pillars:** 3 to 4 recurring content types, for example teach, show the work, social proof, offer. Rotate them.
- **Balanced mix:** most posts give value (tips, stories, behind the scenes, answers to common questions). Promotion is a minority, around 1 in 4 or 5, and sits closest to launch or sale dates.
- **Formats** that fit each platform and the user's capacity: carousel, single image, Reel or short video, text post, Story.
- **Times:** pick a sensible starting time per platform in the user's time zone and say it's a starting point to test, not a proven best time.
- Never invent prices, offers, results, reviews or quotes. Use placeholders like `[discount]` or `[client name, with permission]` and list them at the end.

## 3. Deliver the calendar

Start with the weekly themes (one line each), then one table for the month:

| Date | Time | Platform | Format | Theme or pillar | Hook | Draft caption | Media needed | Ready? |
|---|---|---|---|---|---|---|---|---|

- **Hook:** the first line or the on-screen opener.
- **Draft caption:** a full first draft in the user's voice, with hashtags where the platform uses them (3 to 5 on Instagram, few or none on LinkedIn). Keep Bluesky posts to 300 characters and X posts to 280 unless the user has a longer X limit.
- **Media needed:** what to shoot or design, specific enough to act on.
- **Ready?:** yes only when the user has approved the final caption and any media the post needs exists.

End with the placeholder list and a short production checklist (what to film or design, grouped so it can be batched in one or two sessions).

If file access exists, offer to save the calendar as a CSV or markdown file, for example `content-calendar-2026-11.csv`. Let the user edit before anything goes into WoopSocial.

## 4. Offer to load it into WoopSocial

After the user approves the plan, offer: "Want me to schedule the posts that are ready and save the rest as drafts in WoopSocial?"

Say exactly how it works:

- **Ready posts** (approved text, plus media where the format needs it) are scheduled with SCHEDULE_FOR_

Preview of the first 4,000 characters. Read full instructions →

content-ideas-generator6.2 KB

View saved version →

---
name: content-ideas-generator
description: "Generate social media post ideas that fit the user's niche, audience and platforms, each with a hook and a format (carousel, Reel, text post, Story). Use when the user says \"give me content ideas\", \"what should I post\", \"I'm out of ideas\", \"post ideas for my bakery\". When WoopSocial is connected, it starts from the user's best-performing posts sent through WoopSocial. Ideas the user picks can be saved in WoopSocial as drafts or scheduled."
---

# Content ideas generator

Give the user up to 20 specific post ideas they could make this week, not a list of generic topics. When WoopSocial is connected, build on what already works for them. Ideas they pick can become drafts or scheduled posts.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## 1. Know the account

Ask only for what's missing, in one message:

- **Niche:** what they do or sell, and where (local business, online, B2B).
- **Audience:** who they want to reach and what that person cares about.
- **Goal:** reach, traffic, sales, community.
- **Platforms** they post to.
- Anything they can or can't produce (no face on camera, no time for video, product photos only).

If they shared past posts or a website, use the specifics in them: product names, places, customer questions, recurring events.

## 2. Start from their best posts (if WoopSocial is connected)

If WoopSocial tools are available:

1. projects_list (ask by name if several), then social_accounts_list. Never show IDs.
2. social_account_posts_list with projectIds and deliveryStatus PUBLISHED, limit 100, following nextCursor.
3. For each post, take the latest analytics snapshot per metric. Rank by (saves + shares) divided by views where views exist. Where there are no views, use saves and shares, or comments or clicks if those fit the goal better.
4. Take the top few and work out why they worked: topic, format, hook, angle.

Only posts sent through WoopSocial are included, and metrics refresh about once a day. A missing metric means the platform doesn't report it; a 0 is a real zero. Leave out posts younger than about 48 hours, which are still collecting numbers. If there are no published posts yet, say so and generate from the niche alone.

If WoopSocial isn't connected, skip this step and generate from what the user told you.

## 3. Generate the ideas

Give up to 20 ideas, usually 10 to 15, in a table. Fewer strong ideas beat a padded list.

| # | Hook (first line or first second) | Format | Platform | Type | Why it should work |
|---|---|---|---|---|---|

- **Format:** carousel, Reel, text post, Story, photo, or video.
- **Type:** mix teach, show, prove, story, opinion and behind the scenes. No more than a third of one type, and few direct sales posts.
- **Hook:** written out, specific, in their voice. Not "5 tips for success" but "The 3 questions every bride asks us about buttercream in October".
- **Why:** one line. When an idea builds on one of their posts, name it ("builds on your 'oven at 4am' Reel, your most saved post").
- Name real specifics: their products, places, seasons, customer questions. Leave a `[placeholder]` for anything you don't know.
- Never invent results, reviews, prices or claims in a hook. "Our customers love it" only if they said so.

Avoid ideas any account in the niche could post unchanged. If an idea is generic, sharpen it or drop it.

## 4. From ideas to posts

Ask which ideas they want to use. Then:

1. Draft each picked idea as a ready post for its platform: the hook, the body, one clear ask, and hashtags where the platform uses them. For carousels, outline the slides. For video, give a short shot list. Show the drafts and let them edit.
2. **Not connected:** stop here, or offer to connect so they can save the drafts. They can create an account at https://app.woopsocial.com/signup?utm_source=chatgpt-plugin&utm_medium=skil

Preview of the first 4,000 characters. Read full instructions →

cross-post-everywhere8.52 KB

View saved version →

---
name: cross-post-everywhere
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."
---

# Cross-post everywhere

One 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.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## If WoopSocial isn't connected

If 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.

## 1. Find the accounts

Call 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).

"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.

## 2. Check what each platform needs

Get the content (text, link, image, video) and check each platform against it:

| Platform | Needs | Target fields |
|---|---|---|
| Instagram | An image or video | `postType` POST (image, carousel) or REEL (vertical video) |
| TikTok | A video, or images for a photo post | Settings from social_accounts_get_platform_inputs (below) |
| YouTube | A video and a title | `title`, `privacy` (public, private, unlisted), optional `tags`, `madeForKids` |
| Pinterest | An image or video, a board, ideally a link | `pinterestBoardId`, `title`, `link` |
| Facebook | Text only is fine | `postType` TEXT_ONLY, IMAGE, VIDEO or REEL; optional `link` |
| LinkedIn (profile or page) | Text only is fine | optional `link` |
| X, Threads, Bluesky | Text only is fine | none |

If 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.

- **Pinterest:** call social_accounts_get_platform_inputs for the account and let the user pick a board by name.
- **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.
- **YouTube:** ask for or write the title, and ask the privacy and whether it's made for kids (`madeForKids`).
- **Media aspect ratios:** a hori

Preview of the first 4,000 characters. Read full instructions →

fix-failed-posts8.09 KB

View saved version →

---
name: fix-failed-posts
description: "Find and fix social media posts that failed to publish in WoopSocial. Use when the user says \"my post didn't go out\", \"Instagram post failed\", \"why did this fail\", \"TikTok upload error\", or wants failed posts re-sent. Lists failed deliveries, explains the platform error in plain words where it's clear, helps fix the cause (reconnect an account, shorten text, swap in a re-exported file), and re-sends with automatic retries switched on."
---

# Fix failed posts

Find what didn't go out, explain why in plain words, fix the cause, and re-send. Be honest about errors you can't read: show them rather than guess.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## If WoopSocial isn't connected

If 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=fix-failed-posts and connect WoopSocial in the app's plugin or connector settings, then retry. Without it there are no delivery records to check. Never pretend to re-send anything.

## 1. Find the failures

1. Call projects_list. If there are several projects, ask which brand, or check them all if the user wants.
2. Call social_accounts_list for the project so you can name accounts by platform and username (never IDs) and see which are DISCONNECTED.
3. Call social_account_posts_list with `deliveryStatus: FAILED` and the projectIds. Narrow with `platform` or `socialAccountIds` if the user named one ("my Instagram post"). Follow `nextCursor` until there are no more pages. Default to failures from the last 30 days (`deliveryCompletedAt`) and say how many older ones exist.
4. If the user means one specific post and it isn't FAILED, check its status: NOT_STARTED means it's still scheduled, SENDING means it's going out now, PUBLISHED means it's live (share externalPostUrl). Tell them which.
5. For each failure, check whether an automatic retry already handled it: list posts for that account (PUBLISHED and NOT_STARTED) and look for the same text after the failure time. Published: tell the user it went out (externalPostUrl) and skip it. Waiting: tell the user and let it run, or, with a yes, cancel it (posts_delete) before re-sending, so the post doesn't go out twice.

If calls keep failing, call health_get to check whether WoopSocial itself is reachable.

## 2. Group by cause

Read each `errorMessage` and group the failures. Show a short table:

| Cause (plain words) | Posts | Platform(s) | Fix |
|---|---|---|---|

For each post, include the account, the scheduled time in the user's time zone (`schedule.scheduledFor`, or "publish now"), when it failed (`deliveryCompletedAt`) and the first line of its text.

## 3. Explain and fix each cause

- **Account disconnected or login expired.** The platform no longer accepts WoopSocial's access, often after a password change or expired permission. Fix: create a new sign-in link with oauth_create_authorization (projectId, platform), the user opens it and approves, then confirm the account is CONNECTED with social_accounts_list.
- **Media rejected** (wrong format, size, length or aspect ratio). Fix: the user re-exports the file in a format and shape the platform accepts (for example a vertical MP4 for Reels or TikTok), then re-upload it. posts_validate checks the request, but the platform only judges the file when it publishes, so say the new version could still fail if it breaks the same rule.
- **Text too long.** Fix: shorten it. Show the shorter version and get the user's OK before using it.
- **Duplicate content.** Some platforms reject a post that matches a recent one. Fix: change the text slightly (reword the first line, add a detail). Show the change first.
- **Platform outage or temporary error.** Nothing is wrong with the po

Preview of the first 4,000 characters. Read full instructions →

instagram-carousel-maker8.86 KB

View saved version →

---
name: instagram-carousel-maker
description: "Make an Instagram carousel: a cover that stops the scroll, one idea per slide, a save-worthy last slide, the caption, a design spec and optional image prompts, plus simple rendered slides when code execution is available. Use when the user says \"make a carousel about\", \"turn this into slides\", \"Instagram carousel on 5 tips for\", \"TikTok photo carousel\", or wants a multi-image LinkedIn post. When the slide images exist, it offers to post them to Instagram, TikTok or LinkedIn through WoopSocial."
---

# Instagram carousel maker

Turn a topic, a blog post or a rough idea into a finished carousel plan: every slide written, a design spec, the caption, and optional image prompts. If code execution is available, offer to render simple slides as image files too. Then offer to post or schedule them through WoopSocial. The carousel work is complete on its own, with or without WoopSocial.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## 1. Get the brief

Ask only for what's missing:

- **Topic and angle:** what the carousel teaches, shows or argues. One carousel, one topic.
- **Audience:** who should save it, and what they already know.
- **Goal:** saves, shares, profile visits, link clicks, or a sale.
- **Brand look:** fonts, colors, logo, past posts or a screenshot. If none, propose a simple look and say it's a proposal.
- **Source material:** notes, an article, data the user has. Use only facts the user gives or that are common knowledge. Never invent stats, results, quotes or testimonials. Mark gaps as `[stat from your data]` and point them out.

## 2. Structure the slides

- **Cover (slide 1):** a specific promise or hook. Name the payoff: "7 mistakes that kill your open house turnout", not "Open house tips". Big headline, an optional short subline, nothing else.
- **One idea per slide.** If a slide needs two points, split it.
- **6 to 10 slides is typical.** The Instagram app allows up to 20, but posting through an API may be limited to 10, so plan 10 or fewer unless posts_validate accepts more. Cut weak slides rather than padding.
- **Short text, big type:** about 15 to 30 words per slide. If it doesn't fit at a readable size on a phone, it's too long.
- **Momentum:** each slide should make the next swipe feel worth it (numbered steps, a "but" turn, a reveal near the end).
- **Last slide:** a reason to save or share ("Save this for your next launch") plus one ask. One ask only: save, share, comment a word, or visit the link in bio.

## 3. Deliver the slide plan

For every slide, give:

| Slide | Headline | Body text | Visual direction |
|---|---|---|---|
| 1 | The hook | Optional subline | Layout, image or illustration, emphasis |

Then a **design spec**:

- Size 1080 x 1350 px, portrait 4:5, for Instagram. The same size works for a TikTok photo post and a LinkedIn image post, though each platform may crop differently.
- One headline font and one body font, used the same way on every slide. Two or three brand colors, fixed roles (background, text, accent).
- Consistent margins (about 80 px), the same position for the headline and a slide number or progress marker on every slide.
- Keep key text away from the edges. For TikTok, keep it out of the bottom 20 percent, where the caption and buttons sit.
- High contrast text. Check that the smallest text is readable on a phone.

**Optional image-generation prompts,** one per slide that needs a visual. Write them so the style matches across slides (same palette, lighting, camera or illustration style, aspect 4:5). Say that generated images of real products, places or people need a check before posting.

## 4. Write the caption

- **Hook first line,** about 125 characters before "more". Specific, and not a copy of the cover.
- Two to four short lines of context: what's inside and who it's for.
- The same single ask as the las

Preview of the first 4,000 characters. Read full instructions →

instagram-posts7.6 KB

View saved version →

---
name: instagram-posts
description: "Write and schedule Instagram posts, carousels, Reels and Stories through WoopSocial. Use when the user says \"post this to Instagram\", \"write a caption and schedule it\", \"schedule this Reel for Friday\", \"post a Story\", \"post this carousel\", or wants a Trial Reel shown to non-followers first. Writes or tightens the caption and hashtags if needed, uploads the media, sets post type and cover, validates, shows the post for approval when it wrote or changed anything, then publishes or schedules. For designing carousel slides from scratch, use instagram-carousel-maker."
---

# Instagram posts

Take what the user has (a photo, slides, a video, a rough caption) and turn it into a scheduled or published Instagram post through WoopSocial. Writing the caption is part of the job. Designing slides from scratch is not: point to instagram-carousel-maker for that.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## If WoopSocial isn't connected

If 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=instagram-posts and connect WoopSocial in the app's plugin or connector settings, then retry. You can still write the caption now, so offer that. Never pretend to post.

## 1. Work out the post

Get these, asking only for what's missing:

| What | Options |
|---|---|
| Type | Feed post (one image or video), carousel (2 or more images/videos in one post), Reel (vertical video), Story |
| Media | Local file paths, files already in WoopSocial, or files the user will attach |
| Caption | User's text, or write one |
| When | Now, a date and time, or save as draft |
| Account | Which Instagram account, if more than one |

Map the type to WoopSocial: feed post and carousel are `postType: POST` (a carousel is one content item with several media). A Reel is `REEL`. A Story is `STORY`. Stories don't show captions, so don't write one, and tell the user any text must be on the image itself.

## 2. Write or tighten the caption

Skip this if the user gave final text and said to post it as is.

- **First line is the hook.** Only about the first 125 characters show before "more". Make it specific: a result, a question, a surprising detail. No "Hey guys!".
- **Then the value or story,** in short paragraphs.
- **One clear ask** that fits the goal: save it, share it, comment a word, tap the link in bio. Never "like and follow for more".
- **Hashtags:** 3 to 5 specific ones that real people search for (niche plus topic plus location if local), at the end. Instagram treats hashtags as topic signals now, so piling them on doesn't help.
- **Keywords in the caption** help Instagram search. Name the topic in plain words.
- Match the user's voice. If they shared past posts, copy their tone, emoji habits and length.
- Never invent prices, results, reviews or claims. Ask, or leave `[price]`-style placeholders and point them out.

Show the caption so the user can edit it now. The summary in step 6 covers the final yes.

## 3. Reel and Trial Reel settings

- **Cover:** if the user has a cover image, upload it and set it as `cover`. Otherwise Instagram picks a frame. Mention that a cover with clear text helps the profile grid.
- **Trial Reel:** if the user wants to test a Reel with non-followers first, set `trialParams.graduationStrategy`:
  - `MANUAL`: the user decides in Instagram whether to share it with followers.
  - `SS_PERFORMANCE`: Instagram shares it with followers automatically if it performs well.
  Explain the choice in one line each and let them pick. Some accounts can't use Trial Reels. If validation rejects it, say so and offer a normal Reel.

## 4. Find the account

Call projects_list (ask by name if there are several), then social_acco

Preview of the first 4,000 characters. Read full instructions →

linkedin-posts8.42 KB

View saved version →

---
name: linkedin-posts
description: "Write and schedule LinkedIn posts for a personal profile or a company page through WoopSocial. Use when the user says \"write a LinkedIn post about this\", \"turn this into a LinkedIn post and schedule it\", \"post this to our company page Tuesday 8am\", \"queue my LinkedIn posts for the week\". Writes for LinkedIn (a hook that earns \"see more\", short lines, a real question, no engagement bait), attaches a link, image or video, picks profile or page, validates, shows the post for approval when it wrote or changed anything, then publishes or schedules."
---

# LinkedIn posts

Turn an idea, a draft, an article or a rough note into a LinkedIn post that reads well, then schedule or publish it through WoopSocial. Writing is half the job here, so take it seriously.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## If WoopSocial isn't connected

If 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=linkedin-posts and connect WoopSocial in the app's plugin or connector settings, then retry. You can still write the post now, so offer that. Never pretend to post.

## 1. Profile or company page?

LinkedIn has two separate targets in WoopSocial, each its own connection:

- **Personal profile** (`LINKEDIN`): the user's own name and face. First person, opinions, lessons, stories.
- **Company page** (`LINKEDIN_PAGES`): the business. News, launches, hiring, customer stories, useful how-tos.

If the user didn't say which, ask. If they want both, write two versions, because a profile post and a page post should not read the same. Post them as one post with a contentOverride per target, or as two posts. Either way show both and get a yes.

## 2. Work out the post

Ask only for what's missing:

| What | Options |
|---|---|
| Topic or source | The idea, a draft, a link, notes, a transcript |
| Goal | Start a conversation, share a lesson, announce something, drive clicks |
| Link | A URL to share, or none |
| Media | One image or a video (local file or already in WoopSocial), or text only |
| When | Now, a date and time, or save as draft |

Don't promise PDF or document carousels. WoopSocial posts text, images and video to LinkedIn. If the user wants a document post, say it isn't supported here and offer an image or a text version instead.

## 3. Write it for LinkedIn

Skip this if the user gave final text and said to post it as is.

- **The first two lines must earn "see more".** Only about the first two or three lines show in the feed. Lead with the tension, the result, the surprising fact or the strong opinion. No warm-up, no "I'm excited to announce".
- **Short lines with white space.** One to two sentences per paragraph, a blank line between them. Easy to read on a phone.
- **One idea per post.** If there are three ideas, that's three posts. Offer to queue the others.
- **Be concrete.** Real numbers, names, steps and examples the user gave you. Never invent results, clients, quotes or figures. Ask, or leave a `[number]` placeholder and point it out.
- **End with a genuine question or a clear takeaway.** A question someone could actually answer from experience ("How do you handle X?"), or one line that sums up the lesson.
- **No engagement bait.** No "comment YES", "agree?", "like if", tag-a-friend asks, or fake cliffhangers.
- **No broetry.** Don't break every sentence onto its own line for drama. Normal paragraphs, kept short.
- **Hashtags:** 0 to 3, specific, at the end. None is fine.
- **Length:** LinkedIn allows up to 3,000 characters. Most good posts use far less. Count before validating.
- **Voice:** match the user's past posts if they shared some. Profile posts sound like a person. Page posts sound like the company,

Preview of the first 4,000 characters. Read full instructions →

manage-post-queue7.54 KB

View saved version →

---
name: manage-post-queue
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\"."
---

# Manage the post queue

Show 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.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## If WoopSocial isn't connected

If 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.

## 1. Load the queue

1. Call projects_list (ask by name if there are several), then social_accounts_list so you can show platform and username. Never show IDs.
2. Call social_account_posts_list with projectIds and deliveryStatus NOT_STARTED,SENDING, limit 100. Keep calling with nextCursor until it's gone.
3. 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".
4. Group items by postId. One post can go to several platforms; each platform copy is its own item.

Ask 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.

## 2. Show it

By day, in the user's time zone, sorted by time:

```
Tue 4 Nov
  08:00  Instagram (@shop), LinkedIn page  "First line of the text..."  [2 images]
  17:30  TikTok (@shop)                    "First line..."              [video]
```

Then point out, briefly:

- **Gaps:** days in the shown period with nothing on an account that has posts on other days.
- **Clusters:** several posts on the same account within a few hours, or the same text on the same day.
- **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.
- 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).

Items in SENDING are going out right now and can't be stopped or changed. Say so if the user asks about one.

## 3. Cancel

1. Identify the post with the user (day, time, platform, preview). Ask: all platforms, or just one?
2. Show what will be removed and ask for a yes.
3. 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.
   One platform: social_account_posts_delete for that platform's copy only.
4. Reload the list and confirm it's gone.

## 4. Move to a new time

There's no edit, so a move is recreate then delete. Say this in one line first.

1. 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).
2. Get the new time and convert to UTC. If the time is in the past, ask for another.
3. Call posts_get on the post to copy 

Preview of the first 4,000 characters. Read full instructions →

publish-posts2.59 KB

View saved version →

---
name: publish-posts
description: Publish or schedule social media posts through WoopSocial to Facebook, Instagram, Threads, LinkedIn, Bluesky, X/Twitter, Pinterest, TikTok and YouTube. Use when the user asks to post, publish, schedule, cross-post or queue content to their social accounts, or asks whether a post went out.
---

# Publish posts with WoopSocial

The WoopSocial connector must be connected. If its tools are missing, ask the user to connect WoopSocial in the app's plugin or connector settings.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## Posting workflow

1. Use `projects_list` to identify the project.
2. Use `social_accounts_list` to resolve the requested accounts. Only accounts with `status: CONNECTED` can publish, and all accounts in one post must belong to the same project. If a requested platform isn't connected, say so plainly; never skip it silently.
3. Use `social_accounts_get_platform_inputs` when a platform needs account-specific options, such as a Pinterest board or a TikTok privacy setting.
4. Reuse media returned by `media_list` when it fits. For new media, use the `media_uploads_*` session tools: upload every returned part exactly as instructed, complete the session, and wait until the media is ready.
5. Build the post from the user's content, accounts, platform-specific fields and schedule.
6. When the user wants to review the post first, or you are unsure the content fits a platform's rules, call `posts_validate` with the same request and fix every error it reports.
7. Call `posts_create` only after the target accounts, content and schedule are unambiguous.
8. Return the post ID and the requested schedule. For delivery results, use `posts_get` or `social_account_posts_list`, and distinguish pending, scheduled, published and failed states.

## Uploading media from chat

Uploads go to presigned URLs on `r2.cloudflarestorage.com`. If uploading a part is blocked, tell the user to add `*.r2.cloudflarestorage.com` to the app's network allowlist (in its code execution or sandbox settings) and try again.

## Action boundaries

Treat an explicit request to publish or schedule as authorization for that action. Ask before creating the post only when its target accounts, content, schedule, or publish-versus-draft intent is ambiguous.

Require explicit user intent before calling a delete tool for posts, account posts, projects, social accounts, media or webhooks.

Never claim that a post was published merely because creation succeeded. Report the delivery state WoopSocial returns.
real-estate-instagram-posts8.43 KB

View saved version →

---
name: real-estate-instagram-posts
description: "Instagram and Facebook posts for real estate agents: new listings, just sold, open houses, market updates, neighborhood guides and client stories, with captions and photo direction. Use when an agent or broker says \"write posts for my new listing\", \"real estate Instagram post ideas\", \"a week of real estate posts\", \"open house post\". Plans a week and writes every post, then, once the agent approves, schedules them through WoopSocial. Never invents prices, sales or reviews."
---

# Real estate Instagram posts

Write a week of posts for an agent or broker: every caption, photo direction, and the right mix of listings and local value. The posts are finished work on their own. Then offer to schedule them through WoopSocial. Instagram and Facebook by default, LinkedIn if the agent wants it.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## 1. Get the facts

Ask only for what's missing:

- **Active listings:** address, price, beds, baths, size, key features, open house dates and times, listing link. Use these exactly as the agent gives them.
- **Recent results:** just sold or under contract, with the details the agent is willing to share.
- **Market area:** city and neighborhoods they serve.
- **Market numbers:** only real figures the agent provides, with the source and period (for example "MLS, last month"). No numbers, no market update post.
- **Compliance details:** brokerage name, license number, and any wording their state or broker requires.
- **Media:** listing photos, walkthrough videos, headshots. File paths or attachments.
- **Voice:** past posts, if any. **Time zone.**

## 2. Post types

| Type | What it does |
|---|---|
| New listing / just listed | Best photo first, top 3 features, price and address as given, link in bio |
| Open house | Date, time, address, what to see, a reason to come |
| Under contract | Short news post, credit the team, invite similar sellers to reach out |
| Just sold | Celebrate the result. Sold price only if the agent gives it and may share it |
| Price change | The new price as given, framed plainly, no pressure tactics |
| Market update | Agent's real numbers, what they mean for buyers and sellers, one takeaway |
| Neighborhood or local guide | Coffee spots, parks, events, schools nearby as places (not rankings), a carousel works well |
| Buyer or seller tips | One practical tip, often a carousel |
| Client story | Only with the client's permission, using their real words |
| Behind the scenes | Showing prep, staging, a day in the life, the team |

## 3. Plan the week

Default to 5 posts, for example: Monday tip or guide, Tuesday new listing, Thursday open house or behind the scenes, Friday local guide, Saturday just sold or client story. Adjust to the agent's real listings and dates: an open house post goes out 2 to 3 days before, plus a Story or reminder the morning of. Keep listings to about half the week; local and helpful posts are what people follow for.

Pick posting times in the agent's time zone as a starting point to test (for example weekday mornings or early evenings), and say they're not proven best times.

## 4. Write each post

For every post give:

- **Format:** single photo, carousel, or Reel.
- **Photo direction:** which photos, in what order, and which is the cover. Lead with the strongest exterior or the hero room. For a listing carousel: cover, living space, kitchen, primary bedroom, bathroom, outdoor space, then a closing slide with the details. Reels for walkthrough videos: the best shot in the first second.
- **Caption:** a hook first line about the home or area, short lines with the key details, one ask (book a showing, DM for details, link in bio, save the guide), and 3 to 5 local hashtags (city, neighborhood, property type).
- **Facebook version** if it should differ (a bit more detail, a link is fine).

Preview of the first 4,000 characters. Read full instructions →

restaurant-instagram-posts7.79 KB

View saved version →

---
name: restaurant-instagram-posts
description: "Instagram, Facebook and TikTok posts for restaurants, cafes and bars: menu items, daily specials, events, behind the scenes, staff and real guest reviews (with permission), with captions and photo ideas. Use when the owner says \"write our Instagram posts\", \"restaurant post ideas\", \"post today's special\", \"a week of posts for my cafe\". Plans a week around opening hours and specials, writes every post, then, once the owner approves, schedules them through WoopSocial."
---

# Restaurant Instagram posts

Write a week of posts for a restaurant, cafe or bar: captions that make people hungry, photo direction, and timing around when guests decide where to eat. The posts are finished work on their own. Then offer to schedule them through WoopSocial. Instagram and Facebook by default, TikTok for short videos.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## 1. Get the facts

Ask only for what's missing:

- **Opening days and hours,** plus any holiday or changed hours coming up.
- **This week's specials and menu highlights,** with names, prices and descriptions exactly as the owner gives them.
- **Events:** live music, quiz night, tastings, with date, time and whether booking is needed.
- **How guests act:** book (link or phone), order (delivery or takeaway link), or walk in.
- **Location:** city and neighborhood, for local hashtags. **Time zone.**
- **Media:** photos or short videos of dishes, the room, the team. File paths or attachments.
- **Voice:** past posts, if any.

## 2. Post types

| Type | What it does |
|---|---|
| Dish or menu highlight | One dish, close up, what makes it good |
| Daily or weekly special | What, when, until it runs out, price as given |
| Event | Live music, quiz night: date, time, what to expect, how to book |
| Behind the scenes | Kitchen prep, sourcing, suppliers, staff, the person behind a dish |
| Seasonal menu | What's new and why now |
| Review or UGC reshare | Only real ones, used with the guest's permission and credited to them |
| Opening and holiday hours | Plain and easy to read, often a Story too |

## 3. Plan the week

Build around the days they're open. A typical 5-post week: a dish highlight early in the week, the weekly special, a behind the scenes post, the weekend event or Friday special, and a weekend brunch or Sunday post. Skip days they're closed.

Timing: post before the decision moment, for example late morning before lunch and late afternoon before dinner, in the restaurant's time zone. Say these are starting points to test, not proven best times. Specials go out the morning of, events 2 to 5 days before plus a reminder on the day.

## 4. Write each post

For every post give:

- **Format:** single photo, carousel, or Reel / short video.
- **Photo direction:** what to shoot and how. Natural light near a window, the dish at its best angle (overhead for flat plates, 45 degrees for burgers and drinks), steam, a pour, a hand reaching in. For video: the most appetizing moment in the first second, vertical, no long intros. Name the cover photo.
- **Caption:** short and sensory. A hook first line (taste, texture, the moment), one or two lines of detail, a clear ask (book a table, order now, come by tonight) with how to do it, and 3 to 5 local hashtags (city, neighborhood, cuisine).
- **Facebook version** if it should differ, with the booking or order link.
- **TikTok version** for videos: a short caption and a few hashtags.

Show the week and let the owner edit. List every placeholder like `[price]` or `[booking link]` that still needs filling.

## 5. Accuracy and rules

- **Never invent** prices, ingredients, allergens, awards, reviews or quotes. Use what the owner gives, or a placeholder.
- **Allergens and dietary claims** ("gluten free", "vegan", "nut free") must be confirmed by the owner before posting. Ask each time. Neve

Preview of the first 4,000 characters. Read full instructions →

social-media-audit6.66 KB

View saved version →

---
name: social-media-audit
description: "Audit a social media account: what's working, what isn't, profile and bio, posting rhythm, formats, hooks and engagement, with a ranked fix list. Use when the user says \"audit my Instagram\", \"why isn't my account growing\", \"review my LinkedIn profile and posts\", \"social media audit\". Works from what the user shares or pastes. When WoopSocial is connected, it also reads real results for posts sent through it. Ends with a two-week plan, and with WoopSocial connected, the assistant can draft the plan's posts and schedule them after approval."
---

# Social media audit

Give an honest read of an account: a score per area with the reason, the five fixes that matter most, and a two-week plan. Judge only what you can actually see. This works without WoopSocial; WoopSocial adds real results and lets the plan go straight into the schedule.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## 1. Gather the inputs

Ask for whatever the user can share, and the goal behind the account (reach, traffic, sales, community, hiring):

- Profile URL(s) and platform(s).
- Screenshots of the profile, grid, recent posts or insights.
- Pasted captions or post texts, with dates if they have them.
- Numbers from the platform's own insights (reach, saves, profile visits, follower change).

If a web fetch or browsing tool is available, read the public profile pages. Many platforms show little or nothing to logged-out visitors (Instagram, TikTok and LinkedIn often block or trim it). Say what you could and couldn't see, and ask for screenshots for the rest. Never describe posts, numbers or bios you didn't see.

**If WoopSocial is connected** (tools like projects_list are available): call projects_list (ask by name if several), social_accounts_list, then social_account_posts_list with deliveryStatus PUBLISHED, limit 100, following nextCursor. Read the latest analytics snapshot per metric for each post. This covers only posts sent through WoopSocial. Missing metrics mean the platform doesn't report them, 0 is a real value, an empty metric array means nothing has been collected yet, posts under about 48 hours old are still moving, and data refreshes about daily. On a 429, wait briefly and retry. Never show IDs.

**If it isn't connected,** carry on with what the user shared. Mention once, at the end, that connecting WoopSocial adds real per-post results for future posts and lets the plan be scheduled: account at https://app.woopsocial.com/signup?utm_source=chatgpt-plugin&utm_medium=skill&utm_campaign=woop-plugin-v1&utm_content=social-media-audit, then connect WoopSocial in the app's plugin or connector settings and sign in.

## 2. Check each area

Score each area 1 to 5 with one or two lines of reason that point at a specific thing you saw. If you couldn't see enough, write "not enough to score" instead of guessing.

| Area | What to look at |
|---|---|
| Profile | Name and handle searchable for the topic, bio says who it's for and what they get, one clear link, profile photo, highlights or pinned posts doing a job |
| Content mix | Balance of teaching, showing, proof, story, opinion, behind the scenes, offers. Too much selling, or no reason to follow |
| Formats | Use of the platform's main formats (carousels, Reels or video, text posts, Stories) versus one format only |
| Hooks | First line of the caption or first second of the video: specific and clear, or slow and generic |
| Rhythm | How often and how regularly they post, long gaps, bursts |
| Engagement signals | Visible comments, shares, saves, replies from the account, and which posts drew them. Use only numbers you can see or were given |
| Fit with the goal | Does the content lead where the goal needs (link, DMs, follows), with a clear ask |

With WoopSocial data, add an area **Results**: which posts led on saves and shares per view (reach), click

Preview of the first 4,000 characters. Read full instructions →

social-media-report6.19 KB

View saved version →

---
name: social-media-report
description: "Social media performance report for posts published through WoopSocial: views, impressions, likes, comments, shares, saves and clicks (where each platform reports them) per post, per platform and by publish week, plus what to post more of next. Use when the user asks \"how did my posts do\", \"weekly social report\", \"which post performed best\", \"what's working on my accounts\". Only covers posts sent through WoopSocial, not older native posts; numbers refresh about daily."
---

# Social media report

Turn the results of posts sent through WoopSocial into a short, honest report and three things to do next. Compare the user with their own past posts, never with made-up industry numbers.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## If WoopSocial isn't connected

If no WoopSocial tools (projects_list, social_account_posts_list and so on) are available, the connector isn't set up. Say so in one line. 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=social-media-report, connect WoopSocial in the app's plugin or connector settings, and retry. If they paste numbers from their native insights instead, you can read those, but say they came from the user. Never invent results.

## 1. Scope the report

Ask only for what's missing:

| What | Default |
|---|---|
| Period | Last 7 days or last 28 days. Ask which. |
| Brand | The only project, or ask by name if there are several |
| Platforms or accounts | All connected ones |
| Goal | Reach, traffic, or community. Ask once; it decides the ranking. |

Ask the time zone once if it isn't clear, and show dates in it.

## 2. Collect the posts

1. Call projects_list, then social_accounts_list for the project, so you can show accounts by platform and username. Never show IDs.
2. Call social_account_posts_list with projectIds, deliveryStatus PUBLISHED, and platform or socialAccountIds if the user narrowed it. Use limit 100 and keep calling with nextCursor until it's gone.
3. Keep the posts whose deliveryCompletedAt (the publish time) falls inside the period, and the period before it for comparison.
4. On a 429, wait briefly and retry, one call at a time.

**If nothing comes back,** explain why: the report only covers posts published through WoopSocial, and none went out in this period (or ever, for this project). Posts made directly in the Instagram or TikTok app don't show here. Offer to schedule the first ones, for example with instagram-posts, linkedin-posts, tiktok-posts or cross-post-everywhere, so the next report has data.

## 3. Read the numbers per post

Each post's `analytics` holds lifetime metrics: views, impressions, uniqueImpressions, likes, reactions, comments, shares, saves, clicks, and engagementRate for LinkedIn Pages only.

- Each metric is an array of snapshots. Use the latest one (most recent `date`) and note its date. Different metrics can have different dates.
- A metric that's missing means the platform doesn't report it for that post type. An empty `analytics` object means the platform doesn't report any. Show "not reported", never 0.
- An empty array means the platform reports that metric but nothing has been collected yet. Show "not collected yet", never 0.
- A 0 is a real recorded value. Show it as 0.
- engagementRate is a ratio: 0.03 means 3 percent. It exists only for LinkedIn Pages, so don't compute a fake one for other platforms.
- Mark posts published less than about 48 hours ago as "still moving". Their numbers will grow.
- Reading doesn't refresh anything. Data is collected about daily, so the newest snapshots may be a day old.

## 4. Build the report

Keep it short and scannable.

1. **Headline:** posts published in the period, per platform, and the latest snapshot date.
2. **Per platform:** totals for each

Preview of the first 4,000 characters. Read full instructions →

tiktok-posts8.68 KB

View saved version →

---
name: tiktok-posts
description: "Write captions for and schedule TikTok videos and photo carousels through WoopSocial. Use when the user has the video or images ready and says \"post this to TikTok\", \"schedule my TikTok for 7pm\", \"upload this slideshow to TikTok\", \"write a TikTok caption and post it\", or asks how to set privacy, duets, stitches, branded-content or AI-generated labels. Writes the caption and hashtags, uploads, applies the TikTok settings, validates, shows the post for approval when it wrote or changed anything, then publishes or schedules."
---

# TikTok posts

Take a finished video or a set of images and get it onto TikTok through WoopSocial, with a caption that works and the right TikTok settings. TikTok has more required settings than other platforms, and some must come from the user, so don't skip them.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## If WoopSocial isn't connected

If 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=tiktok-posts and connect WoopSocial in the app's plugin or connector settings, then retry. You can still write the caption now, so offer that. Never pretend to post.

## 1. Find the account and its options

Call projects_list (ask by name if there are several), then social_accounts_list. Use the CONNECTED TikTok account and show it by username, never by ID. If it's missing or DISCONNECTED, offer to connect it now with oauth_create_authorization (projectId, platform TIKTOK), wait for "done", then confirm with social_accounts_list.

Then call **social_accounts_get_platform_inputs** for that account before anything else. It returns what this account may use right now:

- `privacyLevelOptions`: the only privacy values you may offer
- `commentAvailable`, `duetAvailable`, `stitchAvailable`: whether each can be turned on
- `maxVideoPostDurationSec`: the longest video this account may post

## 2. Work out the post

| What | Options |
|---|---|
| Type | Video (`postType: VIDEO`) or photo carousel (`postType: PHOTO`, several images swiped like a slideshow) |
| Media | Local files, or files already in WoopSocial |
| Caption | User's text, or write one |
| When | Now, a date and time, or save as draft |

For a video, check its length (for example with ffprobe if a shell is available). If it's longer than `maxVideoPostDurationSec`, say so and ask the user to trim it. Don't upload a video that will be rejected.

## 3. Posting mode

Explain both in one line each and let the user pick:

- **Post directly** (`postMode: DIRECT_POST`): it goes live on TikTok at the scheduled time.
- **Send to TikTok inbox** (`postMode: MEDIA_UPLOAD`): the video lands in the user's TikTok inbox and they finish and publish it in the app. Best when they want to add a trending sound, text or effects in TikTok itself.

## 4. TikTok settings (ask, never assume)

- **Privacy** (direct post only): offer only the values in `privacyLevelOptions`, in plain words: everyone (`PUBLIC_TO_EVERYONE`), followers (`FOLLOWER_OF_CREATOR`), friends who follow back (`MUTUAL_FOLLOW_FRIENDS`), only me (`SELF_ONLY`). The user must choose. Never pick one silently, not even "everyone".
- **Comments, duets, stitches:** ask which to allow. Only offer one if its `...Available` flag is true, otherwise send false. Duets and stitches only apply to videos. For photo posts send them as false.
- **Music on photo posts:** for `PHOTO`, ask whether TikTok should add music automatically (`autoAddMusic`). For video send false.
- **AI-generated content** (video): set `isAiGeneratedContent: true` when the video was made or heavily changed with AI. If unsure, ask. TikTok expects this label. For photo posts send false.
- **Promotion labels**, explained plainly:
  -

Preview of the first 4,000 characters. Read full instructions →

weekly-social-autopilot7.63 KB

View saved version →

---
name: weekly-social-autopilot
description: "Weekly social media autopilot through WoopSocial: each week read how last week's posts did, draft next week's posts in the user's voice, get approval, then schedule them. Use when the user says \"run my social media on autopilot\", \"be my social media manager\", \"do my posts every week\", \"set up a weekly content routine\". Nothing is scheduled without approval; as a recurring task, unattended runs only save drafts for review."
---

# Weekly social autopilot

Run the same loop every week: look at last week, plan next week, draft in the user's voice, get approval, schedule. The assistant does the planning and writing; the user supplies media and approves. Nothing is scheduled without a person's yes.

The user's explicit instructions take priority over these guidelines, except that you never post, delete or change posts beyond what the user asked for.

## If WoopSocial isn't connected

If 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=weekly-social-autopilot, connect WoopSocial in the app's plugin or connector settings, sign in and retry. You can still do onboarding and draft a first week now, so offer that. Never pretend to schedule.

## First run: onboarding

Resolve accounts first: projects_list (ask by name if several), then social_accounts_list. Use CONNECTED accounts only. Offer to connect a missing or DISCONNECTED one with oauth_create_authorization. Never show IDs.

Then ask, in one short message, only what you don't know:

1. **Accounts:** which of the connected accounts to post to (show them by platform and username).
2. **Goal:** reach, traffic (clicks to a site or shop), or community (comments, DMs).
3. **Posts per week** per platform, and preferred days and times. Be realistic about what they can supply media for.
4. **Mix:** the kinds of posts they want (for example tips, behind the scenes, product, customer stories, opinions) and anything off limits.
5. **Voice samples:** 3 to 5 past posts or texts they like.
6. Time zone.

Then write a short **voice and brand notes** block (10 to 20 lines): who they are, audience, tone, words and emoji they use or avoid, recurring hashtags, links, claims never to make, the weekly plan. Show it and get it approved. If you can write files, save it as `social-autopilot-notes.md` and read it at the start of every run. If you can't, ask the user to keep it and paste it next time.

Get TikTok privacy options and Pinterest boards with social_accounts_get_platform_inputs, ask once, save the choices in the notes, and show them in the approval list.

## The weekly loop

### 1. Review last week (brief)

Call social_account_posts_list with projectIds and deliveryStatus PUBLISHED, limit 100, following nextCursor. Keep posts whose deliveryCompletedAt is in the last 7 days. For each, read the latest analytics snapshot per metric. Name the top one or two posts for the goal (saves and shares for reach, clicks for traffic, comments for community; per view where views exist) and one that trailed. Three to five lines, no more.

Honesty: only posts sent through WoopSocial count. Missing metrics mean the platform doesn't report them, 0 is real, posts under about 48 hours old are still moving, and data refreshes about daily. If there's no data yet, say so and plan from the notes alone. For a full breakdown, social-media-report is an option.

Also list NOT_STARTED posts: SCHEDULE_FOR_LATER ones fill slots already, so don't double-book them. DRAFT ones may come from an unattended run; start the plan from them instead of drafting again.

### 2. Plan next week

Make a table: day, time (user's zone), platform, post type, topic, which part of the mix, and the media it needs. Follow the posts-per-week and mix from the notes. Lean towards what worked last week, and keep one slot fo

Preview of the first 4,000 characters. Read full instructions →

Release notes

Adds 16 skills: platform posting for Instagram, TikTok and LinkedIn, cross-posting, bulk scheduling, queue management, failed-post fixes, performance reports, carousels, content calendars, content ideas, account audits, a weekly routine, and posts for real estate agents and restaurants.

Declared in the saved package. Remote tools may change independently.

Package details

Publisher declarations from the archived package. These are separate from our research and the live service's terms.

Package license
MIT
Package author
WoopSocial
Keywords
See keywords
Getting started skill
./skills/connect-social-accounts/SKILL.md
Commerce declaration
Does not support commerceThis does not establish whether access is free or paid.
Review scenarios
5 positive · 3 negativeScenario counts, not test results.

Declared capabilities

  • Connect social accounts
  • Write posts
  • Upload photos and videos
  • Schedule and publish posts
  • Manage scheduled posts
  • Re-send failed posts
  • Read post performance

Package observed Nov 10, 2026.

Technical details
First seen
Nov 10, 2026 · 12:00 UTC
Last seen
Nov 10, 2026 · 18:00 UTC
Collection status
Collected

plugin_asdk_app_6ae20d28f30c81919992b6b198b05d2b

Download plugin data (JSON)

Plugin details: freshly prepared. Prepared . Refreshed when plugin data changes or after 6 hours. Your account and Follow status are live.