content-pipeline

Orchestrator for the 3-article content pipeline — runs research phase, spawns parallel article sub-agents, creates Typefully drafts. Use when running the full content pipeline (usually via cron at 3am).

9 stars

Best use case

content-pipeline is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Orchestrator for the 3-article content pipeline — runs research phase, spawns parallel article sub-agents, creates Typefully drafts. Use when running the full content pipeline (usually via cron at 3am).

Teams using content-pipeline should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/content-pipeline/SKILL.md --create-dirs "https://raw.githubusercontent.com/exiao/skills/main/writing/content-pipeline/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/content-pipeline/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How content-pipeline Compares

Feature / Agentcontent-pipelineStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Orchestrator for the 3-article content pipeline — runs research phase, spawns parallel article sub-agents, creates Typefully drafts. Use when running the full content pipeline (usually via cron at 3am).

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Content Pipeline Orchestrator

Produces 3 article drafts per run: research once, then spawn 3 parallel sub-agents (one per article). Sub-agents handle their own skill reads. This orchestrator only handles the research phase and final reporting.

**Do NOT publish anything.** Everything stays as drafts.

---

## Phase 0 — Deduplication Check (MANDATORY FIRST)

1. Read `~/clawd/memory/content-published.md` — topics already covered are off-limits
2. Run `bird tweets --user $TWITTER_USER -n 30 --plain` — note angles the author published in the last 30 days
3. Check recent Substack: `web_fetch https://$SUBSTACK_URL` — find recent post titles
4. Build an EXCLUSION LIST. Do not pick any topic overlapping with it.
5. After picking topics, append them to `~/clawd/memory/content-published.md`

---

## Phase 1 — Research (run once, takes ~15 min)

Read `~/marketing/WRITING-STYLE.md` first.

### 1a. Gather engagement data

- **X/Twitter**: Pull @$TWITTER_USER's last 30 posts via `bird`. Note which topics/angles got most engagement (likes, replies, retweets).
- **Grok X search**: Run `/grok-search` with `--x` to find what's trending in the author's niches (AI, investing, indie dev, fintech).
- **Trend research**: Run `/last30days` across YouTube, X, Reddit, and Substack to find viral formats, hooks, and topics with momentum.

### 1b. Find 3 topics

Topics should come from what's actually resonating on social, not from a fixed theme list. Look for:

- **High-engagement angles** from the author's own X data (what got traction in the last 30 days)
- **Trending conversations** where the author has a unique perspective (builder, investor, AI power user, solo founder)
- **Viral formats** that can be adapted (data tables, outrage comparisons, contrarian takes, build-in-public threads)

Not every article needs to be about Bloom. Pick topics because they're genuinely interesting and the author has something real to say. Bloom integration only if it's natural and adds to the piece.

**Pick topics where the author has unique credibility.** Avoid angles anyone could write. Validate with X engagement data from Step 1a.

### 1c. Competitive gap check

For each topic: quick web search for what's already been written. Find the contrarian angle or data point competitors missed.

### 1d. Save research

Write all findings to `~/marketing/substack/drafts/[YYYY-MM-DD]-research.md`:
- X engagement patterns (which topics resonated)
- Trending topics and viral formats found
- 3 chosen topics with positioning angle for each
- Key SEO keywords per topic

---

## Phase 2 — Parallel Article Agents

Spawn 3 sub-agents in parallel using `sessions_spawn`, one per topic. Each sub-agent receives:

```
Topic: [topic]
Positioning angle: [angle from research]
X engagement insight: [what angle resonated with the author's audience]
Output directory: ~/marketing/substack/drafts/[slug]/

Your job:
1. Read ~/marketing/WRITING-STYLE.md
2. Run /hooks — generate 5 options, pick strongest → hooks.md
3. Run /outline-generator → outline.md
4. Run /writer → draft.md (must pass "only the author could write this" test: use specific numbers, named frameworks, personal experience. Reference Bloom only if naturally relevant to the topic.)
5. Run /editor-in-chief — max 5 iterations → editing-log.md + draft-final.md
6. Generate a hero image → hero.png
7. Write LinkedIn post directly → linkedin-post.md
   - Re-read ~/marketing/WRITING-STYLE.md kill phrases list before writing
   - Write a native LinkedIn post from draft-final.md. Do NOT reframe into "here's what most people get wrong" or "X isn't Y, it's Z" patterns. Lead with the most specific, surprising fact or data point from the article. Let the story carry the reader — no interpretive sentences telling them what to feel.
   - Run /evaluate-content on the post (Voice + Leanness scores only). If either scores below 4/5, rewrite and re-check. Max 2 revision passes.
   - Save final version to linkedin-post.md (post body only — no metadata headers)
8. Write X thread → x-thread.md
   - Run writer to create 5 standalone tweets from draft-final.md and sequence them as a thread.
   - No promotional framing, no article links in thread body (link goes in reply)
9. Format for Substack → substack-ready.md

Do NOT publish. Do NOT send messages unless blocked.
```

