Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

135 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ContentForge

You need to ship 30 articles this quarter that pass GPTZero, sound human, cite real sources, and route to the right internal pages. Your team is three people. You have nine weeks. Your last "AI-written" batch got flagged by the editor for hallucinated stats.

Run /contentforge:create-content against each topic. The 10-phase pipeline produces a publication-ready .docx with 41-pattern humanizer, fact-checker subagent, three-category internal linking, and C2PA provenance for EU AI Act compliance — in 30–60 minutes per piece on Claude Opus 4.8. No re-edits for AI voice. No hallucinated citations. No orphan content.

Open-source enterprise content production pipeline — 22 skills · 13 specialist agents · 10 quality gates · 41-pattern AI-detection humanizer. Built for marketing teams producing high volumes of long-form content that need brand voice consistency, citation integrity, and an internal-link strategy that turns content into a funnel. Installs on Claude Code (CLI + IDE), Anthropic Cowork, OpenAI Codex, Cursor 2.5+, GitHub Copilot CLI, Google Antigravity 2.0, Hermes Agent, and OpenClaw + 35+ Agent Skills platforms. Created by Indranil Banerjee · LinkedIn · X.

Version License Stars Forks Issues Last commit Tests Platforms Cowork EU AI Act Sponsor

🆕 Just shipped — v3.19.3 (August 9, 2026): the documentation caught up with the repo. TESTING-GUIDE.md had drifted to roughly the v3.8.0 state — it told reviewers to expect the skill and command counts from eleven releases ago, so a correct install "failed" the checklist, and it still tested a SessionStart hook and a setup.py removed back in v3.9.0. That guide is now accurate, section 8 verifies the intended zero-hook silence instead of a hook set that no longer exists, and SUBMISSION.md / COWORK-GUIDE.md counts are corrected. To stop this recurring, tests/test_doc_counts.py derives skill/agent/command counts from the filesystem and fails the build if any live doc disagrees — while leaving dated release entries at their ship-time numbers. 22 skills, 224 tests. Full changelog →

