← Plugin catalog
Business & Operations

PostEverywhere

PostEverywhere Ltd v1.2.0

Schedule social media posts

Create a free account to save this plugin.

Competitor profile

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

Declared capabilities

  • Schedule and publish social media posts
  • Plan a content calendar and save drafts
  • Cross-post videos to TikTok, Reels and Shorts

Cost & access

PostEverywhere does not sell anything in ChatGPT. Users sign in to an existing PostEverywhere account and use the features of their current plan.

Declared limitations

  • A request outside the app's purpose (travel booking). No PostEverywhere tool should be called.
  • The user wants text written in the chat only, and says not to post or save. No PostEverywhere tool should be called.
  • A platform PostEverywhere does not support (Snapchat). No post may be created or scheduled; the app may check the connected accounts and then explains that Snapchat is not available.

Onboarding example

Write a LinkedIn and X post about our product launch and schedule it for tomorrow at 9am

View package source →

Description

From the marketplace listing

Schedule and publish social media posts to Instagram, TikTok, YouTube, LinkedIn, Facebook, X, Threads, Pinterest, Bluesky, Telegram, Discord and WordPress, right from ChatGPT. Ask in plain words: write a post, plan a week of content, schedule it for when your audience is most active, or find out why a post failed. PostEverywhere uses the social accounts connected in your PostEverywhere workspace, so one request can reach every network you post to. Plan and schedule - Turn an idea into posts adapted to each platform's limits and format: Reels, Stories, Shorts, carousels, X threads, X Articles, Pinterest pins and YouTube titles - Publish now, schedule for any date and time zone, or add posts to your weekly posting slots - Build a content calendar: create up to 50 posts in one request and group them into campaigns - Turn a blog post, transcript, newsletter or product update into a week of posts, saved as drafts for you to review Video and media - Cross-post one video to TikTok, Instagram Reels, YouTube Shorts, LinkedIn and Facebook, with a caption for each - Import images and videos from a link, or use media already in your PostEverywhere library - Write and publish WordPress blog posts with a title, tags, categories and a featured image Check and improve - See your queue and your scheduled, published and failed posts - Find posts that failed, see why, fix the cause and retry them - Check that each social account is still connected, and get a link to reconnect one - See how your posts performed and what to post more of Publishing a post cannot be undone once a social network accepts it. To check a post first, ask for a draft: drafts are saved in PostEverywhere and are not published until you schedule them. Made for founders, creators, marketers, small businesses and agencies who post to many platforms. You need a PostEverywhere account with the social accounts you want to post to connected. You can get a link to connect more accounts at any time.

Language: English · Automatically detected from descriptions.

Changes

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

First seen Oct 29, 2026. Last seen Nov 4, 2026.

Keywords

Files & skills

File archives

Plugin package23 files · 47.6 KBBrowse files →
Skill instructions
agency-clients2.72 KB

View saved version →

---
name: agency-clients
description: Work safely across several clients or brands in PostEverywhere. Use when the user manages social media for more than one client, brand or business, mentions a client by name, asks to switch clients, or when the connected accounts belong to different companies.
---

# Agency clients

One wrong account means a client's post goes out on another client's page. Check which client and which accounts before every action.

## How the connection works

The PostEverywhere app works inside one PostEverywhere workspace: the one that was active when the user connected it in ChatGPT. It sees only that workspace's accounts, posts, media and campaigns. It can't switch workspaces. To work on a client in another workspace, the user switches workspace in the PostEverywhere app, then disconnects and connects the PostEverywhere app again in ChatGPT. Say this plainly when the client they name isn't in the current workspace.

## Steps

1. **Check where you are.** At the start, call `get_me` and tell the user the workspace name. Call `list_accounts` and list the accounts by platform and username.
2. **Match accounts to clients.** If one workspace holds several clients' accounts, ask the user which accounts belong to which client. Write the map back to them, for example "Acme: Instagram @acme, LinkedIn Acme Ltd". Use it for the rest of the conversation.
3. **Name the client before every action.** Before you create, change, schedule, publish, retry or delete anything, say the client name and the exact accounts, and ask the user to confirm.
4. **Never mix clients.** One post goes to one client's accounts only. If the user asks for a post for two clients, make two separate posts, each written for its client.
5. **Label the work.** Name the client next to every post id in your summaries. For scheduled posts, a campaign per client helps: find or make one with `list_campaigns` and `create_campaign` (for example "Acme: October"), and pass its `campaign_id` on each post in `bulk_create_posts`. Drafts are not linked to campaigns. Don't add the client name to the post text unless the user wants it there.
6. **Filter by client.** When listing or reporting, use `list_posts_advanced` with `account_id` (one call per account), or `campaign_id`, so one client's report never shows another client's posts.
7. **Keep media apart.** Check media belongs to the right client before you attach it. `list_media` shows the whole workspace library.

