Schedule social media posts from Claude Code

Add Hookpost to Claude Code with one claude mcp add command and your API key. Then ask Claude to write posts from your changelog, README or git log and save them to Hookpost as drafts or scheduled posts. They land in the same calendar as the posts you write by hand, and Hookpost publishes them at the set time.

By the Hookpost team · Checked against the product on 11 October 2026

What you need

  • Hookpost Standard or Pro. Standard is ₹599 a month for 5 channels and 500 posts; Pro is ₹1,999 for 20 channels. The Free plan has no API key, so it cannot connect.
  • Channels connected in Hookpost. Claude can post to channels you have already connected. It cannot connect a new one, because each network signs you in through its own page.
  • Your API key. Settings → Developers → Reveal → Copy. There is one key per workspace; Rotate replaces it and the old one stops working.

The setup in four steps

  1. Connect your channels and copy your API key. In Hookpost, connect the networks you want to post to, then open Settings > Developers and copy the API key. The Developers tab is on Standard (₹599 a month) and Pro; the Free plan has no API key.
  2. Add Hookpost to Claude Code. Run: claude mcp add --transport http hookpost https://hookpost.hookstep.in/api/mcp --header "Authorization: Bearer YOUR_API_KEY". Then run claude mcp list to check that the server connects.
  3. Ask for drafts first. Start claude in your project and ask it to list your Hookpost channels, then to save posts as drafts rather than schedule them. Review the drafts in the Hookpost calendar before anything goes out.
  4. Schedule when you trust the output. Ask Claude to schedule posts for a date and time instead of saving drafts. Hookpost stores them and publishes at that time, whether or not your terminal is open.

Each step in detail below.

Step 1: add the server

Run this in your terminal with your own key in place of YOUR_API_KEY. It adds a server called hookpost for you, in every project:

claude mcp add --transport http hookpost https://hookpost.hookstep.in/api/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

Check it with claude mcp list. The hosted endpoint speaks Streamable HTTP and needs nothing installed on your machine.

Share it with your team (optional)

Add --scope project and Claude Code writes the server to .mcp.json at the root of the repo, so everyone who clones it gets the same setup. Keep the key out of git by referencing an environment variable; Claude Code expands it in the URL and headers. Note the single quotes, which stop your shell from writing the key itself into the file:

claude mcp add --transport http hookpost https://hookpost.hookstep.in/api/mcp \
  --scope project \
  --header 'Authorization: Bearer ${HOOKPOST_API_KEY}'

.mcp.json (commit this)

{
  "mcpServers": {
    "hookpost": {
      "type": "http",
      "url": "https://hookpost.hookstep.in/api/mcp",
      "headers": { "Authorization": "Bearer ${HOOKPOST_API_KEY}" }
    }
  }
}

Each person sets HOOKPOST_API_KEY in their own shell. Claude Code asks for approval the first time it sees a project-scoped server.

Step 2: ask for drafts first

Start claude in your project and give it a job. Asking for drafts means nothing is published until you have read it:

prompt

List my Hookpost channels. Then read CHANGELOG.md, write a short post about
the newest release for LinkedIn and a shorter one for X, and save both as
drafts in Hookpost. Don't schedule anything yet.

What happens next, tool by tool:

  1. integrationList returns your connected channels with their ids.
  2. integrationSchema returns each network's rules: 3,000 characters on LinkedIn, 280 on X (4,000 on a Premium account), and any settings the post needs.
  3. integrationSchedulePostTool creates the posts with type: "draft". Hookpost runs the same checks as its own editor, and if something is wrong the tool returns the error so Claude can fix it and try again.

Claude Code asks your permission before it calls a tool unless you have already allowed it. When the drafts look right, ask Claude to schedule them for a date and time instead, or open them in Hookpost and schedule them there.

Where the posts go

  • Into the calendar you already use. Drafts show as "Draft:" on their day, and scheduled posts sit next to the ones your team wrote in the browser. Open one and the editor header shows an MCP badge, so you can tell which posts an agent wrote.
  • Edit, move or delete in the app. Drag a post to another day, change its text, or delete it. Claude can change a pending post's network settings, but not its text or date, and it cannot delete anything.
  • Published by Hookpost, not by your terminal. Scheduled posts are stored on the server and go out at their time with Claude Code closed.
  • Failures are visible. A post a network rejects turns red in the calendar with the error, you get an in-app notification, and members who keep failure emails on get an email.

Prompts that work well from a repo

Release notes to several networks