Previously — v3.19.2 (August 8, 2026): the references/ contract is now machine-enforced. v3.19.1 moved worked examples and troubleshooting into 10 per-skill references/ files, which made 24 section-scoped pointers the only route to that content — and nothing verified they still led anywhere. tests/test_skill_references.py adds five guards: every pointer resolves to a real file, every cited section matches a real heading, no reference file goes uncited, every pointer carries the (in this skill's directory) disambiguator that separates a skill's own references/ from the plugin root's, and no content is duplicated between a skill body and its own reference. Each guard was verified to fire against a planted defect rather than assumed to work — and the duplication guard caught the one instance already shipped, cf-style-guide's manual-input prompt list, now deduped with the skill body as canonical. 22 skills, 222 tests. Full changelog →

Previously — v3.19.1 (August 7, 2026): advisory-era coherence + a context-efficiency refactor. A follow-up sweep closed out the last references to the retired 0.7 burstiness target in utilities/ and removed a dead scoring-config key, plus two new guard tests pin markdown-image exclusion in link counting and the AI-detectability rating's end-to-end wiring. The five largest SKILL.md bodies (cf-style-guide, cf-social-adapt, cf-brief, contentforge, cf-analytics) are slimmed to ≤500 lines per Agent Skills guidance — worked examples, templates, and troubleshooting moved into 10 new references/ files with zero content loss, so every Agent Skills platform loads less context per skill. Tests 215 → 217. Full changelog →

# Install in Claude Code (CLI or VS Code/JetBrains extension):
/plugin marketplace add indranilbanerjee/neels-plugins
/plugin install contentforge@neels-plugins

# Install in Cowork: use the Plugins panel in the UI -- /plugin slash
# commands DON'T work in Cowork (or Claude.ai / Claude Desktop).
# Open Plugins panel -> Add marketplace -> paste indranilbanerjee/neels-plugins
# -> Install ContentForge from the listed plugins.

# Install on Hermes Agent (Nous Research):
hermes plugins install indranilbanerjee/contentforge

# Install on OpenClaw:
openclaw plugins install git:github.com/indranilbanerjee/contentforge

If ContentForge saves your team time, give it a star ⭐ — it's the single thing that helps other marketing teams find it.


Why ContentForge

Most AI writing tools produce one draft, in one tone, with no quality gates. The output reads like AI, factual claims are unverified, internal links don't exist, brand voice drifts, and the file format is markdown when the editor wants Word. ContentForge fixes this end-to-end:

Capability Why it matters
10-phase pipeline with a quality gate after every phase Bad output is caught and re-run before it propagates downstream
41-pattern AI-detection humanizer + self-critique meta-pass Output reads human, not AI — measured advisory tell-scan + burstiness metrics (text-metrics.py --ai-tell-scan)
Fact-checker subagent verifies URLs and cross-references claims Citations work and aren't hallucinated
Three-category internal linking (topical / commercial / authority) Content becomes a funnel, not a stranded page
Real .docx output with embedded SEO + Quality + Production + Internal-Link appendices Editor / design team gets a working Word file, not markdown
C2PA content provenance signing for EU AI Act Article 50 compliance Long-form AI-written content distributed in EU markets needs provenance from 2 Aug 2026

Supported surfaces (v3.19.3)

Platform Install command Manifest path Status
Claude Code CLI + IDE extension /plugin install contentforge@neels-plugins .claude-plugin/plugin.json Full support (canonical for solo devs)
Anthropic Cowork Plugins panel in UI → Add marketplace → indranilbanerjee/neels-plugins → Install ContentForge same .claude-plugin/ files Recommended for teams/contentforge:cf-cowork-setup wires Google Drive for team-shareable output
OpenAI Codex CLI + IDE + App codex plugin marketplace add indranilbanerjee/neels-plugins then codex plugin install contentforge@neels-plugins .codex-plugin/plugin.json (published OpenAI schema) Full skills + MCP support
Cursor 2.5+ In any Cursor Agent chat: /add-plugin contentforge@https://github.com/indranilbanerjee/contentforge .cursor-plugin/plugin.json (verified Cursor 2.5+ JSON Schema) Full skills + agents + commands support
GitHub Copilot CLI copilot plugin marketplace add indranilbanerjee/neels-plugins then copilot plugin install contentforge@neels-plugins .github/plugin/plugin.json (Copilot also recognizes .claude-plugin/plugin.json as fallback) Full skills + MCP support
Google Antigravity 2.0 CLI + IDE agy plugin install https://github.com/indranilbanerjee/contentforge gemini-extension.json (at repo root, per Google's reference pattern) Full skills + hooks support
Hermes Agent (Nous Research) — Desktop + CLI on macOS / Windows / Linux hermes plugins install indranilbanerjee/contentforge plugin.yaml + __init__.py at repo root (Hermes native spec) Native plugin — adapter walks skills/ at register time and exposes all 22 skills via ctx.register_skill(). Targets Hermes Desktop v0.15.2+ (public preview June 2 2026).
OpenClaw (formerly Clawdbot / Moltbot) openclaw plugins install git:github.com/indranilbanerjee/contentforge openclaw.plugin.json at repo root (also auto-detects .claude-plugin/plugin.json as Claude-compatible bundle) Native plugin via openclaw.plugin.json; skills field points at ./skills.

Why this works: Agent Skills became an open standard in December 2025 (41+ agent products by June 2026). All 21 SKILL.md files in ContentForge are platform-portable as written. The sibling manifests are thin platform-specific wrappers around the same skills/ directory — no skill duplication.

Works on 35+ additional Agent Skills platforms without per-platform manifests — Goose (Block), OpenHands, OpenCode (sst), Junie (JetBrains), Gemini CLI, Roo Code, Cline/Windsurf, Kiro, Amp, Letta, Mux, Factory, Workshop, Tabnine, Mistral Vibe, and more. Point any Agent-Skills-compatible client at https://github.com/indranilbanerjee/contentforge/tree/master/skills and all 21 ContentForge skills are immediately discoverable.


Quick start

1. Install the plugin

In Claude Code (CLI or VS Code/JetBrains extension):

/plugin marketplace add indranilbanerjee/neels-plugins
/plugin install contentforge@neels-plugins

In Anthropic Cowork:

  1. Open the Plugins panel in the Cowork UI (sidebar / settings)
  2. Click Add marketplace, paste indranilbanerjee/neels-plugins
  3. After the marketplace syncs, find ContentForge in the listed plugins and click Install
  4. Then run /contentforge:cf-cowork-setup once to wire Google Drive as your team's output destination

/plugin slash commands work only in Claude Code (CLI + IDE extension). They do NOT work in Cowork, Claude.ai web, or Claude Desktop — use UI navigation in those environments. The /contentforge:* skills (like /contentforge:create-content) work in all environments where plugins are loaded; only the /plugin management family is Claude-Code-only.

2. Turn on auto-update (one-time, recommended)

Third-party marketplaces — including this one — have auto-update OFF by default in Claude Code. When v3.12.6 is the marketplace's latest and you're still running v3.12.0, nothing tells you. There's no banner, no badge, no notification. So the first thing to do after install is enable updates:

Open /plugin, go to the Marketplaces tab, find neels-plugins, and toggle Enable auto-update. Done — Claude Code will refresh and pull new ContentForge releases at startup from now on, prompting you to run /reload-plugins to pick up changes mid-session (no full restart, conversation context preserved).

If you'd rather update manually each time instead, see the Updating section below.

3. Set up your first brand

/contentforge:brand-setup

The agent walks you through brand voice, terminology, guardrails, citation rules, internal-linking site structure, and (if you want commercial impact) the brand_pages block — your product/service URLs, conversion CTAs, and authority pages. It saves a brand-profile.json to ~/.claude-marketing/<brand-slug>/.

4. Generate content

/contentforge:create-content

The skill prompts you for content type, brand, topic, target word count, and audience. It then runs 10 phases via specialized subagents (research → fact-check → draft → visuals → validate → proofread → SEO → humanize → review → output), enforces a quality gate after each phase, and writes a real .docx you can hand to your editor or design team.

5. Find your output

ContentForge now writes the finished .docx to two places (v3.12.3+):

User-visible copy — this is the one to open:

~/Documents/ContentForge/<brand-slug>/<content-type>/<YYYY-MM>/<slug>.docx

This lives in your normal Documents folder, visible in Windows Explorer / macOS Finder / Linux file managers by default. Override the root with the CONTENTFORGE_PUBLISH_DIR env var (e.g. point at a Dropbox or team-share path). Run /contentforge:output-folder any time to print the absolute path and open the folder in the OS file manager.

Internal tracking copy — the system-of-record for analytics/audit skills:

~/.claude-marketing/<brand-slug>/tracking/outputs/<YYYY>/<MM-MonthName>/
└── <slug>_v1.0.docx

The intermediate phase artefacts (research brief, fact-check report, draft, SEO scorecard, review report, etc.) plus rendered chart PNGs land alongside the tracking copy under ~/.claude-marketing/<brand-slug>/output/<content-type>/<YYYY-MM-DD>/. The .docx includes the body, references, and four appendices — A SEO Scorecard, B Quality Scorecard, C Production Details, D Internal Link Map.

Bug fix in v3.12.3: earlier versions only wrote to the hidden ~/.claude-marketing/ dotfolder, which Windows Explorer hides by default. Multiple users reported "the file isn't saving on local drive" — it was saving, just somewhere they couldn't see. The dual-copy fix is the resolution; /contentforge:output-folder is the quick-reveal command.

6. If the run gets interrupted, resume it

The 10-phase pipeline runs 20–60 minutes end to end. If the session terminates partway through (context-window exhaustion, network blip, Ctrl-C, machine sleep), v3.12.3+ saves each completed phase to disk via scripts/checkpoint-manager.py. Resume the run with:

/contentforge:resume                 # auto-picks the most recent in-progress run for the active brand
/contentforge:resume <run-id>        # pick a specific run from `checkpoint-manager.py list`

The resumer reloads the saved Phase 1..N outputs and continues from Phase N+1 — no re-running phases that already completed. (Earlier versions had no checkpointing — an interruption meant starting over from Phase 1.)


What ContentForge does (the 10-phase pipeline)

0.5  Title Curation       → 4-5 SERP-aware title options; user selects
 1   Research              → 5+ verified sources, competitive analysis
 2   Fact Checking         → URL verification, claim cross-reference
 3   Content Drafting      → SME-calibrated first draft using industry pack
 3.5 Visual Asset Annotator → matplotlib charts from verified data + visual markers
 4   Scientific Validation → hallucination check, domain rules, regulatory
 5   Structuring & Proofread → grammar, readability, brand compliance
 6   SEO/GEO Optimization  → keywords, meta tags, schema, internal links (3 categories)
 6.5 Humanizer             → 41-pattern AI-detection catalog + self-critique
 7   Review                → 5-dimension scoring (Content, Citation, Brand, SEO, Readability)
 8   Output Manager        → real .docx with embedded scorecards + link map

Each phase has a quality gate. If a gate fails, the orchestrator loops back to the offending phase (max 5 loops per pipeline). All phases run via the Task tool against dedicated subagent definitions in agents/01-researcher.md through agents/08-output-manager.md — there is no single-pass shortcut.

Realistic timing: FAQ 30–35 min · article 35–45 min · whitepaper 45–75 min · research paper 60–90 min. The README used to claim "20–30 minutes for everything" — that was too optimistic and is no longer accurate.


Internal linking — the three categories (v3.9.5)

ContentForge is a marketing system, not a search-engine pipeline. Informational links alone don't drive any commercial outcome. v3.9.5 introduced three independently-scored link categories:

Category What it does Brand profile field
Topical (informational) Link to related content on the brand's own site seo_preferences.internal_linking.{sitemap_url,page_registry,pillar_pages}
Commercial (revenue) Link a natural anchor in the body to the brand's product/service/program page seo_preferences.brand_pages.product_or_service_pages
Conversion (funnel handoff) One audience-matched CTA near the end (request MSL, book demo, talk to sales, subscribe) seo_preferences.brand_pages.conversion_pages
Authority (optional) Hyperlink the brand's first name occurrence to the about / leadership page seo_preferences.brand_pages.authority_pages

The SEO agent emits typed <!-- INTERNAL-LINK: type=... | anchor=... | url=... --> markers; the .docx generator renders each as a real Word hyperlink, color-coded by type (topical blue, commercial green, conversion purple, authority slate). Where the brand has not provided a URL, the marker stays as a visibly-distinct red [anchor] [LINK TBD: type] placeholder — the human reviewer fills it in before publication, instead of the link opportunity being silently skipped.

Auto-harvest (v3.19.0): /contentforge:brand-setup now runs scripts/harvest-brand-pages.py against the brand's website — a stdlib, robots-respecting crawler that returns an HTTP-verified page inventory (service/conversion/authority pages) plus verbatim brand_facts (one source URL per fact; where pages disagree, both versions are kept with an inconsistency_note for you to resolve, never silently merged). One confirmation step and it's saved straight into the brand_pages block above. If you decline, the crawl fails, or the brand genuinely has no site, harvest_status records exactly which — honestly, never as a silent skip.

Deep-link rule + thin-brand_pages guard: the researcher (Phase 1) also builds a live Internal-Link Inventory of deep brand URLs the piece could naturally reference, HTTP-verified on the day of the run. Phase 6 requires ≥2 deep links (not just the homepage) whenever the brand's site has them — if brand_pages is empty or homepage-only, Phase 6 now falls back to that Phase 1 inventory, then a just-in-time sitemap fetch, instead of silently skipping commercial linking.

Configure once per brand:

"seo_preferences": {
  "internal_linking": {
    "page_registry": [
      {"url": "https://yoursite.com/resources/your-pillar-guide", "topic": "pillar topic", "type": "pillar"}
    ],
    "pillar_pages": ["https://yoursite.com/resources/your-pillar-guide"]
  },
  "brand_pages": {
    "product_or_service_pages": [
      {"url": "https://yoursite.com/programs/access", "topic": "patient access program", "category": "program",
       "anchor_text_hints": ["access program", "affordability assistance"]}
    ],
    "conversion_pages": [
      {"url": "https://yoursite.com/contact/msl", "purpose": "request MSL", "audience": "HCP",
       "anchor_text_hints": ["request a Medical Science Liaison consult"]}
    ],
    "authority_pages": [
      {"url": "https://yoursite.com/about/medical-affairs", "purpose": "medical affairs leadership", "audience": "HCP"}
    ]
  }
}

The reviewer (Phase 7) scores 6a Topical / 6b Commercial / 6c Conversion independently. Categories the brand has not configured score N/A and don't penalize — but a brand with a website whose brand_pages was never harvested is now a scored deficiency, not an N/A free-pass; homepage-only linking caps the 6b sub-score with a mandatory finding; and any dead internal-link URL is a hard publish-blocking FAIL. The agent must produce useful link markers (real URLs or placeholders) to earn credit.

See config/brand-registry-template.json for the full schema.


Run a real white paper — worked example

/contentforge:create-content

When prompted, supply:

  • Brand: acme-pharma (must already exist via /contentforge:brand-setup)
  • Content Type: whitepaper
  • Topic: Pharmacovigilance for HER2-Directed ADCs in Community Oncology
  • Target Audience: Community medical oncologists, oncology pharmacists
  • Word Count: 3500-4200
  • SEO Keywords: ADC pharmacovigilance, T-DXd ILD monitoring

The pipeline runs ~60 min. When it finishes you get:

~/.claude-marketing/acme-pharma/output/whitepaper/2026-05-13/whitepaper.docx

Open it in Word. You will see the body, the references, then Appendix A (SEO scorecard with keyword density, meta tags, schema), Appendix B (5-dimension quality scorecard), Appendix C (production details — phase timings, em-dash count, AI signal score), and Appendix D (internal link map showing every topical / commercial / conversion / authority link the agent placed, with target URLs and anchor text). All inline hyperlinks are clickable in Word.


Commands (visible in the Customize sidebar)

These 9 commands are the user-facing entry points:

Command What it does
/contentforge:create-content Run the full 10-phase pipeline for a single piece
/contentforge:content-brief Generate a research-backed brief with keyword data, competitor analysis, outline
/contentforge:social-adapt Repurpose an article into LinkedIn / Twitter / Instagram / Facebook / Threads posts
/contentforge:publish Push to Webflow or WordPress with preview, verification, HTML fallback
/contentforge:translate Translate into 15+ languages preserving brand voice, citations, SEO
/contentforge:brand-setup Configure brand voice, terminology, guardrails, internal linking, brand_pages
/contentforge:audit-content Audit content library for freshness decay and coverage gaps
/contentforge:output-folder Print + open the user-visible output folder (~/Documents/ContentForge/<brand>/) — answers "where did my file go?" (v3.12.3+)
/contentforge:resume Resume an interrupted pipeline run from the last completed phase instead of starting over (v3.12.3+)

Slash command syntax is canonical /<plugin-name>:<command> — the older /cf: shortcuts no longer work as of v3.9.3.


Skills (run via the Skill tool — superset of commands)

Skill Purpose
contentforge Full 10-phase production (the default skill the /contentforge:create-content command invokes)
batch-process Process 10–50+ pieces as a sequential, checkpointed queue — survives interruption, resumes mid-piece
content-refresh Update old content with current data, preserve SEO
cf-brief Research-backed brief with keyword analysis and outline
cf-audit Freshness scoring, decay detection, gap analysis
cf-calendar Production scheduling with deadline tracking
cf-style-guide Import brand voice, generate brand profile JSON
cf-template Create custom content type templates beyond the 8 built-in
cf-variants Generate 3–10 headline / hook / CTA variations with scoring
cf-analytics Quality trends, timing breakdown, brand performance
cf-translate Translate preserving brand voice (15+ languages, 3 levels)
cf-video-script Timestamped scripts for YouTube / TikTok / Instagram Reels
cf-social-adapt Article → social media platform-specific posts
cf-publish Push to Webflow / WordPress
cf-integrations Dashboard of connected vs. available connectors
cf-connect Guided setup for any of 22 supported connectors
cf-add-integration Add a custom MCP connector for any API
cf-switch-backend Switch tracking backend (local / Airtable / Google) with optional data migration
cf-help User guide, pipeline overview, examples, troubleshooting
cf-aeo-check Post-publication AI-citation check — AI Overview presence, own-citation status, extractability audit, deltas over time
cf-cowork-setup One-time Cowork + Google Drive wiring so team runs persist across sessions
cf-environment Detect the runtime environment and show its capability matrix

Architecture

13 agents

Phase Agent Purpose Avg Time
1 Researcher SERP analysis, source mining, outline 6–8 min
2 Fact Checker URL verification, claim cross-reference 4–6 min
3 Content Drafter First draft with brand voice + SME calibration 4–6 min
3.5 Visual Asset Annotator Chart generation, visual markers, asset manifest 3–9 min
4 Scientific Validator Hallucination detection, domain validation 3–9 min
5 Structurer & Proofreader Grammar, readability, brand compliance 2–7 min
6 SEO/GEO Optimizer Keywords, meta tags, AI Overview, 3-category internal linking 3–8 min
6.5 Humanizer 41-pattern AI-detection catalog + self-critique meta-pass 5–8 min
7 Reviewer 5-dimension scoring with comparative ranking 1–4 min
8 Output Manager .docx with hyperlinks, charts, scorecards, link map <1 min
9 Batch Orchestrator Sequential, checkpointed queue coordination post-pipeline
10 Social Adapter Platform-specific repurposing post-pipeline
11 Translator Brand voice mapping, cultural adaptation post-pipeline

Quality scoring (Phase 7 reviewer, 5 dimensions)

Dimension Weight What it measures
Content Quality 30% Depth, originality, audience value, structure, completeness
Citation Integrity 25% Factual accuracy, source quality, formatting, recency
Brand Compliance 20% Voice/tone, terminology, guardrails, POV consistency, industry compliance
SEO Performance 15% Keywords, meta tags, on-page SEO, GEO, schema, internal linking (6a/6b/6c split)
Readability 10% Reading level, sentence variety, paragraph structure, scannability, humanization

Decision thresholds: 9.0+ A publish + repurpose · 7.0–8.9 B publish · 5.0–6.9 C loop back · <5.0 D human escalation.

Three-layer fact verification

Single-pass fact-checking misses 15–20% of hallucinations. ContentForge uses three independent layers — Phase 2 (Fact Checker) verifies sources before drafting, Phase 4 (Scientific Validator) re-verifies the draft against verified sources, Phase 7 (Reviewer) audits factual accuracy as part of holistic scoring. Production runs typically achieve 94–100% factual accuracy with 0 hallucinations.

Industry knowledge packs

10 domain-specific configs at config/industries/ (pharma, BFSI, healthcare, legal, real estate, technology, B2B SaaS, e-commerce, consumer goods, education) calibrate the Content Drafter as a subject-matter expert and give the Scientific Validator domain-specific terminology, evidence standards, regulatory rules, and common pitfalls to check against.

Phase 6.5 Humanizer (the differentiator)

41-pattern AI-detection catalog (7 buckets: content, language/grammar, style, communication, filler/hedging, structure/framing, detector-signal) adapted from Wikipedia: Signs of AI Writing + blader/humanizer. Includes a self-critique meta-pass ("what makes this still obviously AI?") and optional voice calibration from a brand writing_sample field. Typical results: 12–67 patterns removed per piece, AI signal score ≤3/10, em dashes ≤2 per 500 words.

Grounding-first, not trick-first (v3.19.0). The old move — inserting short punchy sentences to raise the burstiness number — is gone: it manufactured the exact aphoristic-maxim tell modern detectors flag. In its place, a Human-Expert Grounding Pass (patterns 36–38) grounds every standing maxim, impersonal assertion, and flat-confidence claim in a specific from the Phase 2 verified ledger — or removes it; nothing is invented for style. Sentence variety is now content-derived: uniform runs get broken by material the content already earns (a caveat standing alone, a source clause folded in), never by content-free filler. Burstiness is reported as advisory context, not a pass/fail gate.

Advisory --ai-tell-scan (v3.19.0). scripts/text-metrics.py --ai-tell-scan runs a deterministic, zero-dependency proxy scan (aphorism density, banned lexemes, connective/participial-opener rate, uniform sentence runs) and reports a LOW / MODERATE / HIGH advisory rating — surfaced in the Phase 6.5 report, the reviewer's Readability sub-score, and the Completion Card. It is never a publish gate, and ContentForge never claims to "beat" any specific detector — see the FAQ and references/ai-detection-signals.md for the full reasoning. When an MCP-connected external detector is available, at most one optional validation pass may run against it; that pass is advisory too.

Model curator (v3.12.2+) — no hardcoded model ids

Frontier models change every ~6 weeks. ContentForge ships a shared registry + resolver so model ids are never hardcoded across scripts: edit scripts/model_registry.json in one place and every script picks up the change next call. Aliases like latest-balanced-anthropic, latest-vision-google, latest-image-google resolve at call time; deprecated ids auto-fall-forward to their replacement; scripts/refresh_models.py polls live provider catalogs and reports drift. See docs/MODEL-CURATOR.md.

python scripts/resolve_model.py --alias latest-balanced-anthropic
python scripts/resolve_model.py --check gemini-2.0-flash      # warns: deprecated, use gemini-3.5-flash

Connectors (MCP integrations)

ContentForge ships with 9 HTTP connectors that work in both Cowork and Claude Code: Notion, Canva, Figma, Webflow, Slack, Gmail, Google Calendar, fal.ai (AI image generation), Replicate (AI image generation). All are opt-in — the plugin works fully without any connectors and produces output locally.

For Cowork users who need Google Sheets / Drive / and ~1000 other SaaS services that have no first-party HTTP MCP, see .mcp.json.connectors-reference for Pipedream / Composio / Zapier / Make.com aggregator paths.

For Claude Code users who want stdio MCPs (Google Sheets via service account, Google Drive, Stability AI, etc.), copy the example config:

cp .mcp.json.example .mcp.json

See CONNECTORS.md for the full reference.


Troubleshooting

Pipeline stops early in --print / one-shot mode

claude --print exits at the first interactive prompt (e.g., title selection). When scripting non-interactive runs, pre-supply every input in the prompt — including the title selection from Phase 0.5. See the validation prompt in examples/ for the pattern.

Pipeline didn't actually invoke subagents (everything happened "in one inference")

Verify v3.9.4 or later is installed (claude plugin list). Pre-v3.9.4 versions had a SKILL.md bug that allowed single-pass generation. The fix mandates Task-tool dispatch per phase.

.docx has no internal links

Check your brand profile has seo_preferences.internal_linking.page_registry (or sitemap_url) populated. For commercial and conversion links, populate seo_preferences.brand_pages.product_or_service_pages and conversion_pages. If those are empty, the agent has nothing to link to. Re-run /contentforge:brand-setup to fill them in.

Pipeline fails at Phase 1 (Research)

Topic too niche, no search volume, or WebSearch not enabled. Broaden the topic or use a related keyword with more search volume.

Content score below 7.0 and keeps looping

Review Phase 7 Quality Scorecard for the weakest dimension. Most common cause: weak brand profile. Run /contentforge:brand-setup and verify voice, guardrails, and audience are filled in. For regulated industries (pharma, BFSI, healthcare, legal) the threshold is 8.0 and guardrails are required.

Phase 6.5 Humanizer degrades SEO

Expected — the humanizer auto-loops back to Phase 6 once if SEO degrades, and the second pass usually balances both.

Connector not working

Run /contentforge:cf-integrations to check status. Run /contentforge:cf-connect <name> for guided setup.

Manifest install error: "repository field is an object" or "$schema unknown"

Fixed in v3.9.2. Update: claude plugin marketplace update neels-plugins && claude plugin update contentforge@neels-plugins.

/cf: shortcut commands no longer work

As of v3.9.3 the canonical namespace is /contentforge:. The /cf: prefix was removed in the namespace sweep — use /contentforge:create-content, /contentforge:brand-setup, etc.


Updating

If you see "/plugin isn't available in this environment" — you're in Cowork, Claude.ai web, or the Claude Desktop app. The /plugin slash command for plugin management is only supported in Claude Code (CLI + IDE extension at claude.com/code, npm install -g @anthropic-ai/claude-code). Everywhere else — Cowork, claude.ai, Claude Desktop, mobile — plugins are managed through the UI panel, not slash commands.

The plugin IS installed (your /contentforge:* skills still work in chat); only the management command is unavailable. Fix:

  1. In Cowork — open the Plugins panel (sidebar / Settings → Plugins). Find ContentForge → look for Update / Refresh. If there's no Update option, Remove the plugin, then re-install it from the neels-plugins marketplace — the re-pull fetches the latest version. If the marketplace itself is stale, also Remove + re-add the marketplace.
  2. In Claude.ai web or Claude Desktop — same UI flow as Cowork: open the chat's Plugins UI button at the bottom → Manage plugins → Remove + Add to re-pull.
  3. For slash-command management — switch to Claude Code (CLI or IDE extension). The plugin runs identically across every Anthropic surface; you're choosing where to type management commands.

Once you're in Claude Code, the rest of this section applies.

Third-party marketplaces (including this one) have auto-update DISABLED by default in Claude Code. Anthropic's official marketplace updates itself; ours does not. So when v3.9.5 is on the marketplace and you're still running v3.9.4, nothing tells you — there is no update banner, no badge, no notification.

You have two options:

Option 1 (recommended) — turn auto-update on for our marketplace once

Run /plugin, go to the Marketplaces tab, find neels-plugins, and toggle Enable auto-update. From then on, Claude Code refreshes the catalog at startup and pulls the latest ContentForge automatically. After an auto-update fires you'll be prompted to run /reload-plugins to pick up the changes mid-session.

Option 2 — manual update each time

/plugin marketplace update neels-plugins
/plugin uninstall contentforge@neels-plugins
/plugin install contentforge@neels-plugins
/reload-plugins

/reload-plugins applies the change without a full Claude Code restart and preserves your current conversation context.

If a version stays the same but content changed

This happens during fast-iteration debugging. Clear the cached copy and reinstall:

rm -rf ~/.claude/plugins/cache/neels-plugins
/plugin install contentforge@neels-plugins
/reload-plugins

Installs in Cowork

Cowork is the Anthropic Desktop computer-use product (macOS/Windows). It supports third-party plugins from custom marketplaces — same /plugin marketplace add install pattern. Cowork has local filesystem access, so the full ContentForge pipeline including the generate-docx.py step runs and produces real .docx files, just as in Claude Code CLI/Desktop. The only Cowork limitation that affects ContentForge is HTTP MCPs only (no stdio/npx) — which is why our .mcp.json.connectors-reference documents Pipedream / Composio / Zapier / Make.com aggregator paths for any service that doesn't ship a first-party HTTP MCP.


FAQ

Q: How does ContentForge compare to ChatGPT or Claude directly? Single-prompt tools produce content in 30 seconds with ~15–20% hallucination rate, generic voice, and visible AI patterns. ContentForge takes 35–60 minutes but applies three-layer fact verification, brand voice calibration, AI-pattern removal, and dimensioned quality scoring. Each piece comes with a transparent scorecard.

Q: Can I use ContentForge without Google Drive / Sheets? Yes. Three tracking backends: Google Sheets + Drive, Airtable, or local filesystem. Local works zero-config. Switch any time with /contentforge:cf-switch-backend.

Q: How much does it cost to run? Plugin is MIT-licensed and free. Claude API costs are typically $1–4 per piece depending on length and how many quality-gate loops are needed.

Q: What content types are supported? 8 built-in: articles (1,500–2,000 words), blog posts (800–1,500), whitepapers (2,500–5,000), FAQs (600–1,200), research papers (4,000–8,000), video scripts (duration-driven, 15s–10min), case studies (1,200–2,000, with a client-data provenance rule), and newsletters (500–1,200, subject-line package + one-CTA rule). Use /contentforge:cf-template to add custom types.

Q: Can I batch multiple pieces? Yes — /contentforge:batch-process queues 10–50+ pieces and runs them one at a time, fully gated and checkpointed per phase. The win is unattended throughput and interruption-proof resume, not concurrency: pieces do NOT run simultaneously (shared per-brand state and API limits make that unsafe).

Q: How do I add internal links to a brand's own pages? Populate seo_preferences.brand_pages.{product_or_service_pages, conversion_pages, authority_pages} in the brand profile. The SEO agent uses these to insert commercial and conversion links into the content; the .docx renders them as inline hyperlinks color-coded by category. See the Internal linking section above.

Q: How does the AI-detectability score work? Honestly: we don't optimize against any detector. ContentForge writes so there's little to detect — the Phase 6.5 Human-Expert Grounding Pass grounds every claim in a specific from the verified research (a real perplexity-raising move, not a trick), and sentence variety comes from the content, not from inserted filler. On top of that, scripts/text-metrics.py --ai-tell-scan runs a deterministic, dependency-free proxy scan for known detector-signal patterns (aphorism density, banned lexemes, connective/participial openers, uniform runs) and reports an advisory LOW / MODERATE / HIGH rating in the Phase 6.5 report, the reviewer scorecard, and the Completion Card. If an external AI-detector is reachable via a connected MCP, at most one optional validation pass may also run — still advisory. None of this is ever a publish gate, and we never promise to "beat" any specific detector — the evidence shows one-shot static tricks do little (and can backfire) while genuine grounding is durable. Full reasoning in references/ai-detection-signals.md.


Cross-platform compatibility

Platform Status Notes
Anthropic Cowork + Google Drive Recommended for teams The friendliest UX for non-CLI marketing teams. /plugin commands + HTTP MCPs work natively. Pipeline outputs route to Google Drive (via Anthropic platform integration in Settings → Integrations) instead of the Cowork sandbox — files persist, are team-shareable, and accessible from any device. One-time setup: /contentforge:cf-cowork-setup after install.
Anthropic Cowork (without Drive) ⚠️ Single-session only All ContentForge commands run, but generated files land in the Cowork Linux sandbox — visible during the session, gone after. Connect Google Drive in Cowork Settings → Integrations (60 seconds) to upgrade to the team-ready setup above.
Claude Code CLI ✅ Full local support Reference environment for developers. Files land in ~/Documents/ContentForge/<brand>/... on your host. Every feature tested here first.
Claude Code IDE extension (VS Code / JetBrains) ✅ Full local support Same as CLI; uses host filesystem.
Standard Claude chat (browser claude.ai OR installed Claude Desktop app) /plugin slash commands not available Plugins still install and run via the Plugins UI button at the bottom of the chat.
OpenAI Codex CLI + IDE + App ✅ Full skills + MCP support codex plugin install contentforge@neels-plugins. Same 22 skills, same scripts, same MCP catalog as Claude Code.
Cursor 2.5+ ✅ Full skills + agents + commands /add-plugin contentforge@https://github.com/indranilbanerjee/contentforge in any Cursor Agent chat.
GitHub Copilot CLI ✅ Full skills + MCP copilot plugin install contentforge@neels-plugins. Custom slash commands not yet supported in Copilot CLI (open issue) — invoke skills by natural language.
Google Antigravity 2.0 CLI + IDE ✅ Full skills + hooks agy plugin install https://github.com/indranilbanerjee/contentforge. Subagents need /agent CLI spawning; slash commands fold into skills.

How to pick

  • For agencies, in-house content teams, or anyone whose team isn't deep in CLI tools → Use Cowork + Drive. Run /contentforge:cf-cowork-setup once, then everyone uses /contentforge:create-content normally and outputs land in your shared Drive folder. No local installs needed per team member.
  • For solo developers or technical content engineers → Use local Claude Code (CLI or IDE extension). Files land in ~/Documents/ContentForge/ on your machine. Git-friendly. No Drive setup needed.
  • For shipping to clients with strict on-prem-only data policies → Use local Claude Code (no cloud dependency).

Run /contentforge:cf-environment after install to see exactly what's available in your specific runtime, with a per-capability matrix. Run /contentforge:cf-cowork-setup if you're in Cowork and haven't wired Drive yet.


Star history

Star History Chart


About the maintainer

ContentForge is built and maintained by Indranil “Neel” Banerjee — a builder and systems thinker with roots in information security and a second act across growth marketing, enterprise digital operations, and AI transformation. This repository is one public implementation of a broader focus on trustworthy AI execution: preserve context, make evidence inspectable, and keep people at consequential decision points.

If ContentForge saves your team time, ⭐ star the repo. Sharing it on LinkedIn or X helps people discover the work too.


Contributing

PRs welcome — especially on the 41-pattern AI-detection catalog, industry-specific content templates, and platform-specific schema improvements. See CONTRIBUTING.md for the workflow, .github/PULL_REQUEST_TEMPLATE.md for the PR checklist, and TESTING-GUIDE.md for the per-phase test checklist. All contributors are expected to follow the Code of Conduct. Security issues: use Private Security Advisories per SECURITY.md — do not file public issues for vulnerabilities.


Neelverse Marketing Suite

ContentForge is part of a three-plugin suite by Indranil Banerjee that share the same brand profiles and marketplace. Each plugin is fully standalone — install any one by itself and every capability it documents works; the others simply add more tools:

Plugin What it does
Digital Marketing Pro End-to-end engagement methodology — 12-Part Strategy Flow, Four Core Documents, 24 agents, 158 skills
ContentForge (this plugin) Publication-ready content via 10-phase pipeline, fact-checker, 41-pattern AI-detection humanizer, .docx export with C2PA signing
SocialForge Social media calendar with AI image (Vertex AI Nano Banana Pro) + video (WaveSpeed Kling v3.0 Pro) generation, C2PA signing
/plugin marketplace add indranilbanerjee/neels-plugins
/plugin install digital-marketing-pro@neels-plugins
/plugin install contentforge@neels-plugins
/plugin install socialforge@neels-plugins

Release notes

v3.19.3 (2026-08-09)Documentation caught up with the repo. TESTING-GUIDE.md had drifted to roughly the v3.8.0 state: it expected 19 skills and 7 commands (actual: 22 and 9), so a correct install "failed" its checklist; section 2.3 tested a SessionStart hook and a setup.py both removed in v3.9.0; section 2.4's file counts matched no directory; and section 8 tested a hook set that ships empty by design — it now verifies that intended silence and points at the Phase 2.5 validator and Phase 7 reviewer where those checks actually run. SUBMISSION.md corrected (19→22 skills, 7→9 commands, 16→10 industry knowledge packs). COWORK-GUIDE.md skill total corrected. New tests/test_doc_counts.py derives counts from the filesystem and fails the build if any live doc disagrees, while leaving dated release entries at their ship-time numbers (plant-check verified, mirrored into DMP and SocialForge). Sponsorship wiring added: .github/FUNDING.yml, README sponsor section, SPONSORS.md. No runtime behaviour change. Tests 222 → 224.

v3.19.2 (2026-08-08)The references/ contract is machine-enforced. v3.19.1's refactor made 24 section-scoped pointers the only route to the relocated examples, transcripts, and troubleshooting, with nothing verifying they still resolved — a renamed heading or moved file would have failed silently at runtime. New tests/test_skill_references.py adds five guards: pointers resolve to real files, cited section "…" names match real headings, no reference file goes uncited, every pointer carries the (in this skill's directory) disambiguator, and no run of content lines is duplicated between a skill body and its own reference. Every guard was plant-check verified against a deliberately broken copy. The duplication guard caught the one instance v3.19.1 shipped — cf-style-guide's 7-item manual-input prompt list existed verbatim in both the body and references/cli-usage-examples.md; the body copy is canonical (it carries the E-E-A-T authorless opt-out Step 5 depends on) and the reference now points at it. No runtime behaviour change. 22 skills. Tests 217 → 222.