## Be careful

- If an account name is unclear (two similar pages), ask. Never guess.
- Reports for a client show only that client's accounts. Don't mention other clients' results.
- Follow each client's own voice guide when the user has one (see `brand-voice`). Don't reuse one client's voice for another.
approval-workflow2.49 KB

View saved version →

---
name: approval-workflow
description: Draft social media posts for someone else to review before they go live in PostEverywhere. Use when the user works in a team or agency, needs a client, manager or colleague to approve posts, says "send these for review", "what's waiting for approval", "make the changes they asked for", or "they approved it, schedule it".
---

# Approval workflow

Posts wait as drafts until the right person says yes. Approval is the user telling you, in this conversation, that a post is approved. Never treat silence, or your own judgement, as approval.

## Create posts for review

1. **Find the accounts.** Call `list_accounts` and confirm which accounts the posts are for.
2. **Write the posts** (see `schedule-social-posts` for the platform rules).
3. **Save them as drafts.** Call `create_post` with `draft: true`, or `bulk_create_posts` with `draft: true` on each. You may set `scheduled_for` on a draft: it only suggests a time and publishes nothing.
4. **Share them for review.** Drafts appear in the PostEverywhere app, where a reviewer with access to the workspace can read them. Also give the user a short list to send: post id, accounts, suggested time and the full text.

## See what is waiting

1. Call `list_posts` with `status: "draft"` (or `list_posts_advanced` with `status: "draft"` and `search` for a word in the post).
2. Show each draft: id, accounts, suggested time and the first line. Use `get_post` for the full text and media.

## Apply requested changes

1. The user tells you what the reviewer asked for. Change only that.
2. Call `update_post` with the `post_id` and the new `content`, `platform_content`, `media_ids`, `account_ids` or `scheduled_for`.
3. Show the changed post again and ask if it now has approval.

## Schedule after approval

1. When the user says a post is approved, repeat the post id, accounts and time, so both of you are sure it is the right one.
2. Call `schedule_post` with the `post_id` and `scheduled_for` (with `timezone`), or `publish_now: true` if they want it out now.
3. Report the post id, accounts and time. For "publish now", call `get_post_results` after a short wait.

## If a post is rejected

Ask the user whether to rewrite it (`update_post`) or remove it. Delete a draft with `delete_post` only when the user asks.

## Be careful

- Only schedule the posts the user said are approved. If they approve "the first three", confirm which three by id.
- `schedule_post` only works on drafts. To change a post that is already scheduled, use `update_post`.
brand-voice2.05 KB

View saved version →

---
name: brand-voice
description: Learn how the user writes on social media and write a short voice guide from their own posts in PostEverywhere. Use when the user says posts don't sound like them, asks to "write like me" or "match my brand voice", or wants a style guide for their social accounts.
---

# Brand voice

Read the user's own published posts, describe how they write, and use that description for every post you write after.

## Steps

1. **Collect their posts.** Call `list_posts_advanced` with `status: "published"`, `sort: "published_at"`, `order: "desc"` and `limit: 50`. If the user writes differently per platform, add `platform` (for example `"linkedin"`) and do one pass per platform.
2. **Check there is enough.** Fewer than about 10 posts is a thin sample. Say so, and ask the user for a few more examples they like, or a link to their website or newsletter to read.
3. **Describe the voice.** Write a guide of no more than 10 short lines. Cover:
   - Tone (for example: warm, direct, dry humour).
   - Sentence length and structure.
   - Point of view ("I", "we", or no person).
   - How posts open and how they end (question, call to action, link).
   - Emoji and hashtag use: how many, and where.
   - Words and phrases they use often, and words they never use.
   - Formatting: line breaks, lists, capital letters.
   - Differences between platforms, if any.
4. **Show examples.** Quote two or three of their posts that show the voice best.
5. **Confirm.** Ask the user to correct anything that is wrong. Update the guide until they agree.
6. **Use it.** Apply the guide to every post you write in this conversation, including with the other PostEverywhere skills.
7. **Keep it.** PostEverywhere has no place to store the guide. Tell the user to save it where ChatGPT can read it next time, for example in a project's instructions or a saved note, and to paste it in when they start a new conversation.

## Be careful

- Describe what the posts actually do. Don't invent a voice the posts don't show.
- The guide is about style. Don't copy their old posts as new ones.
connect-social-accounts1.97 KB

View saved version →

---
name: connect-social-accounts
description: Connect a social media account or channel to PostEverywhere. Use when the user wants to add Instagram, TikTok, YouTube, LinkedIn, Facebook, X, Threads, Pinterest, Bluesky, Telegram, Discord or WordPress, or when a post can't go out because no account is connected.
---

# Connect social accounts

Accounts connect in one of two ways, depending on the platform.

