Works with all AI agents

Connect your AI agent

Choose your assistant and connect in seconds.

Add to Claude

Works on every Claude plan, including free. Full Claude guide

  1. 1

    Add to Claude

    One click from Claude’s connector directory.

  2. 2

    Sign up or sign in

    Takes seconds, then you’re sent straight back.

  3. 3

    Ask Claude

    “Plan and schedule my posts for next week.”

PostEverywhere CLI Guide

Log in, connect all top social platforms, and publish from the terminal with the PostEverywhere CLI (@posteverywhere/cli). Built for developers and AI agents.

The @posteverywhere/cli lets you (or your AI agent) log in, connect every platform, and publish entirely from the terminal, no dashboard navigation required.

npm install -g @posteverywhere/cli      # or: npx @posteverywhere/cli <command>

Source: github.com/posteverywhere/cli

Install the CLI as an agent skill

The CLI ships with a SKILL.md that teaches an agent the whole command surface. One command installs it:

npx skills add posteverywhere/cli

That auto-detects your agent (Claude Code, Cursor, Codex and 70+ others). Then just ask:

"schedule a post to all my accounts for tomorrow at 9am"

Claude Code users can instead install it as a plugin, which brings auto-updates:

claude plugin marketplace add posteverywhere/cli

Either way the agent learns to connect accounts, check per-platform limits before composing, schedule, and read back per-destination results. Every command emits JSON, so it can act on what just happened rather than guessing.

Set up the CLI in 90 seconds

posteverywhere login                 # opens your browser, saves a key to ~/.posteverywhere
posteverywhere connect instagram     # opens the OAuth flow; auto-detects the connected account
posteverywhere accounts              # list connected accounts (+ ids & health)
posteverywhere post -c "Hello 🚀" -a 123,456

How login authenticates you

A device-grant flow (RFC 8628, like the GitHub CLI):

  1. The CLI calls POST /v1/auth/device and prints a short code (e.g. GUPK-HM3G) plus a URL.
  2. It opens https://app.posteverywhere.ai/device in your browser. You confirm the code (you must be signed in).
  3. The CLI polls POST /v1/auth/device/token until you approve, then receives a scoped API key (read, write, ai) and saves it to ~/.posteverywhere/config.json (chmod 600).

The key is a normal API key: it shows up on the Developers page alongside dashboard-generated keys, and you can revoke it there anytime. The plaintext key is shown/saved exactly once and never stored on our servers in plaintext.

posteverywhere connect <platform>
posteverywhere reconnect <accountId>      # refresh an expired account's token
  • Browser platforms: instagram, facebook, threads, x, linkedin, tiktok, youtube, pinterest. The CLI calls POST /v1/auth/social-connect/start, opens the normal OAuth flow in your browser, and watches for the account to appear, then resolves automatically. No copy-paste of tokens.
  • Bluesky: prompts for your handle + an App Password (Settings → App Passwords). No browser.
  • Telegram: prompts for a bot token (@BotFather) + your channel (add the bot to it as an admin first). No browser.
  • Discord: prompts for a channel webhook URL (Server Settings → Integrations → Webhooks). No browser.
  • WordPress (self-hosted, CLI 0.5.0+): prompts for your site address, username and an Application Password (wp-admin → Users → Profile → Application Passwords). No browser. WordPress.com sites connect in the dashboard.

Publish a WordPress blog post from a file:

posteverywhere post -a <accountId> --title "What we shipped in September" --body-file post.md \
  --wp-status draft --tags release-notes,product --categories News \
  --excerpt "Faster uploads and scheduled drafts." --slug september-release

--body-file takes Markdown-style formatting or HTML (with it, -c is optional), --wp-status is publish, draft, pending or private, and --no-featured-image stops the first image becoming the featured image. See the WordPress guide.

Every CLI command and what it does

Command What it does
login / logout Device-flow login / remove saved credentials
whoami Show the authed account, plan & quota
accounts List connected accounts (+ ids & health)
platform-rules [platform] Character limits, media constraints & supported features
connect <platform> Connect a new account
reconnect <accountId> Re-authorize an account whose token expired
account:health <id> Detailed health for one account
post -c <text> -a <ids> [-s <iso>] [-m <mediaIds>] [--queue] [--timezone <tz>] Publish now (omit -s), schedule (-s = ISO-8601 UTC), or drop into the next queue slot (--queue)
posts [--status x] [--platform y] [--limit n] List posts
queue [--preview N] Show the next queue slots for your accounts
results <postId> Per-platform publish results
retry <postId> Retry failed destinations
upload <url> Import an image or MP4 video by URL → media_id (videos import async, poll until ready)
caption -t <topic> [--platform x] [--tone y] AI captions
analytics [--period week|month|all] Analytics summary
campaigns List campaigns

Driving the CLI from an AI agent

Every command accepts --json (auto-on when output is piped) and emits structured JSON, so Claude, Cursor, and other agents can parse results.

Install the bundled skill with npx skills add posteverywhere/cli and the agent learns the command surface without you explaining it. Two habits are worth encouraging in your own prompts:

  • accounts before post: account ids should never be guessed.
  • platform-rules before composing for an unfamiliar platform: the limits range from 300 characters on Bluesky to 63,206 on Facebook, and TikTok enforces a pixel ceiling server-side. One call is cheaper than a rejected publish.

For CI or fully headless agents, skip login and set the key directly:

export POSTEVERYWHERE_API_KEY=pe_live_...   # from the Developers page
posteverywhere accounts --json

Prefer MCP? Use the hosted endpoint https://mcp.posteverywhere.ai/mcp or npx -y @posteverywhere/mcp, see MCP.

Fixing common CLI problems

  • "Not logged in": run posteverywhere login, or set POSTEVERYWHERE_API_KEY.
  • connect times out: the browser window must be signed in to the same account your key belongs to. Finish the OAuth there; the CLI resolves within a few seconds.
  • An account "needs reconnect": posteverywhere reconnect <accountId>.
  • Auth precedence: POSTEVERYWHERE_API_KEY env var wins over the saved login key.

Related: the Node.js SDK · API keys and the device login flow · your first API post · how AI agents schedule posts with PostEverywhere · the no-code Zapier route · a drop-in agent system prompt