v3.19.1 (2026-08-07)Advisory-era coherence + context-efficiency refactor. utilities/translation-manager.md and utilities/analytics-tracker.md no longer reference the retired 0.7 burstiness target (burstiness has been advisory-only since v3.19.0); the orphaned min_sentence_variety_score key removed from config/scoring-thresholds.json. Two new guard tests: markdown image syntax is confirmed excluded from internal-link counting, and the AI-detectability advisory rating's reviewer → Completion Card → Phase 6.5 wiring is pinned end to end. Context-efficiency refactor: the five largest SKILL.md bodies (cf-style-guide, cf-social-adapt, cf-brief, contentforge, cf-analytics) slimmed to ≤500 lines per Agent Skills guidance — verbatim example transcripts, templates, and troubleshooting moved into 10 new per-skill references/ files with 24 read-when pointers; zero content loss, gates/contract/Completion Card untouched. 22 skills. Tests 215 → 217.

v3.19.0 (2026-08-07)Client-site intelligence + internalized humanizer. scripts/harvest-brand-pages.py (stdlib, robots-respecting) auto-crawls a brand's website for brand_pages and verbatim, source-cited brand_facts in one confirmation step; the researcher's new Step 0 Client Site Reconnaissance builds a live Internal-Link Inventory and Gate 1 now requires ≥3 verified deep brand URLs when the brand has a site. Phase 6's thin-brand_pages guard means an empty or homepage-only page list no longer skips commercial linking — it falls back to the Phase 1 inventory, then a just-in-time sitemap fetch, enforcing a ≥2-deep-link rule. New references/ai-detection-signals.md internalizes what detectors actually measure; the humanizer catalog grows 35→41 patterns (aphoristic maxims, impersonal assertion, epistemic flatness, perfect parallelism, participial openers, connective-opener density) with a Human-Expert Grounding Pass replacing the old short-sentence burstiness trick. text-metrics.py --ai-tell-scan adds a deterministic, advisory LOW/MODERATE/HIGH detector-signal rating surfaced in the reviewer scorecard and Completion Card — never a publish gate. Reviewer no-free-passes: unharvested brand_pages on a brand with a website is now a scored deficiency, homepage-only linking caps the sub-score, dead internal links hard-fail. Also: layered Cowork/sandbox detection (new linux-sandbox-uncertain tier) and generate-docx.py link telemetry now counts both marker and inline-markdown links. 22 skills. Tests 173 → 215.

