Social posts from a launch
Post a URL to a webhook (or label an issue social with the link in it). Claude Code reads the page and pulls out the claims and lines worth quoting, Claude drafts six posts across channels, and you tick the ones you like at the approval gate. The picks go to your scheduler.
- Read the page Claude Code · Sonnet
- Draft posts Claude API · Sonnet 5
- Pick posts You
- Send to scheduler Shell
What each step does
Read the page
Claude Code · SonnetOpens the page and pulls out the main claims, numbers and lines worth quoting.
Draft posts
Claude API · Sonnet 5Drafts six posts across LinkedIn, X and the newsletter, each as a numbered option.
Pick posts
YouYou tick the posts to schedule. Reject with a comment to get new drafts.
Send to scheduler
ShellSends the picked posts to your scheduler through a webhook.
From copy to first run
- Copy the pipeline JSON with the button above.
- In Jimothy, open Pipelines → New pipeline, paste it under “Or import a pipeline JSON” and click Import.
- Fill in the variables below under Pipeline settings → Variables.
- Triggers → Add trigger → Webhook. Post title (the page name) and description (the URL, plus anything to emphasise).
What to fill in
The prompts and commands read these as {{vars.<name>}}. The examples are placeholders: replace them with your own.
| Variable | What to put in it | Example |
|---|---|---|
company | Who is posting. | Acme, a reporting tool for finance teams |
voice | How your social posts sound. | Practical and specific. Lead with the problem it solves. One idea per post. No emoji wal… |
schedulerWebhookUrl | Where picked posts go, e.g. a Zapier hook into Buffer, Hootsuite or a Slack channel. | — |
Show the pipeline JSON
{
"jimothyPipeline": 1,
"name": "Social posts from a launch",
"description": "Reads a page and drafts posts for LinkedIn, X and your newsletter; you pick the ones to schedule.",
"icon": "sparkles",
"color": "#db2777",
"repo": {
"mode": "scratch"
},
"concurrency": 3,
"variables": {
"company": "Acme, a reporting tool for finance teams",
"voice": "Practical and specific. Lead with the problem it solves. One idea per post. No emoji walls, no more than two hashtags.",
"schedulerWebhookUrl": ""
},
"steps": [
{
"id": "read",
"name": "Read the page",
"type": "agent",
"description": "Opens the page and pulls out the main claims, numbers and lines worth quoting.",
"harnessId": "claude-code",
"model": "sonnet",
"timeoutMinutes": 10,
"prompt": "Open the page in this request and read it fully:\n\n{{issue.title}}\n{{issue.description}}\n\nReport in Markdown: the URL, the one-sentence point of the page, who it's for, the three most concrete claims or numbers, two or three lines worth quoting word for word, and anything the request asked to emphasise. Only use what's on the page."
},
{
"id": "posts",
"name": "Draft posts",
"type": "agent",
"description": "Drafts six posts across LinkedIn, X and the newsletter, each as a numbered option.",
"harnessId": "anthropic-api",
"model": "claude-sonnet-5",
"dependsOn": [
"read"
],
"timeoutMinutes": 5,
"systemPrompt": "You write social posts for {{vars.company}}. Voice: {{vars.voice}}",
"prompt": "Source notes:\n{{steps.read.output}}\n\nDraft six posts, each linking to the page, in exactly this shape:\n### Post 1: LinkedIn, <angle>\n<post>\n\nMake posts 1 and 2 LinkedIn (under 1,200 characters), 3 and 4 X (under 280 characters, or a thread of up to four posts separated by ---), 5 a newsletter blurb (under 80 words), and 6 an internal Slack announcement for the team to share. Use only claims from the notes.{{#if steps.pick.output}}\n\nYour previous drafts were rejected with this feedback:\n{{steps.pick.output}}{{/if}}"
},
{
"id": "pick",
"name": "Pick posts",
"type": "approval",
"description": "You tick the posts to schedule. Reject with a comment to get new drafts.",
"dependsOn": [
"posts"
],
"loopBackTo": "posts",
"maxLoops": 3,
"choices": {
"fromStep": "posts",
"mode": "multiple"
},
"approvalMessage": "Pick the posts to schedule for {{issue.title}}."
},
{
"id": "schedule",
"name": "Send to scheduler",
"type": "shell",
"description": "Sends the picked posts to your scheduler through a webhook.",
"dependsOn": [
"pick"
],
"timeoutMinutes": 2,
"command": "printf '{\"source\":%s,\"posts\":%s,\"titles\":%s}' {{issue.title | json}} {{steps.pick.selected | json}} {{steps.pick.selectedTitles | json}} | curl -fsS -X POST -H 'Content-Type: application/json' --data @- {{vars.schedulerWebhookUrl}}"
}
]
}More for marketing, and beyond
Blog post from a brief
Turns a one-paragraph brief into three researched angles. You pick one, it’s written and edited, and the approved draft lands in your CMS.
MarketingWeekly competitor watch
Checks your competitors’ sites, pricing and changelogs every Monday and posts only what changed since last week.
MarketingMonthly website content audit
Checks your key pages every month for broken links, outdated claims, stale pricing and weak titles, and posts a prioritised fix list.