// playbook / operations

Building an agentic content pipeline.

by John Morabito · · 14 min read

The architecture.

The pipeline is a five-stage chain with a human checkpoint between stage 3 and stage 5. Every stage writes its output to a shared task record so any stage can be re-run without restarting the chain.

  [ topic brief ]
        ↓
  1. RESEARCH  (agent: Research Skill + Firecrawl + Perplexity API)
        ↓ outputs: source map, quotes, stats
  2. OUTLINE   (agent: Outline Skill + brand voice guide + chunk rubric)
        ↓ outputs: structured outline, H2/H3 tree
  3. DRAFT     (agent: Drafter Skill + branded prompt library)
        ↓ outputs: draft with inline citations
  4. EDIT      (human: senior editor + 10-point rubric)  ← the moat
        ↓ outputs: approved manuscript
  5. PUBLISH   (agent: Publisher Skill + CMS API + schema validator)
        ↓ outputs: live URL with JSON-LD validated

The shape matters. Anything that lets the draft stage publish without human review between is not a pipeline. It is a slop cannon pointed at your site.

Stage 1: Research (agent).

Research is the stage where volume gains compound. A human researcher can read 10-15 sources carefully. An agent can crawl 100 in the same window and summarize the relevant ones into a structured source map.

The Skill

---
name: content-research
description: Research agent for content production. Pulls
  sources, extracts quotes, identifies statistics, flags
  contradictions. Triggers on "research {topic}".
---

## Instructions

1. Read the topic brief.
2. Search with Perplexity API for the 10 most-cited sources.
3. Crawl each with Firecrawl, extract passages that support
   or contradict the brief's thesis.
4. Output source_map.json:
   [{ url, author, pub_date, key_quotes: [...],
      statistics: [...], credibility_score }]
5. Flag contradictions between sources explicitly.

## References
- references/credibility-tiers.md
- references/research-tone.md

What good looks like

A source map with 10-20 entries, each with at least one extractable quote and a credibility tier. Contradictions surfaced, not buried. Source URLs that the human editor can open and verify in under 30 seconds.

Stage 2: Outline (agent).

The outline stage is where the chunk rubric gets enforced. Every H2 in the outline must open with a direct-answer sentence. The agent produces the tree; the tree is what the draft stage builds from.

---
name: content-outline
description: Outline agent. Takes a source map and a brand
  voice guide, produces a chunked outline. Triggers on
  "outline {topic}".
---

## Instructions

1. Read source_map.json and voice-guide.md.
2. Generate an outline with:
   - H1 title (direct, specific)
   - TL;DR: 3 bullets (each citable)
   - 5-8 H2 sections, each with:
     - direct-answer opening sentence
     - 2-4 H3 sub-points
     - at least one source reference per H2
   - FAQ: 5 Q&A
3. Output outline.md.

## Rubric
- No H2 may be a question unless its first sentence answers it.
- No H2 may start with "This" or "It" referring outside itself.

Stage 3: Draft (agent).

The drafter writes the full piece against the outline. It cites inline with markdown links. It applies the brand voice guide.

The drafter does not decide structure. The outline already decided structure. The drafter's job is prose that obeys the voice rules.

---
name: content-drafter
description: Drafter agent. Writes against an outline using
  the brand voice guide.
---

## Instructions

1. Read outline.md, source_map.json, voice-guide.md.
2. For each H2, write 2-4 paragraphs. Max 4 sentences each.
3. Cite inline: [source name](url) for every statistic or
   quote. No uncited statistics.
4. Apply voice rules:
   - short sentences
   - active voice
   - no banned clichés (see voice-guide.md)
   - every H2 opens with a direct-answer sentence
5. Output draft.md with frontmatter:
   title, slug, category, reading_time, author.

Stage 4: Edit (human).

This is the stage most pipelines try to skip. They fail. The editor is the moat.

The editor's job is not to rewrite prose. It is to apply the 10-point rubric, cut what does not pass, and ship what does. An editor who rewrites everything is either using the wrong pipeline or does not trust the drafter.

The 10-point quality rubric

  1. Every claim is cited. If a statistic has no link, cut it or replace it.
  2. Every source is credible. No aggregator blogs. No listicles citing listicles.
  3. Every H2 opens with a direct-answer sentence. No pronoun dependencies.
  4. No banned clichés. Grep the draft before you read it.
  5. Voice matches the brand guide. Read three random paragraphs aloud.
  6. Structure beats prose. Numbered lists and tables where the content is structured.
  7. TL;DR bullets are citable. Each bullet stands alone as a claim.
  8. FAQ questions are real. Not synthetic filler questions.
  9. Schema matches visible content. No mismatch between JSON-LD and the page.
  10. The piece earns its length. If a 1,500-word draft has 500 words of filler, cut to 1,000.
Editor workflow

The editor opens the draft, runs a banned-clichés grep, reads the TL;DR and FAQ first, then scans H2 openings. If any of those three layers fail, the draft goes back to stage 3 with a specific note. The editor never silently rewrites. Every correction is a teaching signal for the drafter prompt library.

Stage 5: Publish (agent).

The publisher handles the mechanical last mile. Validate schema. Push via CMS API. Update internal links. Close the task.

---
name: content-publisher
description: Publishes approved drafts. Validates schema,
  pushes to CMS, updates internal linking, closes task.
---

## Instructions

1. Read approved_draft.md.
2. Generate JSON-LD: Article + FAQPage + HowTo (if methodology).
3. Validate with Google Rich Results Test API.
4. POST to CMS API at /api/posts with frontmatter + body.
5. Scan last 30 published posts for internal link opportunities
   to the new post; propose edits as a PR.
6. Mark task complete.

The quality-control loop.

Quality at volume requires a feedback loop between the editor's corrections and the drafter's prompt library. Every correction the editor makes is a training signal.

Specifically: when the editor cuts a sentence for being clichéd, the cliché goes into the banned-clichés list. When the editor rewrites an H2 opening, the original is tagged as "bad direct-answer example" and added to the Skill's negative-example reference.

After 100 edited pieces, the drafter should need half the corrections it needed in the first 10. If it does not, the prompt library is not being updated. That is a process bug, not a model bug.

How to debug the pipeline.

When output quality drops, the problem is almost always upstream of where it shows up.

  • Prose feels generic. Usually a voice-guide issue, not a drafter issue. Update references/voice-guide.md with two new "this is us / this is not us" examples.
  • Facts are wrong. Research stage is failing. Check source map credibility scores. Tighten the research Skill's credibility threshold.
  • Structure is mushy. Outline stage is failing. Re-read the chunk rubric with a fresh example set.
  • Editor is cutting 50%+. The drafter's prompt library has not been updated. Schedule a weekly sync where the editor's cuts feed back into the Skill.
Author

John Morabito. Founder, Winston Digital Marketing. Writing about AI-native marketing, GEO, and agentic workflows.

Want this pipeline built for you?

We design and ship agentic content pipelines. Submit your brief. 48-hour scope.