v3.18.1–v3.18.2 (2026-07-30)Documentation sweep + anonymity guard. User docs (README, AGENTS.md, USER-GUIDE) had drifted from the v3.18.0 four-capability release — the README skills table, content-type counts, and stale "parallel batch" claims corrected across all three; USER-GUIDE brought current with a What's-new note. Case study and newsletter verified by execution, not just review (checkpoint records, docx author byline, local-tracker round-trip). tests/test_source_anonymity.py added — the suite-wide rule that the methodology's source organization is never named in the repo is now machine-enforced on every run (forbidden strings assembled at runtime, verified to fire on a planted needle). Tests 170 → 173.

v3.18.0 (2026-07-30)Four new capabilities. Author/E-E-A-T byline layer (author_profiles → Phase 3 byline → Person JSON-LD in Phase 6; authorless runs are flagged, never silent). Case Study and Newsletter as built-in content types 7–8 — case studies enforce a client-data provenance rule (fabricating a client metric halts the pipeline); newsletters map email fields onto the existing Phase 6 gate so no gate is special-cased. New /contentforge:cf-aeo-check closes the loop cf-brief opens: post-publication AI-citation probes, on-page extractability audit, delta history, evidence-routed refresh. 22 skills. Tests 162 → 170.

v3.17.x (2026-07-29–30)The audit series. Line-by-line read of every file, then a functional pass that executed every script, then a cross-file contract audit that treated the plugin as a graph. Highlights: three shipped agents were never dispatched (social-adapter, translator, batch-orchestrator — now wired via Task/subagent_type); video_script registered in the 8 enumerations that rejected it; 12 false “parallel batch” claims corrected (the queue is sequential and checkpointed by design); chart-embed path and storage-resolver fixes; stale 2025 AI-search stats replaced with sourced 2026 figures. New tests/test_pipeline_graph.py locks the interconnection graph. Tests 145 → 162.