### File structure per article
```
~/marketing/substack/drafts/[slug]/
  hooks.md            # 5 options + winner
  outline.md
  draft.md
  editing-log.md
  draft-final.md
  substack-ready.md
  hero.png
  x-thread.md
  linkedin-post.md
```

---

## Phase 3 — Substack Drafts

After all 3 sub-agents complete, for each article save a Substack draft using the Substack skill with `profile=clawd`.

**NEVER click Publish. Draft only.**

Steps per article:
1. Read `~/marketing/substack/drafts/[slug]/substack-ready.md` for title, subtitle, and body
2. Open Substack editor: `browser action=open targetUrl="https://$SUBSTACK_URL/publish/post" profile=clawd`
3. Paste title, subtitle, body
4. Upload `hero.png` as the cover image
5. Save as draft (never publish)
6. Capture the draft URL and include it in the Phase 4 report

---

## Phase 4 — Typefully Drafts

After Substack drafts are saved, create Typefully drafts for each article:

**IMPORTANT: Save as UNSCHEDULED drafts only. Do NOT schedule or publish anything.**

```bash
# X thread draft — unscheduled draft only
cd ~/clawd/skills/typefully && node scripts/typefully.js drafts:create $TYPEFULLY_SOCIAL_SET_ID \
  --platform x --text "$(cat ~/marketing/substack/drafts/[slug]/x-thread.md)"

# LinkedIn draft — unscheduled draft only
node scripts/typefully.js drafts:create $TYPEFULLY_SOCIAL_SET_ID \
  --platform linkedin --text "$(cat ~/marketing/substack/drafts/[slug]/linkedin-post.md)"
```

---

## Phase 5 — Report

Do NOT send via the message tool. Just output the summary as your reply. Cron delivery handles routing.

Include:
- 3 topics chosen (one line each with positioning angle)
- Substack draft URLs (one per article — ready to review and publish)
- Typefully draft links (LinkedIn + X thread, unscheduled)
- Source data and trending topics that informed each article

Related Skills

evaluate-content

9
from exiao/skills

Use when judging content quality OR editing/improving existing copy: shareability, readability, voice, cuttability, angle, copy sweeps.

content-strategy

9
from exiao/skills

Use when building content strategy: hooks, angles, and ideas from what's trending now. Covers organic and paid creative across TikTok, X, YouTube, Meta, LinkedIn.

youtube-content

9
from exiao/skills

Fetch YouTube video transcripts and transform them into structured content (chapters, summaries, threads, blog posts). Use when the user shares a YouTube URL or video link, asks to summarize a video, requests a transcript, or wants to extract and reformat content from any YouTube video.

shots-pipeline

9
from exiao/skills

Orchestrate iOS screenshot automation with xcodebuild/simctl for build-run, AXe for UI actions, JSON settings and plan files, Go-based framing (`asc screenshots frame`), and screenshot upload (`asc screenshots upload`). Use when users ask for automated screenshot capture, AXe-driven simulator flows, frame composition, or screenshot-to-upload pipelines.

writer

9
from exiao/skills

Write content in Eric's voice — articles, blog posts, tweets, social media posts, marketing copy, newsletter drafts. Loads WRITING-STYLE.md and enforces kill phrases.

positioning-angles

9
from exiao/skills

Use when defining product positioning, choosing strategic angles, crafting value propositions, competitive positioning, product messaging, differentiation strategy, or go-to-market angles. Also use for 'how should I position my app', 'what angle should I use', 'painkiller vs vitamin', or 'market positioning'.

outline-generator

9
from exiao/skills

Use when generating outlines, article structures, content outlines, blog outlines, planning article sections, structuring posts, breaking down topics into sections, or organizing ideas for long-form content. Also use for 'outline this', 'structure this article', or 'plan the sections'.

last30days-open

9
from exiao/skills

Use only when the user explicitly asks for the open variant of last30days, including watchlists, briefings, and history queries. Sources: Reddit, X, YouTube, web.

last30days

9
from exiao/skills

Use when researching what happened in the last 30 days on a topic. Also triggered by 'last30'. Sources: Reddit, X, YouTube, web. Produces expert-level summary with copy-paste-ready prompts.

hooks

9
from exiao/skills

Use when generating hooks, headlines, titles, and scroll-stopping openers for content. Also use when analyzing viral posts, Reels, TikToks, YouTube Shorts, or successful social examples to extract reusable hook patterns and improve hook guidance.

editor-in-chief

9
from exiao/skills

Use when a first draft is complete and all Phase 1 gates are done: topic selected (seo-research), title approved (hooks), outline approved (outline-generator), draft written (writer). Runs autonomous diagnosis-prescribe-rewrite loop before Substack.

copywriting

9
from exiao/skills

Write or improve marketing copy for any surface: pages, ads, app stores, landing pages, TikTok/Meta scripts, push notifications, UGC. Combines page copy frameworks with direct response principles.