## Sign-in platforms

Instagram, Facebook, LinkedIn, X, YouTube, TikTok, Threads and Pinterest connect through the platform's own sign-in.

1. Call `create_connect_link` with the `platform`.
2. Give the user the link. It works for about 10 minutes, in any browser.
3. Tell them what the platform will ask for:
   - **Instagram:** a Business or Creator account. A personal account can't be connected for posting.
   - **Facebook:** a Facebook Page they manage. Tick every Page and permission on Facebook's screen.
   - **YouTube:** a YouTube channel on the Google account, and every YouTube permission ticked on Google's screen.
   - **TikTok:** allow every permission on TikTok's screen.
4. After they finish, call `list_accounts` to confirm the account appears.

## Platforms that use a key or password

Bluesky, Telegram, Discord and WordPress connect with an app password, bot token or webhook, not a sign-in screen. Never ask the user to paste a password, token or webhook address into the chat. Tell them to connect these in the PostEverywhere app: app.posteverywhere.ai, then Accounts, then the platform. After they finish, call `list_accounts` to confirm the account appears.

## When an account stops working

Call `create_reconnect_link` with the `account_id` and give the user the link. For key and password platforms, tell the user to reconnect them in the PostEverywhere app.

## Plan limits

Each plan includes a number of accounts. If connecting fails because the limit is reached, tell the user plainly. They can remove an account they no longer use, or change their plan at app.posteverywhere.ai.
cross-post-video3.17 KB

View saved version →

---
name: cross-post-video
description: Post one video to several platforms with PostEverywhere, with the right title and caption for each. Use when the user wants to share a video, Reel, Short or TikTok across TikTok, Instagram Reels, YouTube Shorts, LinkedIn and Facebook Reels, or asks to "post this video everywhere".
---

# Cross-post a video

Upload the video once, write a caption for each platform, and pick the right format on each one.

## Steps

1. **Get the video.** The user gives a public link to an MP4 file. Call `upload_media_from_url` with the `url`. Videos import in the background: call `get_media` with the returned `media_id` until `media_status` is `"ready"`. If it becomes `"failed"`, tell the user the `error_message` in plain words. Never attach a video that isn't ready. For a video already in their library, find it with `list_media` and `type: "video"`.
2. **Check the rules.** Call `get_platform_rules` and compare the video with each platform's limits for length, size and aspect ratio. `get_media` shows the video's details. If the video breaks a platform's rule, leave that platform out and tell the user why.
3. **Pick the accounts.** Call `list_accounts`. Use the accounts the user named, or every healthy account on a video platform. Skip any account that can't post and say why.
4. **Write a caption for each platform.** Put a general caption in `content`, and set each platform's own in `platform_content`:
   - **TikTok:** `{"tiktok": {"content": "..."}}`. Short, hook first, hashtags at the end.
   - **Instagram Reels:** `{"instagram": {"content": "...", "contentType": "Reels"}}`. Hashtags at the end.
   - **YouTube Shorts:** `{"youtube": {"content": "<description>", "contentType": "Short", "settings": {"title": "<title>"}}}`. The title is up to 100 characters, and YouTube doesn't allow `<` or `>`. Put what the video is about in the first two lines of the description. For a normal YouTube video, use `"contentType": "Video"`.
   - **LinkedIn:** `{"linkedin": {"content": "..."}}`. A first line that earns the click, short paragraphs.
   - **Facebook Reels:** `{"facebook": {"content": "...", "contentType": "Reels"}}`.
   Follow the user's voice guide if there is one (see `brand-voice`). Don't invent facts about the video; ask the user what it shows if you don't know.
5. **Show the drafts.** Show, per platform: format, title (YouTube), caption and time. Ask the user to confirm.
6. **Create it.** Call `create_post` with `content`, `account_ids`, `media_ids: [<media_id>]`, `platform_content`, and `draft: true`, unless the user already said to publish now or gave a time for this exact post.
7. **Publish or schedule.** After the user confirms, call `schedule_post` with the `post_id` and `scheduled_for` (with `timezone`) or `publish_now: true`.
8. **Check the result.** Videos take a few minutes to process on each platform. Call `get_post_results` after a short wait and report which platforms published, with links, and any failure in plain words (see `fix-failed-posts`).

## Good defaults

- Vertical video (9:16) suits TikTok, Reels and Shorts. For a wide video, check `get_platform_rules` before you pick a short-form format.
- One video per post. To post two videos, make two posts.
fix-failed-posts1.75 KB

View saved version →

---
name: fix-failed-posts
description: Find and fix social media posts that failed to publish in PostEverywhere. Use when the user says a post didn't go out, a platform failed, an account stopped working, or asks what went wrong with a post.
---

# Fix failed posts

Find what failed, explain why in plain words, fix the cause, and retry only when a retry can work.