v3.16.1 (2026-07-12)Self-containment patch. Removed cross-plugin capability references from the skill surface: content-refresh routes pre-refresh diagnosis to ContentForge's own cf-brief (keyword + competitor re-research) alongside cf-audit instead of recommending another plugin's skills. Suite table in this README corrected (sibling stats were stale) and now states each plugin is fully standalone. No runtime change.

v3.16.0 (2026-07-07)Reliability & Truth release. Five-layer deep audit implemented end to end. Orchestration: checkpointing wired into the master skill (Step 0 init + per-phase saves + loop counters + pending_rework), per-phase input/output contract table with loop targets, orchestrator-owned gates verified via new scripts/text-metrics.py, no-brand and no-web modes, honest sequential batch orchestrator (success = reviewer-approved ≥7.0). Agents: user interaction hoisted out of subagents (title curation + image approvals now orchestrator-owned), fact-checker paywall/SERP fixes, drafter body-format contract, structure-manifest guard between SEO and humanizer phases, reviewer industry weights fully specified, ~50 dangling slash references fixed. Skills: connector docs now match the shipped empty .mcp.json, cf-brief rewritten for AEO/GEO (LSI/density dogma removed), EU AI Act Article 50 disclosure step in cf-publish, YouTube Shorts + TikTok long-form in cf-video-script, command/skill twins collapsed to thin wrappers. Configs: scoring-thresholds.json is now the single source of truth (10 gates incl. new Phase 8 gate), humanizer catalog 29→35 patterns + defined AI-signal formula (evasion framing removed), social specs add TikTok/Bluesky/YouTube Shorts + per-platform ai_disclosure, all 10 industry packs enriched (FDA CCN, OCR tracking-tech, SEC Marketing Rule) and dated. Scripts: new _common.py (single slugifier — fixes the Cowork sync-path bug, atomic JSON writes, UTF-8 console guard, real exit codes), checkpoint-manager meta/loop/pending-rework, pipeline-tracker run_id keying, .docx image embedding + TOC field + page footer + nested lists + underscore emphasis, Airtable formula-injection fix, Drive pagination. Tests 53 → 143.