Read the last 20 commits with git log and the newest CHANGELOG.md entry. Write one LinkedIn post, one X post under 280 characters and one Bluesky post under 300. Save all three as Hookpost drafts for tomorrow 10:00 IST.

Claude reads the repo with its own tools, checks each network’s rules with integrationSchema, then creates the drafts.

A thread from a README section

Turn the "How it works" section of README.md into a 5-post thread for X. Keep every post under 280 characters and save it as one draft.

The first item of postsAndComments is the post; the rest become the thread.

Fill the empty days next week

List my Hookpost posts for next Monday to Friday. For any day with nothing scheduled, draft a LinkedIn post from docs/blog/ and save it as a draft on that day at 09:30 IST.

postsListTool returns what is already queued; Claude picks the gaps.

Check what failed

Which Hookpost posts from the last 7 days are in ERROR state, and what does the error say?

Fix and retry the post in the app; the MCP tools cannot edit post text.

Posting the same news to several networks? The limits table for every network shows what breaks when one text goes everywhere. Publishing full articles to Dev.to, Hashnode or WordPress is covered in cross-posting dev articles.

Unattended runs and CI

claude -p runs one prompt without the interactive session. MCP tools are named mcp__hookpost__<tool>, and listing them in --allowedTools lets the run call them without stopping to ask. The schedule tool can still publish straight away if the prompt asks for it, so ask for drafts in jobs nobody watches:

claude -p "Read CHANGELOG.md and save a LinkedIn draft in Hookpost about the newest release" \
  --allowedTools "Read,mcp__hookpost__integrationList,mcp__hookpost__integrationSchema,mcp__hookpost__integrationSchedulePostTool"

Or skip MCP and use the CLI

If a script already knows the text, the hookpost CLI on npm (version 0.1.1) talks to the same account without a model in the loop. Claude Code can run it too.

npm install -g hookpost
export HOOKPOST_API_KEY="your_key"     # or: hookpost auth login

hookpost channels                      # ids of your connected channels
hookpost post "v2.3 is out: faster exports and a new CSV importer." \
  --channel abc123,def456 --draft      # one post, two channels
hookpost posts --days 7                # what is queued for the next week

Leave out --at and the post takes the next free slot in your posting schedule. More on the CLI, the REST API and the Node SDK: social media scheduling API.

If it does not connect

401 Missing Authorization header
The --header part did not make it into the config. Run claude mcp remove hookpost and add it again with the header.
401 Invalid API Key or OAuth token
The key is wrong or was rotated. Copy it again from Settings → Developers. With the project setup, check that HOOKPOST_API_KEY is set in the shell you started Claude Code from.
No Developers tab in Settings
The workspace is on the Free plan. The key and MCP come with Standard and Pro.
A channel is missing from the list
Connect it in Hookpost first; the list only holds channels the workspace has connected. A channel that needs reconnecting shows up but cannot publish until you reconnect it in the app.

Questions

Do I need an API key to use Hookpost from Claude Code?
Yes. Copy it from Settings > Developers in Hookpost and pass it in the Authorization header when you add the server. The Developers tab exists on Standard (₹599 a month) and Pro (₹1,999 a month), not on the Free plan. Rotating the key in Settings stops the old one working at once.
Does Claude get access to my social media logins?
No. Your X, LinkedIn or YouTube tokens stay on Hookpost’s servers, and the MCP tools return channel names and ids, never credentials. What does go through Claude is the text it writes and anything it reads from your project, so keep secrets out of the files you ask it to summarise.
Does Claude Code have to stay open until the post is published?
No. Once Claude creates a scheduled post, Hookpost stores it and publishes at the time set. You can close the terminal.
Can Claude delete or reschedule a post?
Not through MCP. There is no delete tool, on purpose, and no tool changes a post’s text or date. Claude can change the network settings of a post that has not gone out yet. Delete or move posts in the Hookpost calendar, or delete one with the CLI: hookpost delete <postId>.
What happens if a scheduled post fails?
The post turns red in the calendar with the network’s error message, Hookpost adds an in-app notification, and workspace members who keep failure emails on get an email. You can also ask Claude to list posts in ERROR state.
Does the same setup work in Cursor, VS Code or Windsurf?
Yes, the server is the same and only the config format changes. Copy-paste configs for each editor are on the MCP page.

Using Claude in the browser or the desktop app instead? Schedule posts from Claude. Configs for Cursor, VS Code, Windsurf, Codex and Gemini CLI: the MCP page. Every tool the server exposes: tool reference.