## Steps

1. **Find the failures.** Call `list_posts_advanced` with `status: "failed"` (and `"partially_failed"`), newest first. For one post the user named, call `get_post_results` with its id.
2. **Read the reason.** Each failed destination carries an error. Sort it into one of these:
   - **The account needs reconnecting** (expired or revoked login, missing permission). Call `get_account_health` for that account to confirm, then `create_reconnect_link` and give the user the link. They open it and sign in again.
   - **The post broke a platform rule** (too long, wrong media, missing media). Fix it with `update_post`, then retry.
   - **A temporary problem** at the platform (rate limit, timeout, the platform was down). Retry.
   - **Something the user must change on the platform itself** (for example, an Instagram account that isn't a Business or Creator account). Tell them exactly what to change.
3. **Retry.** For one post, call `retry_failed_post`. For many, call `retry_failed_posts` with the post ids, or filter by `account_id` or `platform`. Don't retry a failure that needs the user to act first; it will fail the same way.
4. **Confirm.** Call `get_post_results` again after a short wait and tell the user what published.

## Be careful

- Never retry the same post in a loop. One retry after a fix is enough.
- Retrying a post that already published on some platforms only retries the failed ones.
launch-announcement2.78 KB

View saved version →

---
name: launch-announcement
description: Plan and schedule a multi-day announcement campaign with PostEverywhere. Use when the user is launching a product or feature, promoting an event, running a sale or offer, opening a waitlist or sign-ups, or wants teaser, launch-day, reminder and last-call posts.
---

# Launch announcement

Build a short campaign around one date: tease it, launch it, remind people, and close it. The user sees every post before anything is scheduled.

## Steps

1. **Get the facts.** Ask for anything missing: what is launching, the launch date and time zone, the end date (for an offer or event), the link, the price or offer terms, and which accounts. Use only facts the user gives. Never invent prices, dates, discounts or features.
2. **Check the calendar.** Call `list_accounts` to get the account ids. Call `list_posts_advanced` with `status: "scheduled"` and the campaign dates, so the new posts don't clash with posts already booked.
3. **Pick a cadence.** Use the template in `references/launch-cadence.md`. Shorten it for a small launch. Tell the user the plan in one line per day before you write the posts.
4. **Write the posts.** Write each post for its platform (see `schedule-social-posts` for the rules). Each stage says something new: the teaser builds interest without giving everything away, launch day says what it is and where to get it, the reminder adds a detail or a proof point the user gave you, and the last call states the deadline plainly. Follow the user's voice guide if there is one (see `brand-voice`).
5. **Media.** Use images or videos the user gives you (`upload_media_from_url` or `list_media`). Instagram, TikTok, Pinterest and YouTube posts need media; leave those platforms out if there is none, and say so.
6. **Show the plan.** Present a table: date and time, stage, accounts, and the full text. Ask the user to confirm or change it.
7. **Group it.** Call `list_campaigns` and reuse a matching campaign, or create one with `create_campaign` (a name like "Spring sale 2026").
8. **Create the posts.** After the user confirms, pick one of two ways and tell the user which:
   - **Schedule now:** `bulk_create_posts` with each post's `account_ids`, `scheduled_for`, `timezone` and `campaign_id`. The posts are booked and grouped in the campaign.
   - **Save as drafts** for a last check in the app: `bulk_create_posts` with `draft: true` on each. Drafts are not linked to the campaign. Schedule each one later with `schedule_post`.
9. **Report back.** List every post with its id, date and accounts. Mention anything that failed validation and why.

## Changes after scheduling

- To move or edit a scheduled post, use `update_post`. To cancel one, use `delete_post`.
- If the launch date moves, move every post in the campaign. Find them with `list_posts_advanced` and `campaign_id`.

Referenced files: 1 — file references are metadata, not package contents.

plan-content-calendar1.88 KB

View saved version →

---
name: plan-content-calendar
description: Plan a week or month of social media posts with PostEverywhere. Use when the user asks for a content calendar, a posting plan, a batch of posts, "fill my queue", or a campaign across several days or platforms.
---

# Plan a content calendar

Turn a goal (a launch, a campaign, "keep my accounts active") into a set of drafts the user can review before anything is scheduled.

## Steps

1. **Understand the plan.** Ask for anything missing: the topic or goal, the date range, which accounts, and how often to post. Default to one post a day per platform when the user doesn't say.
2. **See what's already there.** Call `list_posts_advanced` with `status: "scheduled"` and the date range, so the new plan doesn't clash with posts already booked. Call `get_queue` to see the user's regular posting slots.
3. **Group it.** If the posts belong to one campaign, call `list_campaigns`, and create one with `create_campaign` if the user wants it grouped.
4. **Draft the posts.** Write each post for its platform (see the `schedule-social-posts` skill for the rules). Vary the angle across days; don't post the same text daily.
5. **Show the plan.** Present it as a table: date and time, accounts, and the first line of each post. Ask the user to confirm or change it.
6. **Create the drafts.** After the user confirms, send them with `bulk_create_posts` (up to 50 per call). Create them as drafts (`draft: true` on each) unless the user said to schedule them straight away. Use each post's own `scheduled_for`, or `use_queue: true` to let the queue pick the times.
7. **Report back.** List what was created and what, if anything, failed validation and why.

## Good defaults

- Spread posts through the day instead of stacking them at the same minute.
- Keep one idea per post.
- When the user has a website or product link, include it where the platform allows links. Don't make up URLs.
recycle-top-posts2.65 KB

View saved version →

---
name: recycle-top-posts
description: Find the user's best past social media posts in PostEverywhere and schedule fresh versions of them. Use when the user wants to reuse, recycle, reshare or "bring back" posts that did well, fill gaps in their schedule with proven content, or asks which old posts are worth posting again.
---

# Recycle top posts

Find what worked before, write new versions of it, and space them out. A new version says the same idea in new words; it is never a copy.

## Steps

1. **Pick the period.** Default to the last 90 days. Call `get_analytics_summary` (`period: "custom"` with `from` and `to`) to see which platforms did best.
2. **Find the posts.** Call `list_posts_advanced` with `status: "published"`, `published_after` and `published_before`, `sort: "published_at"`, and `limit: 100`. Page with `offset` if there are more. Each destination carries its own numbers (views, likes, comments, shares) where the platform reports them.
3. **Rank them.** Rank by engagement on each platform, not across platforms: a good LinkedIn post and a good X post have different numbers. Use `get_post_results` for a closer look at the top few. Leave out posts that were about a date or offer that has passed.
4. **Show the shortlist.** List the top five to ten posts: platform, date, first line, and the numbers. Say "not available" when a platform didn't report a number. Ask the user which to recycle.
5. **Write new versions.** For each chosen post, write a fresh version: a new first line, a new angle or example, the same core idea and the same facts. Change the format when it helps (a tip list becomes a question, a quote becomes a short story). Follow the user's voice guide if there is one (see `brand-voice`).
6. **Space them out.** Leave at least a few weeks between a post and its new version on the same account. Call `list_posts_advanced` with `status: "scheduled"` to avoid clashes, or offer to use the posting queue (`get_queue`, then `use_queue: true`).
7. **Show the plan.** Present a table: date and time, accounts, the old first line and the new text. Ask the user to confirm.
8. **Create them.** After the user confirms, create them as drafts with `bulk_create_posts` (`draft: true` on each), or schedule them with each post's `scheduled_for` if the user said to. To reuse the original media, get its ids with `get_post`, check each one is still in the library with `get_media`, and pass them in `media_ids`.
9. **Report back.** List each new post id, its accounts and its time.

## Be honest

- A small number of posts can't show what works. Say so when the sample is small.
- Some platforms don't report every number. Don't rank a post low because its numbers are missing.
repurpose-content2.46 KB

View saved version →

---
name: repurpose-content
description: Turn one long piece of content into a set of social media posts with PostEverywhere. Use when the user shares a blog post, article link, video transcript, podcast notes, newsletter or other long text and wants posts made from it, or says "repurpose this" or "turn this into posts".
---

# Repurpose content

Turn one source into several posts, each written for its platform. Everything is a draft until the user says go.

## Steps

1. **Get the source.** Use the text the user gave. If they gave a link, read it with your own web access if you have it. If you can't open it, ask the user to paste the text. Never write posts from a title or a guess.
2. **Pull out the ideas.** List the main points, useful facts, quotes and examples in the source. Each one can become a post. Keep the source's facts exactly; don't add numbers, claims or links it doesn't contain.
3. **Pick the accounts.** Call `list_accounts`. Use the accounts the user named, or ask. Skip any account that can't post and tell the user why.
4. **Plan the set.** Suggest how many posts and where, for example one LinkedIn post, three X posts and one Threads post, each from a different idea. Ask if they want them spread over several days.
5. **Write the posts.** Write each post for its platform (see the `schedule-social-posts` skill for the rules, and call `get_platform_rules` for any platform you are unsure about). Use a different angle per post: a key point, a quote, a how-to, a question. Add a link to the source when the user has one and the platform allows links. If the user has a voice guide (see `brand-voice`), follow it.
6. **Media.** Instagram, TikTok, Pinterest and YouTube need an image or video. Use media the user gives you: `upload_media_from_url` for a public link, or `list_media` for files already in their library. If there is no media, leave those platforms out and say so.
7. **Show the drafts.** Present them as a table: platform, date and time (if any), and the full text. Ask the user to confirm or change them.
8. **Create them.** After the user confirms, create them as drafts with `create_post` and `draft: true`, or several at once with `bulk_create_posts` (each with `draft: true`). Only schedule or publish when the user asks, with `schedule_post` on each draft.
9. **Report back.** List each post id, its accounts and its time.

## Be careful

- Credit the source when it isn't the user's own work.
- Don't copy long passages word for word from someone else's article.
review-post-performance1.47 KB

View saved version →

---
name: review-post-performance
description: Review how social media posts performed with PostEverywhere analytics. Use when the user asks how their posts did, what performed best, which platform works, or wants a weekly or monthly social media report.
---

# Review post performance

Give the user a short, honest read of how their posts performed, and one or two concrete next steps.

## Steps

1. **Pick the period.** Default to the last 30 days. Call `get_analytics_summary` with `period` (`week`, `month`, or `all`), or with `from` and `to` dates.
2. **Find the posts.** Call `list_posts_advanced` with `status: "published"` and `published_after` for the same period, sorted by `published_at`.
3. **Look closer where it matters.** For the best and worst few posts, call `get_post_results` to see each platform's outcome and link.
4. **Write the report.** Keep it short:
   - Totals for the period: posts published and engagement, from the summary.
   - The best posts and what they have in common (format, topic, platform, time of day).
   - Anything that failed to publish, and whether it needs fixing (see `fix-failed-posts`).
   - One or two suggestions the user can act on this week.

## Be accurate

- Some platforms don't share every number (for example, some don't report views for all account types). Say "not available" rather than zero.
- Don't compare the user's numbers with other people's or invent benchmarks.
- A small number of posts can't show a trend. Say so when the sample is small.
schedule-social-posts3.47 KB