v3.15.3 (2026-06-28) — README sync patch. Adds v3.15.2, v3.15.1 entries to these release notes (they shipped without README updates here) + extends tests/test_release_consistency.py to also lock the ## Supported surfaces (vX.Y.Z) heading + anchor links to canonical version, so this gap is caught in CI next time. No runtime change.

v3.15.2 (2026-06-28) — June 2026 market-refresh sync. Mirrors DMP v3.14.0 sweep: model registry rebuilt to 47 entries verified against Anthropic / OpenAI / Google primary docs (new actives: Claude Opus 4.8, GPT-5.5 family, gpt-image-2, Gemini 3.1 Pro Preview, Nano Banana Pro/2 GA, Veo 3.1 Preview); resolver now unconditionally rewrites retired model IDs to their replacement_id; new --check-params scanner flags unsafe temperature / top_p / top_k near Claude Opus 4.7+ targets. Plus docs/MODEL-CURATOR.md refresh with current aliases table + new § "Parameter compatibility — Claude Opus 4.7 and later". Docs-only — zero pipeline change. EvoLink vendor added via community PR.

v3.15.1 (2026-06-09) — Test-infrastructure polish. New tests/test_release_consistency.py (+30 tests; CF total 23 → 53 passing). Catches 7-manifest version drift, README badge/hero callout staleness, CHANGELOG out-of-sync, byte-identical descriptions across 5 Claude-family manifests, install-command presence, critical-section presence, internal-anchor integrity. README hero callout + test badge updated.

