contentstudio-cliai-icon

Run your social media from the terminal

Schedule posts, manage approvals, and upload media with the ContentStudio CLI. Run commands in bash and CI pipelines, or let Claude Code, Cursor, or Codex handle them.

npm install -g contentstudio-cli

Works with your ContentStudio API key · npm or pnpm · every command speaks JSON

contentstudio auth:login --api-key cs_••••••••# saves your key locally and verifies itcontentstudio --json accounts:list --platform linkedin{ "ok": true, "data": [ … ] }contentstudio --json posts:create -c "Excited to share our Q2 roadmap" -i <linkedin_id> -t scheduled -s "2026-05-01 09:00:00"{ "ok": true, "data": { … } }

Set it up once, then let your agent drive

The CLI comes with a skill file that teaches your AI agent every ContentStudio command. Paste the setup into your agent, or run it yourself.

  1. 1

    Set up ContentStudio in Claude Code

    Install the CLI and the skill, then log in with your API key.

    Set up ContentStudio so I can manage social posts from here. 1. Install the CLI: npm install -g contentstudio-cli 2. Add the skill: npx skills add contentstudioio/contentstudio-agent 3. Ask me for my API key, then run: contentstudio auth:login --api-key <key> 4. Confirm it works: contentstudio workspaces:list

  2. 2

    Then just ask

    Once the skill is in, your agent picks the right commands on its own.

    • Schedule this changelog as a LinkedIn post for Monday at 9 AM.
    • Upload the images in ./launch and make one Instagram post each.
    • Show me what's still in draft for this week.
    • Approve the two menu posts in Bloom Bakery.

Try a command

Explore six commands you can use for everyday social media tasks. Select one to see how it works.

Schedule a post
# Scheduled post to a Facebook page with one imagecontentstudio --json posts:create -c "Our latest blog post is live!" -i <account_id> -t scheduled -s "2026-05-01 10:00:00" -m https://example.com/hero.jpg{ "ok": true, "data": { … } }

Find the command for any task

Commands are grouped by what they manage. Add --json to get structured output that your scripts and AI agents can read.

GroupCommandWhat it does
authauth:login --api-key cs_…Save and verify your key
auth:statusShow stored config
auth:whoamiCheck the key against the API
auth:logoutForget credentials
workspacesworkspaces:listAll workspaces on your account
workspaces:use <id>Set the active one
workspaces:currentShow the active one
discoveryaccounts:listConnected social accounts
campaigns:listCampaigns and folders
categories:listContent categories
labels:listLabels
team:listTeam members
postsposts:listFilter by status or date
posts:createFlags or a JSON body
posts:delete <id>Add --delete-from-social to remove it live
posts:approve <id>Approve with an optional comment
posts:reject <id>Send it back with a reason
commentscomments:list <post_id>Comments and notes on a post
comments:add … --noteInternal note, not public
comments:add … --mention <id>Tag a teammate
mediamedia:listFilter by type, sort, search
media:upload --file <path>Upload a local file
media:upload --url <url>Import from a link

Global flags: --json --workspace <id> --base-url <url> --version --help. Run contentstudio <command> --help for every option.

Copy-ready automation recipes

Use these scripts as a starting point for common social media workflows. Find the recipe you need, update the account details and content, and run it with the ContentStudio CLI.

Schedule a daily post for the next 7 days.

#!/bin/bashACCOUNT="<facebook_page_id>"CONTENT=(  "Monday motivation 💪"  "Tuesday tips: keep it simple"  "Wednesday wisdom from the team"  "Throwback Thursday"  "Friday vibes 🎉"  "Weekend prep — try this"  "Sunday reflections")for i in "${!CONTENT[@]}"; do  DATE=$(date -d "+$((i+1)) day 09:00" '+%F %T')  contentstudio --json posts:create \    -c "${CONTENT[$i]}" \    -i "$ACCOUNT" \    -t scheduled \    -s "$DATE"done

Post types and platform options

Create simple posts with command flags. For platform-specific settings, such as TikTok privacy or YouTube categories, pass a JSON file using --body post.json.

PlatformPost typesHow to set it
FacebookFeed, Reel, Story, Reel + Story--post-type reel+story
InstagramFeed, Reel, Story--post-type feed | reel | story
LinkedInFeed with imageFlags
X (Twitter)Feed with imageFlags
YouTubeVideos and Shortsyoutube_options: title, privacy, category, tags, license, made for kids
TikTokVideotiktok_options: privacy, duet, stitch, comments, disclosure flags
PinterestImage pinspinterest_options: title, destination link
Google Business ProfileEventsgmb_options: topic type, dates, title, CTA

Connect accounts from the terminal

  • OAuth platforms

    Facebook, Instagram, X, LinkedIn, YouTube, TikTok, Pinterest, Google Business Profile, Threads, and Tumblr. You get a one-time link to open in your browser.

    contentstudio --json accounts:connect facebook
  • Bluesky

    No browser needed. Connect with your handle and an app password from bsky.app → Settings → App Passwords.

    contentstudio --json accounts:add-bluesky --handle you.bsky.social --app-password xxxx-xxxx-xxxx-xxxx

    Use an app password, never your main password.

  • Facebook Groups

    Add a group by name, with an optional cover image.

    contentstudio --json accounts:add-facebook-group --name "My Community Group"

CLI, MCP server, or API?

Each option connects to your ContentStudio account. Choose the one that fits how you want to work.

CLI (terminal)MCP serverREST API
What it's forScripts, CI, and coding agentsAI assistants you talk toBuilding ContentStudio into your product
Sign-inAPI keyYour ContentStudio accountAPI key
Strong atLocal uploads, bulk jobs, dry runsAnalytics, inbox, conversationCustom apps and pipelines
Used byBash scripts, CI/CD, Claude Code, Cursor, CodexChatGPT, Claude, Cursor, Grok, any MCP clientYour own backend
FAQs

FAQs

ContentStudio

Book a 30 min call

Have questions? Schedule a quick call and we will guide you through everything.

Book a free call

What is the ContentStudio CLI?

A command-line tool that controls your ContentStudio workspace from the terminal. It schedules posts, uploads media, handles approvals, and manages comments through the same API your dashboard uses, so every change shows up there right away.
Run npm install -g contentstudio-cli (or pnpm install -g contentstudio-cli), then check it with contentstudio --version.
In your ContentStudio dashboard, go to Settings → API Keys → Generate new key. It starts with cs_. Then run contentstudio auth:login --api-key cs_....
No. auth:login saves your key locally, so you do it once. Check it anytime with contentstudio auth:status.
Install the skill with npx skills add contentstudioio/contentstudio-agent and pick your agent when prompted. After that, your agent uses the CLI without extra prompting.
Add --dry-run to any command that changes something. It prints the full request and exits without calling the API.
For platform-specific settings like TikTok privacy, YouTube categories, Pinterest links, or Google Business events, and for first comments, labels, campaigns, and approvals. Pass the file with --body /path/to/post.json.
The CLI retries automatically on 429 and 5xx errors, up to 2 times with exponential backoff, so you don't need your own retry logic.
Usually the post, account, or file belongs to a different workspace. Check which one is active with workspaces:current, or pass --workspace <id> for that command.