View saved version →

---
name: schedule-social-posts
description: Write, schedule or publish a social media post with PostEverywhere. Use when the user wants to post, cross-post, schedule, or queue content to Instagram, TikTok, YouTube, LinkedIn, Facebook, X, Threads, Pinterest, Bluesky, Telegram, Discord or WordPress, or asks to "post this everywhere".
---

# Schedule social posts

Use PostEverywhere to turn what the user wants to say into posts on their connected accounts. Posting is public and hard to undo, so confirm before anything goes live.

## Steps

1. **Find the accounts.** Call `list_accounts`. Note each account's `id`, platform and health. If the user has no accounts, or none for a platform they named, use the `connect-social-accounts` skill first.
2. **Pick the targets.** Use the accounts the user named. If they said "everywhere", use every healthy account. Skip an account whose health says it needs reconnecting, and tell the user which one and why.
3. **Check the rules.** For any platform you are unsure about, call `get_platform_rules` once and read the character limit, media rules and supported features. Common limits are in `references/platform-limits.md`.
4. **Write the post.** Write one main caption in `content`. When a platform needs something different, set it in `platform_content` keyed by platform, for example a shorter X version: `{"x": {"content": "..."}}`. Keep the user's voice and facts. Don't invent claims, prices, links or statistics.
5. **Add media.** For an image or video at a public URL, call `upload_media_from_url` and use the returned media id in `media_ids`. Instagram and TikTok need media. YouTube needs a video.
6. **Confirm first.** Show the user, per account, the text, the media and the time. Unless they already said "publish now" or "schedule it" for this exact post, create it as a draft: `create_post` with `draft: true`. Then ask for a go-ahead.
7. **Publish or schedule.** After the user confirms, call `schedule_post` with the draft's `post_id` and either `scheduled_for` (ISO 8601, with `timezone`, for example `"Europe/London"`) or `publish_now: true`. To let the user's posting queue choose the time, create the post with `use_queue: true` instead of a time. Call `get_queue` first if they want to know which slot they'll get.
8. **Report back.** Give the post id, the accounts and the time. For "publish now", call `get_post_results` after a short wait and report which platforms published and any failure in plain words.