v3.15.0 (2026-06-09) — Multi-harness expansion: native Hermes Agent + native OpenClaw + 23-test stdlib suite. Brings ContentForge to parity with DMP's 8-platform native support. Ships plugin.yaml + __init__.py at repo root for Hermes (walks skills/ at register time, exposes all 21 CF skills via ctx.register_skill()); ships openclaw.plugin.json at repo root for OpenClaw native install. Install: hermes plugins install indranilbanerjee/contentforge or openclaw plugins install git:github.com/indranilbanerjee/contentforge. Tests cover plugin.yaml schema, adapter import + register, mock ctx integration, graceful degradation on bad ctx/None, cross-manifest version consistency. Zero impact on existing platforms — each reads only its own manifest path.

v3.14.0 (2026-05-27) — Distribution & context-efficiency polish. Trimmed install-UI descriptions to ~150 chars across all 5 platform manifests + 4 marketplace JSONs. Pain-first README hero. GitHub topics refreshed (cursor-plugin, copilot-cli-plugin, gemini-cli-extension, google-antigravity added for cross-platform discoverability). Context-efficiency callouts inserted in heavy SKILL.md files (grep-before-read, ${CLAUDE_PLUGIN_DATA} directory-list-before-open, offset+limit on partial reads). Skill count corrected 19 → 21.

