Claude Code for Social Media: Schedule Posts from Your Terminal

TL;DR
Learn how to schedule social media posts to Instagram, LinkedIn, X, and 8 more platforms directly from Claude Code. Six real use cases with terminal examples: scheduling, carousels, cross-posting, analytics, bulk CSV imports, and git hook automation.
Why Manage Social Media from the Terminal?
If you're a developer, your terminal is home. You write code, commit changes, deploy services, and debug production issues — all without touching a mouse. But the moment you need to post a product update to LinkedIn or schedule an Instagram carousel, you're yanked out of your flow and into a browser-based dashboard.
That context switch is expensive. Studies estimate it takes 23 minutes to regain deep focus after switching tasks. For developers who ship code and then need to announce it on social media, the traditional workflow looks like this: finish the feature, open a new tab, navigate to your scheduling tool, write the post, pick the time, upload the image, click publish, close the tab, try to remember what you were doing.
What if you could do all of that without leaving the terminal?
What you'll learn in this guide:
- How to connect Publora's MCP server to Claude Code in one command
- 6 real-world use cases with terminal conversation examples
- How to cross-post, check analytics, and bulk-schedule from your shell
- Power user tips: aliases, git hooks, and combining MCP servers
- Full platform support table for all 11 supported networks
0
Context switches needed
18
MCP tools available
11
Platforms supported
With Claude Code — Anthropic's official CLI for Claude — and Publora's MCP server, you get a terminal-native social media workflow that is scriptable, version-controllable, and fits into the same environment where you already spend your day. No dashboards. No browser tabs. Just your terminal and natural language.
One-Command Setup
Connecting Claude Code to Publora takes exactly one command. You need two things first: a Publora API key (from API in the sidebar at app.publora.com) and at least one connected social media account.
claude mcp add publora --transport http https://mcp.publora.com --header "Authorization: Bearer sk_YOUR_API_KEY"
That's it. Restart Claude Code and verify the connection:
You: /mcp
Claude: Connected MCP servers:
publora (http, https://mcp.publora.com)
18 tools available: list_posts, create_post, get_post, update_post, delete_post, list_connections, upload_media, test_connection, post_logs, linkedin_post_statistics, linkedin_followers, linkedin_profile_summary, list_workspace_users, create_workspace_user ...
Alternative: project-level config
If you prefer a config file over the CLI command, create .mcp.json in your project root. This is useful for teams — everyone who clones the repo gets the MCP connection automatically (just replace the API key). See the MCP client setup guide for all config options.
// .mcp.json — drop this in your project root
{
"mcpServers": {
"publora": {
"type": "http",
"url": "https://mcp.publora.com",
"headers": {
"Authorization": "Bearer sk_YOUR_API_KEY"
}
}
}
}
Use Case 1: Schedule a LinkedIn Post for Tomorrow Morning
You just finished a feature and want to announce it on LinkedIn. In a browser workflow, that's: open Buffer/Hootsuite, write the copy, pick the time, click schedule. In Claude Code, it's a conversation:
You: Schedule a LinkedIn post for tomorrow at 9am EST. Text: "Just shipped dark mode for our dashboard. Took 3 weeks of careful color system work, but the result is buttery smooth. Here's what I learned about building accessible dark themes in Next.js 15. Thread below."
Claude: I'll schedule that LinkedIn post. Let me first check your connected accounts.
Called list_connections
Called create_post with platforms: ["linkedin-ABC123"], scheduledTime: "2026-03-21T14:00:00Z"
Done! Your LinkedIn post is scheduled:
Post ID: pg_7f8a9b2c
Platform: LinkedIn (linkedin-ABC123)
Scheduled: March 21, 2026 at 9:00 AM EST (14:00 UTC)
Status: scheduled
Notice what happened: Claude Code automatically called list_connections to find your LinkedIn platform ID, converted "9am EST" to ISO 8601 UTC, and called create_post. You didn't need to know any API details.
Use Case 2: Create an Instagram Carousel from Local Images
You have a set of product screenshots in your ./marketing/ folder and want to turn them into an Instagram carousel. Claude Code can read your filesystem, find the images, upload them, and create the post.
You: Create an Instagram carousel from the 5 JPEG images in ./marketing/product-launch/. Schedule it for Saturday at 11am UTC. Caption: "5 features that make our new dashboard incredible. Swipe to see them all. #productlaunch #saas #ux"
Claude: I found 5 JPEG images in ./marketing/product-launch/:
1. feature-analytics.jpg (1.8 MB)
2. feature-calendar.jpg (2.1 MB)
3. feature-composer.jpg (1.5 MB)
4. feature-darkmode.jpg (1.9 MB)
5. feature-integrations.jpg (1.2 MB)
Called create_post → postGroupId: pg_carousel_01
Called upload_media x5 → all uploads successful
Instagram carousel scheduled:
Post ID: pg_carousel_01
Images: 5 slides uploaded
Platform: Instagram (instagram-789012)
Scheduled: March 22, 2026 at 11:00 AM UTC
Status: scheduled
Instagram image requirements
Instagram's API only accepts JPEG images — PNG, WebP, and other formats will be rejected. Max 8 MB per image, 2-10 items per carousel. If you have PNG files, ask Claude Code to convert them first. See the Instagram platform docs for full media limits.
Use Case 3: Cross-Post to 5 Platforms Simultaneously
One of Publora's most powerful features is cross-platform posting. A single API call can schedule the same post to multiple platforms. Claude Code makes this conversational:
You: Post this to LinkedIn, X, Threads, Mastodon, and Bluesky at 2pm UTC today: "We just open-sourced our design system. 400+ components, fully accessible, MIT licensed. Check it out: github.com/acme/design-system"
Claude: Let me check your connected accounts for those platforms.
Called list_connections → found 5 matching platforms
Called create_post with platforms: ["linkedin-ABC123", "twitter-DEF456", "threads-GHI789", "mastodon-JKL012", "bluesky-MNO345"]
Cross-platform post scheduled for 2:00 PM UTC today:
LinkedIn (linkedin-ABC123) — scheduled
X/Twitter (twitter-DEF456) — scheduled
Threads (threads-GHI789) — scheduled
Mastodon (mastodon-JKL012) — scheduled
Bluesky (bluesky-MNO345) — scheduled
Post ID: pg_cross_01
All 5 platforms will publish simultaneously.
Publora handles the platform-specific differences automatically. Your 280-character limit on X? If the content is too long, it auto-splits into a thread. Bluesky's 300-character cap? Same treatment. You write once, Publora adapts.
With Claude Code + Publora
- One natural language command
- Auto-detects all connected platforms
- Handles character limit differences
- Auto-threads on X and Threads
- Total time: ~15 seconds
Traditional dashboard workflow
- Open browser, navigate to tool
- Copy-paste content 5 times
- Manually adjust for each platform
- Click schedule on each one
- Total time: ~5 minutes
Use Case 4: Check Your Analytics — "How Did My Last LinkedIn Post Perform?"
You posted a thought leadership piece on LinkedIn last Tuesday. You want to know how it did — but you don't want to open the LinkedIn app or a dashboard. Just ask Claude Code:
You: How did my last LinkedIn post perform? Show me the full stats.
Claude: Let me pull the stats for your most recent LinkedIn post.
Called list_posts with platform: "linkedin", limit: 1, status: "published"
Called linkedin_post_statistics with queryTypes: "ALL"
Here are the stats for your post "Why we switched from REST to tRPC" (published March 18):
Impressions: 4,287
Unique reach: 3,112 members
Reactions: 89 (52 likes, 21 insightful, 11 celebrate, 5 other)
Comments: 23
Reshares: 7
That's solid engagement — a 2.8% engagement rate, which is above the LinkedIn average of ~2%.
You: Nice. How does that compare to my previous 5 posts?
Claude: Let me pull stats for your last 6 LinkedIn posts.
Called list_posts with platform: "linkedin", limit: 6, status: "published"
Called linkedin_post_statistics x6
Post performance comparison:
1. "Why we switched from REST to tRPC" — 4,287 impressions, 89 reactions
2. "Our hiring process is broken" — 6,102 impressions, 142 reactions
3. "3 lessons from scaling to 1M users" — 3,891 impressions, 67 reactions
4. "Hot take: TypeScript is not enough" — 2,445 impressions, 38 reactions
5. "Announcing our public roadmap" — 1,822 impressions, 29 reactions
6. "Team offsite recap" — 987 impressions, 15 reactions
Your controversial/opinion posts consistently outperform announcements. The "broken hiring" post got 3x more engagement than announcements.
The key insight here: Claude Code doesn't just fetch data — it analyzes it. It noticed the pattern in your engagement and called it out, something a regular analytics dashboard wouldn't do. This is where AI-powered workflows genuinely outperform traditional tools.
Analytics availability
Post-level analytics (impressions, reactions, comments, reshares, reach) are currently available for LinkedIn only. Other platform analytics are on the roadmap. You can also pull follower counts and profile summaries from Claude Code.
Use Case 5: Bulk Schedule a Week's Content from a CSV
This is where the terminal workflow gets really powerful. You have a content plan in a CSV file — maybe your marketing team created it in Google Sheets and exported it. Instead of manually creating 7 posts, you hand the file to Claude Code:
day,time,platform,content
Monday,09:00,linkedin,"Starting the week with a deep dive into our new caching layer..."
Tuesday,14:00,twitter,"Hot take: Most API rate limiting is done wrong. Here's why..."
Wednesday,10:00,linkedin,"3 things I wish I knew before building a multi-tenant SaaS..."
Thursday,11:00,twitter+linkedin,"We just hit 10K users. Here's the growth chart and what we learned..."
Friday,09:00,linkedin,"Weekend reading: The best engineering blog posts I read this week..."
Saturday,11:00,instagram,"Behind the scenes of our engineering team offsite..."
Sunday,16:00,twitter,"Week in review: shipped 12 PRs, fixed 3 bugs, broke prod once..."
You: Read the file content-plan.csv and schedule all 7 posts for next week. Use my connected LinkedIn, X, and Instagram accounts.
Claude: I'll read your CSV and schedule each post. Let me first check your connected accounts.
Read content-plan.csv (7 rows)
Called list_connections → linkedin-ABC123, twitter-DEF456, instagram-789012
Called create_post x7
All 7 posts scheduled for next week:
Mon Mar 23, 09:00 — LinkedIn — "Starting the week..."
Tue Mar 24, 14:00 — X — "Hot take: Most API..."
Wed Mar 25, 10:00 — LinkedIn — "3 things I wish..."
Thu Mar 26, 11:00 — LinkedIn + X — "We just hit 10K..."
Fri Mar 27, 09:00 — LinkedIn — "Weekend reading..."
Sat Mar 28, 11:00 — Instagram — "Behind the scenes..."
Sun Mar 29, 16:00 — X — "Week in review..."
7/7 posts scheduled successfully. Thursday's post will go to both LinkedIn and X simultaneously.
This is something you simply cannot do quickly in a web dashboard. Reading a local file, parsing it, and creating 7 API calls — Claude Code handles all of it in one conversation turn. For the full API reference on bulk operations, see the bulk scheduling guide.
Use Case 6: Auto-Post When You Ship Code (Git Hook)
This is the developer dream: you push a release to production, and your social media automatically announces it. There are two approaches — a git hook with Claude Code, or a simpler curl-based approach using the REST API directly.
Option A: Git hook with Claude Code
Create a .git/hooks/post-push (or use Husky) that invokes Claude Code in non-interactive mode:
#!/bin/bash
# .git/hooks/post-commit (make executable: chmod +x)
# Only trigger on main branch
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$BRANCH" != "main" ]; then
exit 0
fi
# Get the commit message
COMMIT_MSG=$(git log -1 --pretty=%B)
# Only announce releases (commits starting with "release:")
if [[ "$COMMIT_MSG" == release:* ]]; then
echo "Announcing release on social media..."
claude --print "Based on this release commit message, create a professional LinkedIn post announcing the release. Schedule it for 30 minutes from now. Commit message: $COMMIT_MSG" 2>/dev/null &
fi
Option B: Direct API call (no Claude Code)
For CI/CD pipelines (GitHub Actions, GitLab CI), a direct curl call to Publora's REST API is simpler and faster:
#!/bin/bash
# In your CI/CD pipeline after deploy step
RELEASE_VERSION=$(git describe --tags --abbrev=0)
curl -s -X POST https://api.publora.com/api/v1/create-post \
-H "Content-Type: application/json" \
-H "x-publora-key: $PUBLORA_API_KEY" \
-d "{
\"content\": \"v${RELEASE_VERSION} is live! Check out the changelog: github.com/acme/app/releases/tag/${RELEASE_VERSION}\",
\"platforms\": [\"linkedin-ABC123\", \"twitter-DEF456\"],
\"scheduledTime\": \"$(date -u -d '+30 minutes' +%Y-%m-%dT%H:%M:%SZ)\"
}"
Do
- Use the REST API in CI/CD — it's stateless and fast
- Add a 30-minute delay so you can cancel if the deploy breaks
- Only trigger on release/tag commits, not every push
- Store the API key as a CI/CD secret
Don't
- Don't auto-post on every commit — that's spam
- Don't hardcode API keys in the hook script
- Don't schedule for immediate publish — give yourself a buffer
- Don't forget to test the hook with a dry run first
Power User Tips
Once you have the basic workflow down, here are some techniques to make it even faster.
Shell aliases for common tasks
# Add to ~/.bashrc or ~/.zshrc
alias social='claude --print'
# Usage:
social "Schedule a LinkedIn post for tomorrow at 9am: Just shipped our new API docs"
social "What are my scheduled posts for this week?"
social "Delete the post I scheduled for Friday"
Combine with other MCP servers
Claude Code supports multiple MCP servers simultaneously. You can connect Publora alongside other tools for powerful combined workflows:
{
"mcpServers": {
"publora": {
"type": "http",
"url": "https://mcp.publora.com",
"headers": { "Authorization": "Bearer sk_PUBLORA_KEY" }
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./content"]
}
}
}
You: Look at the latest closed GitHub issues this week, summarize the highlights, and schedule a "This Week in Open Source" LinkedIn post for Monday at 8am.
Claude: I'll check your GitHub issues and create a summary post.
Called github.list_issues → 8 issues closed this week
Called publora.create_post with summary content
LinkedIn post scheduled for Monday 8:00 AM UTC:
"This Week in Open Source: We closed 8 issues including a major performance fix (3x faster cold starts), added WebSocket support, and shipped better error messages. Thanks to @contributor1 and @contributor2 for their PRs..."
This is the killer feature of the MCP ecosystem — tools compose naturally. Claude Code reads from GitHub, processes the data, and writes to Publora in a single conversational flow.
Content templates as local files
Store your recurring post formats as text files and reference them from Claude Code:
# ~/templates/release-announce.txt
We just shipped {version}!
Key highlights:
{highlights}
Full changelog: {url}
#opensource #devtools #release
You: Use the template in ~/templates/release-announce.txt. Version is 2.4.0, highlights are: WebSocket support, 3x faster cold starts, new CLI flags. URL is github.com/acme/app/releases/v2.4.0. Post to LinkedIn and X for tomorrow 10am.
Supported Platforms
Publora supports 11 social media platforms through its API and MCP server. Here's what you can do from Claude Code on each one:
| Platform | Post Types | Character Limit | Media | Analytics |
|---|---|---|---|---|
| Text, image, video, articles | 3,000 | Images, video | Full (impressions, reach, reactions, comments, reshares) | |
| X (Twitter) | Text, image, video, auto-threads | 280 (auto-threads if longer) | Images, video, GIF | Coming soon |
| Photo, carousel (2-10), Reels, Stories | 2,200 | JPEG only, video MP4 | Coming soon | |
| Threads | Text, image, video | 500 | Images, video | Coming soon |
| Telegram | Text, image, video | 4,096 (text) / 1,024 (captions) | Images, video, documents | Coming soon |
| Text, image, video | 63,206 | Images, video | Coming soon | |
| TikTok | Video | 2,200 | Video (MP4) | Coming soon |
| YouTube | Video | 5,000 (description) | Video | Coming soon |
| Mastodon | Text, image, video | 500 | Images, video | Coming soon |
| Bluesky | Text, image | 300 | Images | Coming soon |
| Pins (image + link) | 500 (description) | Images | Not yet available |
Platform connection
Each platform is connected via OAuth through the Publora dashboard (one-time setup). Once connected, Claude Code can post to it using the platform ID. Run list_connections in Claude Code to see all your connected accounts and their IDs.
The Complete MCP Tools Reference
When you connect Publora to Claude Code, you get access to 18 active MCP tools. Here's a quick-reference of the most commonly used ones:
Content Management
create_post— Create and schedule postslist_posts— List with filters (status, platform, date)get_post— Get post details by IDupdate_post— Edit content or rescheduledelete_post— Remove a scheduled postupload_media— Get presigned upload URLs
Analytics & Account
list_connections— See connected platformstest_connection— Verify account accesspost_logs— Publish history and errorslinkedin_post_statistics— Post metricslinkedin_followers— Follower countlinkedin_profile_summary— Profile info
For the full reference with parameters and response examples, see the MCP tools reference.
Why Claude Code + MCP Is Different from Other Integrations
You might be wondering: "Can't I already do this with Zapier or n8n?" Yes — and Publora supports Zapier, n8n, and Make. But the Claude Code + MCP approach is fundamentally different:
Zapier / n8n / Make
Pre-defined workflows. You build a flow once and it runs on triggers. Great for automation, but rigid — you can't improvise or ask follow-up questions.
REST API / SDKs
Full control, but you write code for every operation. Good for production pipelines, but high friction for quick tasks.
Claude Code + MCP
Conversational and contextual. You can ask questions, chain operations, analyze data, and improvise — all in natural language from your terminal.
The MCP approach shines for interactive, ad-hoc tasks — the kind of social media work that developers do alongside coding. It's not a replacement for automation pipelines; it's a complement that fills the gap where automation is too rigid and manual dashboards are too slow.
Getting Started in 60 Seconds
Here's the fastest path from zero to your first terminal-scheduled post:
- Create a Publora account and connect at least one social media account
- Get your API key — Go to API in the sidebar
- Add to Claude Code:
claude mcp add publora --transport http https://mcp.publora.com --header "Authorization: Bearer sk_YOUR_API_KEY"
- Restart Claude Code and try your first command:
You: Show my connected social accounts
That's it. You're managing social media from your terminal. No dashboards, no browser tabs, no context switching.
Ready to try it?
Connect Publora to Claude Code and schedule your first post from the terminal in under a minute.
Get Started FreePro plan required for API/MCP access. Setup docs
Frequently Asked Questions
What is Claude Code and how does it work with social media?
Claude Code is Anthropic's official command-line interface for Claude AI. By connecting it to Publora's MCP server, Claude Code gains 18 social media management tools — create posts, upload media, check analytics, list connections, and more. You interact in natural language from your terminal and Claude Code calls the appropriate Publora tools behind the scenes. No API knowledge required.
Which social media platforms can I manage from Claude Code?
Through Publora's MCP server, Claude Code can manage posts on Instagram, LinkedIn, X (Twitter), Threads, Telegram, Facebook, TikTok, YouTube, Mastodon, and Bluesky. Pinterest is registered in the platform registry but publishing support is not yet fully available. Each platform is connected via OAuth through the Publora dashboard (one-time setup).
Is Claude Code free to use with Publora?
Claude Code requires an Anthropic subscription (Max plan at $100/month or pay-per-use via API key). On the Publora side, you need a Pro or Premium plan — the free Starter plan does not include API or MCP access. Once both are set up, there are no per-call fees for the MCP integration itself.
Can I bulk schedule posts from a CSV file using Claude Code?
Yes. Claude Code can read files from your local filesystem, parse CSV data, and create posts via Publora's API in a loop. You can schedule an entire week or month of content from a single CSV file. See bulk scheduling guide for the API details, or just hand the CSV to Claude Code and it figures out the rest.
How do I set up Claude Code with Publora?
One command: claude mcp add publora --transport http https://mcp.publora.com --header "Authorization: Bearer sk_YOUR_API_KEY". Replace sk_YOUR_API_KEY with your actual Publora API key from app.publora.com. Restart Claude Code and verify with the /mcp command.
Can Claude Code upload images and create carousels?
Yes. Claude Code can call the upload_media tool to get presigned URLs from Publora, then upload local images from your filesystem. For Instagram carousels, it uploads 2-10 images to the same post. Note that Instagram requires JPEG format — Claude Code can also help you convert PNG files before uploading. See the media upload guide for details.
What MCP tools does Publora expose to Claude Code?
Publora exposes 18 active MCP tools: list_posts, create_post, get_post, update_post, delete_post, list_connections, upload_media, test_connection, post_logs, linkedin_post_statistics, linkedin_followers, linkedin_profile_summary, and more. See the full MCP tools reference for parameters and examples.
Can I automate posting when I push code to GitHub?
Yes. You can create a git post-commit hook that invokes Claude Code in non-interactive mode, or use a direct curl call to the Publora REST API in your CI/CD pipeline. The REST API approach is simpler for automated workflows since it doesn't need Claude Code in the loop. Both approaches are covered in this guide's git hook section.
Further Reading
- MCP Client Setup Guide — Full setup instructions for Claude Code, Claude Desktop, Cursor, and more
- MCP Tools Reference — All 18 tools with parameters and response examples
- Cross-Platform Posting — How content adaptation works across platforms
- Bulk Scheduling Guide — CSV imports and batch operations
- LinkedIn Analytics Guide — Post-level metrics and account insights
- MCP Examples — More conversation examples and use cases
- Rate Limits — Platform and API rate limits
Related Articles

GitHub Actions for Social Media: Auto-Post When You Ship Code
Automatically announce releases on social media with GitHub Actions and Publora API. Complete workflow YAML, AI-generated changelogs, multi-platform customization, and GitLab CI adaptation.

Publora + Make Integromat: Automate Cross-Platform Social Campaigns
Set up Publora as an HTTP module in Make for automated social campaigns. Three scenarios: multi-platform with Router, content approval with Slack, and analytics-triggered reposting.

Automate Social Media with n8n + Publora: No-Code Workflow Guide
Connect n8n to Publora for no-code social media automation. Three importable workflows: RSS auto-post, batch scheduling from Google Sheets, and webhook-triggered posts.

Why Zapier Isnt Enough for Social Media Automation and What to Use Instead
Six specific limitations of Zapier for social media automation: per-task pricing, limited platforms, no analytics, no media upload, no MCP. Cost analysis and Publora API alternative.