## Timing

- Ask for the time zone if the user gives a time without one and their account time zone is unknown. `get_me` returns account details.
- A time in the past publishes immediately. Check with the user before sending one.

## When something fails

- If `create_post` returns a validation error (too long, missing media, unsupported format), fix the post and try again. Tell the user what you changed.
- For a failed destination after publishing, use the `fix-failed-posts` skill.

## Special formats

- **X Articles** (long-form, X Premium accounts only): `platform_content` `{"x": {"content": "<body>", "settings": {"post_type": "article", "title": "<max 100 characters>"}}}` with X accounts only.
- **WordPress blog posts**: `platform_content` `{"wordpress": {"content": "<body>", "settings": {"title": "...", "status": "publish|draft", "tags": ["a"]}}}` with WordPress accounts only. The first image is the featured image.
- **Pinterest**: set the board with `{"pinterest": {"settings": {"boardId": "...", "link": "https://..."}}}`. `get_account` lists the boards.

Referenced files: 1 — file references are metadata, not package contents.

weekly-report2.11 KB

View saved version →

---
name: weekly-report
description: Write a short weekly or monthly social media report from PostEverywhere data, ready to paste into an email. Use when the user asks for a weekly report, a monthly recap, a client report, a summary to send their boss or team, or "how did this week go" in a form they can share.
---