v3.13.0 (2026-05-27) — Real native manifests for 5 verified surfaces. Ships .codex-plugin/plugin.json (per the published OpenAI schema), gemini-extension.json at repo root (per Google's gemini-cli-extensions/data-agent-kit-starter-pack reference pattern), .cursor-plugin/plugin.json (per the verified Cursor 2.5+ JSON Schema), and .github/plugin/plugin.json (verified GitHub Copilot CLI schema). Adds AGENTS.md at root (auto-loaded by Codex + Antigravity + Copilot + Cursor agent context chains). All 21 skills share via the Agent Skills open standard — no duplication. Replaces the v3.11/v3.12 era invented manifests correctly removed in v3.12.11.

v3.12.11 (2026-05-26) — Honest positioning. Removed the v3.11 / v3.12 era invented manifests + docs/cross-platform-install.md. Zero functional changes; ContentForge behaved identically in Claude Code + Cowork.

v3.10.0 (2026-05-17) — C2PA content provenance for the .docx output for EU AI Act Article 50 compliance (applicable 2 Aug 2026). New --c2pa-sign flag on scripts/generate-docx.py with .docx-embed-if-supported + verifiable .c2pa.json sidecar fallback (c2pa-python 0.32 does not yet support .docx MIME inline, so the sidecar is the pragmatic path). Plus May 2026 AEO reality update in Phase 6 SEO/GEO optimizer (Google AI Overviews 55% prevalence + 61% organic CTR drop, citation source skew by engine, LLMs.txt companion standard, Profound/Otterly/Conductor measurement integration references). Production-cert short pointer added at docs/c2pa-production-cert.md.

v3.9.5 (2026-05-13) — Three-category internal linking. New brand_pages schema for product/service/conversion/authority pages. Real inline Word hyperlinks color-coded by category. Appendix D internal link map. Reviewer scoring split into 6a/6b/6c with no free-pass for missing site structure.

v3.9.4 (2026-05-12) — Fixed pipeline orchestration to actually invoke subagents via Task tool (single-pass generation was skipping quality gates). Added scripts/generate-docx.py for real Microsoft Word output with embedded SEO/Quality/Production appendices.

v3.9.3 (2026-05-09) — Swept all /cf: shorthand to /contentforge: across docs and runtime files for namespace consistency.

v3.9.2 (2026-05-03) — Fixed manifest install format: repository must be a string URL (not npm-shorthand object), $schema field removed (parser rejects unknown top-level keys).

v3.9.1 (2026-05-03) — Cowork-compatible aggregator MCP catalog (Pipedream, Composio, Zapier, Make.com) for Google Sheets/Drive and other services without a first-party HTTP MCP.

v3.9.0 (2026-05-03) — World-class humanizer rebuilt around 35-pattern AI-detection catalog (5 buckets), self-critique meta-pass, optional voice calibration from a brand writing_sample. Removed all 4 global hooks for multi-plugin coexistence.

Earlier versions: see CHANGELOG.md for the full history (v3.0 through v3.8 — social adaptation, CMS publishing, translation, video scripts, content briefs, A/B variants, content audits, calendars, style guides, analytics, visual asset annotator, industry knowledge packs, multi-backend I/O, AI image generation, SERP-informed title curation).


License

MIT — see LICENSE.

Sponsor this project

This plugin is MIT-licensed, free to use commercially, and collects no telemetry. What sponsorship pays for is the unglamorous half of keeping it accurate: platform-API updates when a vendor ships a breaking version, model-registry refreshes when a model is retired, compliance passes when regulatory guidance moves, and issue triage.

If it saves your team time, you can sponsor the work. Sponsors from $25/mo are listed in SPONSORS.md.

Sponsor


Support

Credits

Created by Indranil Banerjee. Built for Claude Code and Anthropic Cowork. Powered by Anthropic Claude.


Made with care by Indranil Banerjee · MIT-licensed · ⭐ Star the repo if it helps you

Humanizer 41-pattern catalog adapted from Wikipedia: Signs of AI Writing (CC BY-SA, WikiProject AI Cleanup) with structure influenced by blader/humanizer (MIT).

About

An open-source editorial production system that researches, verifies, drafts, and delivers publication-ready long-form content with human review and provenance built in.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

21 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages