Claude Code + PostOnce

Publish with Claude Code

Turn a product update into social posts from your terminal. Connect Claude Code to the accounts and crossposting workflows you manage in PostOnce.

Connect Claude Code

Requires a PostOnce account, API access, and your own API key.

See setup steps

Set up your connection

Connect Claude Code to PostOnce

Use your own PostOnce API key.

Alternative: install the PostOnce plugin

The plugin includes the MCP connection and PostOnce workflow skill. Choose this instead of the manual connection and separate skill below. If you already connected PostOnce, keep only one connection to avoid duplicate tools. Preserve any custom skill instructions.

For the Claude Code CLI 2.1.224 or newer. This is a PostOnce-hosted package. Installation does not authenticate your account or grant access.

  1. Prepare your API key using step 1 below, with accounts:read for the first check. Supply POSTONCE_API_KEY through the CLI’s private process environment or secret manager before starting it. Keep the value out of chat, project files and shell history. A desktop launcher may not inherit your terminal environment.
  2. Inspect registered marketplaces before adding one:
    Terminal · check existing marketplaces
    claude plugin marketplace list

    Continue only if postonce is absent or already points to https://postonce.to/agent-packages/claude-code/marketplace.json. Adding a same-name marketplace replaces its registration. Preserve an unrelated registration; extract this ZIP and use the single-session command below instead.

  3. Install from the PostOnce marketplace:
    Terminal · install PostOnce plugin
    claude plugin marketplace add https://postonce.to/agent-packages/claude-code/marketplace.json
    claude plugin install postonce@postonce
    Use the extracted ZIP for one session
    Terminal · load extracted plugin
    claude --plugin-dir /absolute/path/to/extracted-plugin
  4. Restart the CLI with its private environment. If you chose the single-session ZIP, rerun the command above with --plugin-dir and the extracted plugin’s absolute path for each new session. Confirm the PostOnce tools appear, and try this read-only request:
    Try this prompt

    Show my connected PostOnce accounts.

    An empty account list means authentication worked but no usable social accounts were found. Connect an account in PostOnce to continue.

To disconnect, remove the PostOnce plugin through your client and revoke its dedicated API key in PostOnce Preferences. Keep unrelated connections and keys. For a single-session plugin, end that session.

Recommended: manual MCP setup

  1. 1

    Prepare your PostOnce account

    You need API access on your plan and at least one connected social account. Create a dedicated key with accounts:read for your first check; add posts, media, or workflow scopes only for the actions you want.

  2. 2

    Add PostOnce to your user MCP configuration

    Merge this entry into your user-level ~/.claude.json mcpServers object. Replace the placeholder privately in that file. Do not commit credentials to a project repository.

    ~/.claude.json · merge into mcpServers
    {
      "mcpServers": {
        "postonce": {
          "type": "http",
          "url": "https://postonce.to/mcp",
          "headers": {
            "Authorization": "Bearer YOUR_POSTONCE_API_KEY"
          }
        }
      }
    }

    Follow the client-specific instructions above. Keep your API key out of agent conversations and public files.

  3. 3

    Check the connection

    Restart Claude Code, open /mcp, and confirm PostOnce is available. Then ask it to show your connected social accounts.

    Try this prompt

    Show my connected social accounts.

    Expect account names, platforms, and IDs from list_active_accounts. Choose actual accounts before asking the agent to publish.

Read the connection documentation

From connection to first result

Start with one useful action

Find your accounts

Try this prompt

Show my connected social accounts.

Use the returned names and IDs to choose your targets. If nothing appears, connect an account in the dashboard.

Publish an update

Try this prompt

Help me publish a product update. First show my connected accounts, then ask me to choose the destinations and confirm the exact text before publishing.

After creation, ask for the post ID and each destination’s delivery status. A queued post is still waiting to publish.

Set up crossposting

Try this prompt

Show my connected accounts and the available crossposting options. Help me choose a supported source and destinations, then confirm the workflow before creating it.

A created workflow applies to future matching source posts. Inspect the workflow in PostOnce before relying on it.

Know what your agent can access

Connected accounts and scoped actions

PostOnce uses your API key’s scopes and existing account permissions. Your available destinations come from your connected accounts; media and text requirements still vary by platform.

Media needs a supported upload path

The hosted server cannot read a file path on your computer or assume access to a chat attachment. For a first media post, use a supported publicly accessible media URL and have the agent validate the selected platform’s requirements before publishing.

Media post example

Help me publish an image from a public media URL. Ask me for the URL, text, and connected destination accounts; check the platform requirements and confirm the post before creating it.

Questions before connecting

Do I need a particular PostOnce plan?

You need a plan with Public API access. Your API keys tab checks your account’s actual entitlement and shows an upgrade option when required. Connecting a client does not change your plan.

What if my agent shows no social accounts?

Connect or reconnect a social account in PostOnce, then ask the agent to list active accounts again. The API key must belong to the same PostOnce account and include accounts:read.

How do I check a failed or queued post?

Ask the agent to get the post using its returned ID and inspect each target’s status and error. Review the post in the dashboard. Check the existing result before creating another post to avoid duplicates.

How do I disconnect or replace the key?

Revoke the dedicated API key in Preferences → API keys and remove the server from your client. To reconnect, create a new key with the scopes you need and replace the old key in the client’s private configuration.

Explore more ways to connect

Your next post starts here.

Connect Claude Code

Requires a PostOnce account, API access, and your own API key.