Recipes: marketing & content
A pipeline for marketers and solo founders who publish and want the distribution handled.
Content repurposer
When you publish a new post, generate a LinkedIn post, an X thread, and a newsletter blurb — drafted and dropped in Slack for a quick approve-and-go.
The shape:
new-post (folder-watch) → repurpose (claude) → repurpose-review (slack)A folder-watch trigger fires when a new markdown file lands in your blog’s posts folder
(a file must be stable across two polls, so a half-written draft never fires):
# jobs/marketing/new-post.yaml
id: new-post
name: New blog post
group: marketing
type: folder-watch
path: '{{ $vars.blogPostsDir }}'
pattern: '*.md'
pollSeconds: 60
schedule: []The claude CLI job runs in your blog directory, so it can read the post file and
write the drafts to disk:
# jobs/marketing/repurpose.yaml
id: repurpose
name: Repurpose post
group: marketing
type: claude
cwd: '{{ $vars.blogDir }}'
instructions: |
Read the newly published post at {{ $parent.json.path }}. Then write, in this order:
1) a LinkedIn post, 2) an X/Twitter thread (5-7 tweets), 3) a 2-sentence newsletter blurb.
Save all three to ./_repurposed/ and print them so the next step can post them.
schedule:
- { kind: afterParent, parent: new-post, on: succeeded }# jobs/marketing/repurpose-review.yaml
id: repurpose-review
name: Post for approval
group: marketing
type: slack
credential: slack_bot
channel: '#marketing'
message: |
:sparkles: New post repurposed — review & ship:
{{ $parent.text }}
schedule:
- { kind: afterParent, parent: repurpose, on: succeeded }Note: keep the watched folder to your own content — a
claudeinstruction prompt takes interpolated data literally, so it isn’t a place for untrusted input.