RecipesMarketing & content

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 claude instruction prompt takes interpolated data literally, so it isn’t a place for untrusted input.