# Weekly report

A short report the user can paste into an email without editing. Numbers come only from PostEverywhere.

## Steps

1. **Pick the period.** Default to the last 7 days for a weekly report and the last calendar month for a monthly one. Ask who will read it: the user, their team, or a client.
2. **Get the totals.** Call `get_analytics_summary` with `period: "week"` or `"month"`, or `period: "custom"` with `from` and `to`. It gives posts published and failed, engagement totals, a per-platform breakdown and follower change per account.
3. **Get the posts.** Call `list_posts_advanced` with `status: "published"`, `published_after` and `published_before`, `sort: "published_at"`. Pick the top three posts by engagement. Use `get_post_results` for their links.
4. **Check for problems.** Call `list_posts_advanced` with `status: "failed,partially_failed"`, and `scheduled_after` and `scheduled_before` for the same period. Note what failed and whether it is fixed (see `fix-failed-posts`).
5. **See what's next.** Call `list_posts_advanced` with `status: "scheduled"` and `scheduled_after` set to now, to list what goes out next period.
6. **Write the report.** Use `references/email-template.md`. Keep it to one screen.
7. **Offer changes.** Ask if they want it shorter, in a different tone, or with a section removed.

## Be accurate

- Say "not available" when a platform doesn't report a number. Never show a missing number as zero.
- Follower change needs two readings. If `change_in_period` is null, say the change isn't available yet.
- Don't compare with other companies or invent benchmarks. Compare only with the user's own earlier period, and only if you fetched it.
- For a client report, leave out internal notes, failures that were fixed, and anything the user says to keep private. Ask before including failures.

Referenced files: 1 — file references are metadata, not package contents.

write-blog-post3.27 KB

View saved version →

---
name: write-blog-post
description: Write and publish a WordPress blog post with PostEverywhere. Use when the user wants a blog post, an article for their website, to publish to WordPress, to save a WordPress draft, or to turn notes, a transcript or a social post into a blog post.
---

# Write a blog post

Write a full blog post, show it, and send it to the user's WordPress site as a draft or a live post.

## Steps

1. **Find the site.** Call `list_accounts` and find the WordPress accounts. `get_account` names the site. If there is none, use the `connect-social-accounts` skill first.
2. **Agree the brief.** Ask for anything missing: topic, reader, key points, length, and any links or facts to include. Use only facts the user gives you or that are in their source. Follow the user's voice guide if there is one (see `brand-voice`).
3. **Write the post.** Write the body in simple formatting: `## ` headings, `- ` lists, `> ` quotes, `**bold**`, `*italic*`, `[links](https://...)`, `---` dividers, code blocks and tables. Raw HTML is kept as it is. The body can be up to 200,000 characters.
4. **Set the details.** Write:
   - **title** (required, up to 200 characters)
   - **excerpt** (optional, up to 1,000 characters)
   - **slug** (optional, the web address ending, for example `spring-menu-2026`)
   - **tags** and **categories** (optional), by name. Tags that don't exist on the site yet are created. Categories also take the site's category numbers.
   - **status:** `draft` (saved in WordPress, not public), `publish`, `pending` (waiting for review in WordPress) or `private`. Default to `draft` unless the user says to publish.
5. **Images and video (optional).** Up to 20 images and 1 video. Upload each with `upload_media_from_url` (for a video, wait with `get_media` until it is `"ready"`). The first image is the featured image; set `"featuredImage": "none"` to turn that off. Place other images in the body with a line like `![caption](image:2)`, where the number is the image's place among the attached images, counting from 1. Images you don't place go at the end. The video goes at the top.
6. **Show the draft.** Show the title, excerpt, tags, categories, status and the full body, and say where each image goes. Ask the user to confirm.
7. **Create it.** Call `create_post` with the WordPress `account_ids`, `content` (a short version for any other platforms in the same post, or the body), `media_ids`, `draft: true`, and `platform_content`:
   `{"wordpress": {"content": "<body>", "settings": {"title": "...", "status": "draft", "excerpt": "...", "tags": ["..."], "categories": ["..."], "slug": "...", "featuredImage": "first"}}}`
8. **Send it.** After the user confirms, call `schedule_post` with the `post_id` and `publish_now: true`, or `scheduled_for` (with `timezone`) for a set time. The WordPress `status` decides whether it is public on the site.
9. **Report back.** Call `get_post_results` and give the user the link. For a WordPress draft, tell them to review and publish it in WordPress.

## Changes

- Before it is sent, change it with `update_post` (the same `platform_content.wordpress` shape).
- After it is sent, edit it in WordPress. Published posts can't be changed through PostEverywhere.

## Share it

After it is live, offer to write social posts that link to it (see `repurpose-content`).
write-x-thread-or-article3.23 KB

View saved version →

---
name: write-x-thread-or-article
description: Write an X (Twitter) thread or a long-form X Article and post it with PostEverywhere. Use when the user asks for a thread, a tweetstorm, a long post on X, an X Article, or wants to turn a blog post or idea into a thread or article on X.
---

# X threads and X Articles

A **thread** is a chain of short posts, each a reply to the one before. An **X Article** is one long-form piece with a title, headings and images, for X Premium accounts only.

## Pick the format

- The idea fits in a few short points, or the account isn't on X Premium: a **thread**.
- The piece is long, needs headings or images in the body, and the account is on X Premium: an **article**.
- Ask the user when it isn't clear. Call `list_accounts` to get the X account ids.

## Write a thread

1. **Plan it.** 3 to 10 parts. The first part is the hook: it must work on its own, because most people see only that one.
2. **Write each part** in 280 characters or fewer (X Premium accounts can go longer; `get_platform_rules` has the limit). One idea per part. Number the parts (1/6) only if the user likes that.
3. **Show the thread.** Show every part with its character count. Ask the user to confirm.
4. **Post it.** PostEverywhere's post tools send one post, not a linked thread. Tell the user, and offer these choices:
   - **As a real thread:** create the first part as a draft with `create_post` (`draft: true`, the X `account_ids`). Give the user the other parts to add as a thread in the PostEverywhere app before they schedule it.
   - **As an X Article** if the account is on X Premium (see below).
   - **As one post:** join the parts into a single post if it fits the account's limit.
   Don't schedule the parts as separate posts unless the user asks. They would not be linked as replies.

## Write an X Article

1. **Check the limits.** X Premium accounts only. Title up to 100 characters. Body up to 25,000 characters. Each X account can publish 2 articles in 24 hours.
2. **Write the body** in simple formatting: `# ` headings, `- ` lists, `> ` quotes, `**bold**`, `*italic*`, `[links](https://...)`, `---` dividers, code blocks and tables. A line that is only an X post link embeds that post.
3. **Images (optional).** Up to 5 images, no video. Upload each with `upload_media_from_url`. The first image is the cover (2000 x 800 looks best). Place others in the body with a line like `![caption](image:2)`, or they go at the end.
4. **Show the draft.** Show the title, the body and which images go where. Ask the user to confirm.
5. **Create it.** Call `create_post` with only X `account_ids`, `content` set to the body, `media_ids` if any, `draft: true`, and `platform_content`:
   `{"x": {"content": "<body>", "settings": {"post_type": "article", "title": "<title>"}}}`
6. **Publish or schedule.** After the user confirms, call `schedule_post` with the `post_id` and `scheduled_for` (with `timezone`) or `publish_now: true`. Then call `get_post_results` and give the user the link.

## Be careful

- An article goes to X accounts only. If the user also wants other platforms, make a separate post for them.
- X Articles need X Premium. Ask the user if the account has it before you choose an article.
- Don't invent facts, numbers or quotes to fill a thread or an article.

Release notes

PostEverywhere for ChatGPT: write, schedule and publish social media posts to 12 platforms, plan a content calendar, cross-post video, and find and retry failed posts. 30 tools, each with explicit readOnlyHint, destructiveHint, idempotentHint and openWorldHint values. Every tool that can publish, overwrite or delete says so in its description.

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 author
PostEverywhere Ltd
Keywords
See keywords
Declared availability
AE, AR, AT, AU, BE, BG, BH, BR, CA, CH, CL, CO, CY, CZ, DE, DK, EE, EG, ES, FI, FR, GB, GR, HR, HU, ID, IE, IL, IS, IT, JP, KR, KW, LI, LT, LU, LV, MC, MT, MX, MY, NL, NO, NZ, OM, PE, PH, PL, PT, QA, RO, SA, SE, SG, SI, SK, TH, TR, TW, UA, US, VN, ZADeclared regions; live availability may differ.
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

  • Schedule and publish social media posts
  • Plan a content calendar and save drafts
  • Cross-post videos to TikTok, Reels and Shorts
  • Manage the posting queue
  • Find and retry failed posts
  • Check connected social accounts
  • See post performance

Package observed Nov 3, 2026.

Technical details
First seen
Oct 29, 2026 · 18:00 UTC
Last seen
Nov 4, 2026 · 06:00 UTC
Collection status
Collected

plugin_asdk_app_6acfc6735c388191a829d4dca3ecb626

Download plugin data (JSON)