一键导入
contentforge
Produce publication-ready, fact-checked, brand-aligned content via 10-phase autonomous pipeline. Use for any content need.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Produce publication-ready, fact-checked, brand-aligned content via 10-phase autonomous pipeline. Use for any content need.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Process multiple content pieces through a prioritized, checkpointed queue with progress tracking and per-piece quality gates
Add a custom MCP connector — connect any API or service to ContentForge via .mcp.json configuration.
Track content quality scores, pipeline timing, and compliance trends with insights and alerts.
Audit content library for freshness decay, coverage gaps, and optimization opportunities.
Generate research-backed content briefs with keywords, competitors, intent, and SEO strategy from a topic.
Plan content calendars with scheduling, deadlines, team assignments, and Google Calendar sync.
| name | contentforge |
| description | Produce publication-ready, fact-checked, brand-aligned content via 10-phase autonomous pipeline. Use for any content need. |
| argument-hint | [topic] |
| effort | max |
Transform a content requirement into a publication-ready, fact-checked, brand-compliant, SEO-optimized piece through a 10-phase autonomous agent pipeline (plus Step 0.5 title curation) with three-layer fact verification and 10 quality gates.
Pipeline phase. Grep before Read for references/, humanization-patterns.json, brand voice profiles. Hand subagents artifact file paths plus a ≤10-line summary — never reload or inline full drafts (see Context & Handoff Rules). On /contentforge:resume, load run.json plus only the artifacts the next phase contractually needs.
This skill orchestrates 10 phases plus Step 0.5 (Title Curation). Each numbered phase MUST be executed by invoking its dedicated subagent via the Task tool — DO NOT generate the deliverable yourself in a single inference pass. A single-pass generation skips the quality gates, fact-checking layers, humanizer 29-pattern catalog, and reviewer scoring that define ContentForge.
The one exception is Step 0.5: title curation is performed inline by the orchestrator (no subagent), because it requires user interaction and subagents must never wait on the user. Any subagent that needs a user decision returns a {"status": "needs_user_decision", ...} payload to the orchestrator, which owns all user interaction (including image-generation opt-in/approval).
# 1. Create the checkpoint run (returns run_id). Capture run metadata so a
# cross-session resume can recover keyword, audience, word count, and tone.
RUN_RESULT=$(python ${CLAUDE_PLUGIN_ROOT}/scripts/checkpoint-manager.py init \
--brand <brand-slug> --topic "<topic>" --content-type <type> \
--meta '{"keyword": "<primary keyword>", "audience": "<audience>", "word_count_target": <n>, "tone": "<tone>"}')
# Parse RUN_ID from the JSON result's "run_id" field.
# 2. Initialize the performance tracker for this run.
python ${CLAUDE_PLUGIN_ROOT}/scripts/pipeline-tracker.py --action init \
--brand <brand-slug> --run-id "$RUN_ID" --content-type <type> --topic "<topic>"
Rules:
pipeline-tracker.py is called by the orchestrator only — subagents never call it.phase-start/phase-end for 0.5). After the title is confirmed, checkpoint it directly (see contract table).For every numbered phase:
Mark phase start (orchestrator):
python ${CLAUDE_PLUGIN_ROOT}/scripts/pipeline-tracker.py --action phase-start --brand <slug> --run-id "$RUN_ID" --phase <N>
Call Task with the phase's qualified subagent_type (e.g. contentforge:researcher). The Task prompt contains ONLY:
Subagents Read what they need from those paths. Never inline a full draft into a Task prompt.
Verify the quality gate yourself. Gate ownership belongs to the orchestrator: check the returned artifact against the gate criteria in the Pipeline Contract table — count sources, check word count and citation density, and run python ${CLAUDE_PLUGIN_ROOT}/scripts/text-metrics.py for burstiness, Flesch-Kincaid grade, and keyword-placement checks. A subagent's self-reported "PASS" alone is not a gate pass.
On gate PASS, checkpoint the artifact so the run is resumable:
python ${CLAUDE_PLUGIN_ROOT}/scripts/checkpoint-manager.py save \
--brand <slug> --run-id "$RUN_ID" --phase <N> --content-file <artifact-path> --extension <md|json|txt>
Phases 3.5 and 6 also produce a companion manifest (phase-3.5-visual-manifest.json, phase-6-structure-manifest.json) — place it at its canonical path inside the same run directory.
Mark phase end with the output word count:
python ${CLAUDE_PLUGIN_ROOT}/scripts/pipeline-tracker.py --action phase-end --brand <slug> --run-id "$RUN_ID" --phase <N> --content-words <count>
Emit the audit line (so users can see real-time progress):
[PHASE-AUDIT] phase=<N> name=<name> status=<PASS|FAIL> output_summary="<one line>" gate=<PASS|FAIL>
On gate FAIL, loop per the contract table's loop-target column. Before looping, record the loop and check limits:
python ${CLAUDE_PLUGIN_ROOT}/scripts/checkpoint-manager.py loop --brand <slug> --run-id "$RUN_ID" --edge phase_<N>_to_<target>
Limits: max 2 loops per edge, max 5 loops total per run. If a limit is reached: do NOT loop — mark the run for human review, finalize --status failed, and halt. When Phase 7 orders rework, the pending_rework field in run.json records the target phase and the reviewer's feedback so /contentforge:resume continues the rework instead of skipping it. Do not overwrite the saved checkpoint of an upstream phase that already passed — re-save only the looped phase when it passes.
The visual-asset-annotator never waits on the user. It generates candidates (when image generation is opted in) and records each in phase-3.5-visual-manifest.json with approved_by_user: false. After Gate 3.5 passes, the orchestrator presents the generated visuals to the user for approval:
approved_by_user in the manifest for approved assets.contentforge:visual-asset-annotator with the rejection feedback (counts as a Phase 3.5 re-run, not a loop edge).approved_by_user: true — unapproved assets stay out of the .docx.If the annotator returns {"status": "needs_user_decision", ...} (e.g., image-generation opt-in was never given), ask the user, then re-invoke with the answer.
All artifacts live in the canonical run directory ~/.claude-marketing/{brand-slug}/runs/{run_id}/ alongside run.json (the manifest).
| Phase | subagent_type | Reads (paths) | Writes (artifact) | Quality gate (orchestrator-verified) | Gate-FAIL loop target |
|---|---|---|---|---|---|
| 0.5 | — inline (orchestrator) | brand profile, requirements | phase-0.5-title.txt | User-confirmed title (or --title bypass) — user checkpoint, not a numbered quality gate | Regenerate title options |
| 1 | contentforge:researcher | phase-0.5-title.txt, requirements, brand profile | phase-1-research.md | Gate 1: 12–15 sources collected; ≥10 citable; ≥5 with reliability ≥8; differentiated angle documented | Re-run Phase 1 with broader search |
| 2 | contentforge:fact-checker | phase-1-research.md | phase-2-factcheck.md | Gate 2: ≥80% of claims verified; zero UNRESOLVED flags (flagged claims must be removed or re-sourced); ≤3 unverified tolerated; all cited URLs live | Phase 1 (find alternative sources) |
| 3 | contentforge:content-drafter | phase-1-research.md, phase-2-factcheck.md, brand profile, requirements | phase-3-draft.md | Gate 3: word count ±10% of target; all outline sections covered; ≥1 citation per 300 words | Re-run Phase 3 |
| 3.5 | contentforge:visual-asset-annotator | phase-3-draft.md, phase-2-factcheck.md | phase-3.5-visuals.md + phase-3.5-visual-manifest.json | Gate 3.5: every chart traceable to a verified statistic; manifest complete (placement, alt text, data source); human-action TODOs marked | Re-run Phase 3.5 |
| 4 | contentforge:scientific-validator | phase-3-draft.md, phase-3.5-visual-manifest.json, phase-2-factcheck.md | phase-4-validation.md | Gate 4: zero hallucinations; every claim traceable to a cited source; logic consistent | Phase 3 (with the specific claims to fix) |
| 5 | contentforge:structurer-proofreader | phase-3-draft.md, phase-4-validation.md, brand profile | phase-5-structured.md | Gate 5: zero grammar/spelling errors on re-scan; readability within ±0.5 grade of the content-type target (text-metrics.py); brand terminology compliance | Re-run Phase 5 |
| 6 | contentforge:seo-geo-optimizer | phase-5-structured.md, brand profile, requirements (keyword) | phase-6-seo.md + phase-6-structure-manifest.json | Gate 6: keyword PLACEMENTS present — title, first 100 words, ≥2 H2s, conclusion, meta description (density is advisory, ~1–2%); meta title + description generated | Re-run Phase 6 |
| 6.5 | contentforge:humanizer | phase-6-seo.md, phase-6-structure-manifest.json, brand profile | phase-6.5-humanized.md | Gate 6.5: AI patterns removed; burstiness ≥0.7 (text-metrics.py); keyword placements preserved per structure manifest | Re-run Phase 6.5 with the violated constraint stated (incl. structure-manifest mismatch) |
| 7 | contentforge:reviewer | ALL prior artifact paths, brand profile, requirements, config/scoring-thresholds.json | phase-7-review.json | Gate 7: reviewer decision tree per config/scoring-thresholds.json — approve ≥7.0 (industry-adjusted); all dimension minimums met | 5.0–6.9 → loop to responsible phase (recorded as pending_rework); <5.0 → human review, halt |
| 8 | contentforge:output-manager | phase-6.5-humanized.md, phase-7-review.json, phase-3.5-visual-manifest.json, run.json | phase-8-output.json + .docx | Gate 8: .docx generated; Appendices A/B/C present; delivery location verified | Re-run Phase 8; if generation still fails, save markdown + reports locally and report the failure |
That is 10 quality gates — one for each of phases 1, 2, 3, 3.5, 4, 5, 6, 6.5, 7, and 8.
Single source of truth for numbers: approval thresholds, loop bands, dimension weights, dimension minimums, and industry overrides live in config/scoring-thresholds.json. Prose in this document references those values; if they ever disagree, the config wins.
Read what they need.After Phase 8 completes, the output-manager subagent must produce a Microsoft Word .docx file by calling:
python ${CLAUDE_PLUGIN_ROOT}/scripts/generate-docx.py \
--content <article.md> \
--output <local-path>.docx \
--reports <reports.json> \
--brand "<brand>" \
--content-type <type>
The .docx must contain: title page, full article body, sources/citations, Appendix A (SEO Scorecard), Appendix B (Quality Scorecard), Appendix C (Production Details).
Dual-copy save: the .docx is written into the run directory (~/.claude-marketing/{brand-slug}/runs/{run_id}/) AND copied to the user-visible folder ~/Documents/ContentForge/{Brand}/. Always tell the user the ~/Documents/ContentForge/ path. If the brand has Google Drive configured (tracking.backend == "google"), additionally upload the .docx via drive-uploader.py.
Then finalize the run:
python ${CLAUDE_PLUGIN_ROOT}/scripts/checkpoint-manager.py finalize --brand <slug> --run-id "$RUN_ID" --status completed
Skipping the Task-tool orchestration means: no real fact-checking, no real humanizer (29-pattern AI removal won't fire), no real reviewer scoring — the pipeline becomes single-pass content generation labeled with fake phase names. The audit trail (run.json, the per-phase checkpoint artifacts, [PHASE-AUDIT] lines, real reviewer score) is the proof of execution. If those artifacts don't exist after a run, the pipeline didn't actually run.
Use /contentforge when you need:
For multiple pieces, use /contentforge:batch-process — a prioritized, checkpointed queue that runs the same pipeline per piece.
Runs your content through 10 specialized agents, each behind a quality gate:
config/scoring-thresholds.json)Quality Gates: 10 gates (phases 1–8 including 3.5 and 6.5). On failure the pipeline loops per the contract table — max 2 loops per edge, max 5 total, then human escalation.
Minimum Required:
/contentforge:cf-style-guide if new brand). See No-Brand Mode below if none exists.Pre-Flight Validation: After gathering inputs, validate the brand profile for completeness (voice, guardrails, audience, industry pack). For regulated industries (pharma, BFSI, healthcare, legal), guardrails are required — warn if they're empty and ask whether to proceed or update the profile first.
Optional:
--sources=<urls or file> — User-supplied reference URLs (required in No-Web Mode; otherwise merged into Phase 1 research)--title="Exact Title" — Non-interactive title bypass (see Title Curation)If the user has no brand profile and declines to create one:
SKIPPED and flags the run for manual review; the Quality Scorecard notes "no brand profile configured."If web research is unavailable (offline, no search tool, MCP down):
--sources=./contentforge
Prompts you for:
Then generates 4-5 title options (different angles: benefit-driven, how-to, data-driven, question-based, contrarian). You select, modify, or provide your own title. Pipeline starts only after title confirmation.
/contentforge "AI in Healthcare" --type=article --brand=acmemed --audience="Healthcare CIOs" --keyword="AI healthcare trends"
Even in quick mode, the system generates title options and asks you to select before starting Phase 1 — unless you pass --title.
/contentforge "AI in Healthcare" --type=article --brand=acmemed --title="How AI Is Reshaping Hospital Diagnostics"
--title skips option generation and uses the given title verbatim. The bypassed title is still checkpointed as phase-0.5-title.txt.
/contentforge --sheet-url=https://docs.google.com/spreadsheets/d/ABC123 --row=5
Reads requirement from Row 5 of the sheet.
Before the pipeline starts, the orchestrator (inline — no subagent, no tracker calls) generates 4-5 SEO-optimized title options using the topic, content type, brand voice, audience, and primary keyword. Each title takes a different angle:
You select, modify, or provide your own title. The confirmed title becomes the anchor for the entire pipeline — research, outline, SEO, and final output all flow from it.
Do NOT auto-select a title. The only exception is an explicit --title="..." bypass, which uses the supplied title verbatim (for non-interactive runs and evals). Either way, checkpoint the confirmed title as phase-0.5-title.txt before Phase 1.
Gate criteria and loop targets for every phase are defined once, in the Pipeline Contract table above.
config/scoring-thresholds.json; approve ≥7.0 (industry-adjusted), loop 5.0–6.9, human review <5.0. Gate 7.If a phase loops back: the system shows which phase failed, why, and what it's fixing. Loops are automatic — you don't need to do anything unless it escalates to human review.
Every pipeline run ends with a Completion Card showing scores, stats, and delivery status. This card is mandatory — it's shown in the conversation AND added as an appendix in the .docx file.
Example Completion Card (SYNTHETIC EXAMPLE — fabricated for illustration; never reuse these numbers):
CONTENTFORGE — COMPLETION CARD
Content: "AI in Healthcare: Emerging Trends" | AcmeMed | Article | ✅ APPROVED
Quality Score: 9.2/10 (Grade A+)
Content Quality: 9.5/10 ✅
Citation Integrity: 9.0/10 ✅
Brand Compliance: 9.5/10 ✅
SEO Performance: 8.8/10 ✅
Readability: 9.0/10 ✅
Content Stats:
Words: 1,947 (target 1,500-2,000) ✅ | Citations: 14 sources ✅
Keyword placements: all critical positions ✅ | Readability: Grade 11.2 ✅
Burstiness: 0.78 ✅ | AI Patterns: 0 remaining ✅ | Hallucinations: 0 ✅
SEO Package:
Meta Title: 58 chars ✅ | Meta Description: 152 chars ✅
Internal Links: 4 applied | Feature Image: generated (user-approved)
Pipeline: 0 loops | Guardrails: verified | Run: {run_id}
Delivery:
.docx: ✅ Generated
Local: ✅ ~/Documents/ContentForge/AcmeMed/AI-in-Healthcare-Emerging-Trends_v1.0.docx
Drive: ✅ uploaded (if configured) | Tracking: ✅ updated
Next: /contentforge:publish | /contentforge:social-adapt | /contentforge:translate | /contentforge:cf-variants
| Type | Word Count | Readability | Citations |
|---|---|---|---|
| Article | 1,500-2,000 | Grade 10-12 | 8-12 |
| Blog | 800-1,500 | Grade 8-10 | 5-8 |
| Whitepaper | 2,500-5,000 | Grade 12-14 | 15-25 |
| FAQ | 600-1,200 | Grade 8-10 | 3-5 |
| Research Paper | 4,000-8,000 | Grade 14-16 | 25-50 |
Readability is gated at ±0.5 grade of the content-type target (verified via text-metrics.py).
Before using ContentForge, create a brand profile:
/contentforge:cf-style-guide
Provide your brand name, industry, voice guidelines (or share existing documents/URLs), and ContentForge generates the profile JSON automatically.
Alternatively, copy config/brand-registry-template.json and fill in manually.
Canonical profile location: ~/.claude-marketing/{brand-slug}/Brand-Guidelines/{BrandName}-brand-profile.json, where the brand slug is lowercase alphanumerics + hyphens. Resolution order: local file first, then Drive cache (Cowork).
Brand Profile Includes:
Brand profiles are cached (SHA256 hash) so repeat runs skip re-parsing.
See the User Guide for detailed setup instructions.
run.json via checkpoint-manager.py loop and survive resume.Content is flagged for human review if:
config/scoring-thresholds.json)Flagged content is NEVER auto-published.
Before ContentForge:
/contentforge:cf-style-guide — Create brand profile if new brand/contentforge:content-brief — Generate research-backed content brief with keyword analysisInstead of ContentForge (for scale):
/contentforge:batch-process — Queue 10-50+ pieces through the same pipelineAfter ContentForge:
/contentforge:content-refresh — Update content 6-12 months later with fresh data/contentforge:cf-variants — Create A/B test headline/hook/CTA variations/contentforge:publish — Publish to Webflow or WordPress via MCP/contentforge:social-adapt — Transform article into LinkedIn, Twitter/X, Instagram, Facebook, Threads posts/contentforge:translate — Translate preserving brand voice (15+ languages)/contentforge:cf-video-script — Generate timestamped video scripts from the article/contentforge:cf-analytics — Record quality scores for trend tracking/contentforge:publishRun /contentforge:cf-integrations to check your connector status. Run /contentforge:cf-connect <name> for setup guides.
--sources= in No-Web ModeWhen: You run /contentforge with a brand that doesn't have a profile yet.
Fix:
/contentforge:cf-style-guide
Answer 3 questions (name, tone, industry) and you're ready./contentforge "your topic" --brand=existing-brand
When: Content didn't meet the minimum quality threshold after all feedback loops.
Common causes and fixes:
--sources=/contentforge:cf-style-guide --update [brand] to add guardrails and terminologyWhen: The pipeline hit a loop limit (2 per edge or 5 total) without reaching the quality threshold.
Fix:
phase-7-review.json (Content Quality? Citations? Brand Compliance?)API rate limits or network latency cause delays; ContentForge auto-retries with backoff. If it persists:
/contentforge:cf-integrations to verify MCP servers are responding/contentforge:resume — every gate-passed phase is checkpointedWhen: Your brand profile doesn't have prohibited claims or required disclaimers defined.
Impact: Phase 5 reports brand compliance "SKIPPED" instead of actually checking content. Phase 7 applies the empty-guardrails penalty per config/scoring-thresholds.json.
Fix:
/contentforge:cf-style-guide --update [brand]
Add at minimum: 3-5 prohibited claims, any required legal disclaimers, and industry-specific restrictions.
For regulated industries (pharma, BFSI, healthcare, legal): This is critical. Empty guardrails mean no compliance verification.
During content production, you'll see updates as each phase completes:
| Phase | What's Happening | What You'll See |
|---|---|---|
| Step 0.5: Title Curation | Generating 4-5 title options | Title options with character counts |
| Phase 1: Research | SERP analysis, source mining, outline | Source count, outline sections |
| Phase 2: Fact Check | URL verification, claim validation | Verified %, flagged claims |
| Phase 3: Draft | First draft with brand voice | Word count, citation density |
| Phase 3.5: Visuals | Charts, image generation (if opted in) | Visual count, chart specs |
| Phase 4: Validation | Hallucination detection | Zero hallucinations confirmed |
| Phase 5: Structure | Grammar, readability, brand compliance | Compliance status |
| Phase 6: SEO | Keyword placements, meta tags | Placement checklist, GEO score |
| Phase 6.5: Humanize | AI pattern removal, personality | Burstiness score |
| Phase 7: Review | 5-dimension quality scoring | Score breakdown, pass/fail |
| Phase 8: Output | .docx generation, tracking, delivery | Output location, final metrics |
(SYNTHETIC EXAMPLE — fabricated for illustration; never reuse these numbers.)
Scenario: Create 1 thought leadership article for the AcmeMed brand
/contentforge:cf-style-guide
Provide: Brand name (AcmeMed), Industry (Healthcare), Voice (Authoritative), Tone (Professional), Terminology, Guardrails
/contentforge "AI-Powered Diagnostics in Precision Medicine" --type=article --brand=acmemed --audience="Healthcare Executives" --keyword="AI diagnostics precision medicine"
ContentForge generates 4-5 title options:
You select Option 1 → Pipeline starts with that title as the anchor.
/contentforge:publish --platform=webflow
--title and --sources to shave the interactive steps)Pipeline: 10 phases plus Step 0.5 (Title Curation); 10 quality gates. Phase
agents are defined in agents/*.md and enumerated by scripts/plugin-metadata.py --section pipeline. Post-pipeline agents include Batch Orchestrator, Social
Adapter, and Translator.
Quality target: composite Reviewer score ≥7.0 to pass (industry-adjusted per
config/scoring-thresholds.json); max 2 loops per edge, 5 total; three-layer
verification (Fact Checker → Scientific Validator → Reviewer).