Cf publish
Open-source enterprise content production plugin — 21 skills, 13 agents, 11 quality gates, 29-pattern AI humanizer, fact-checker, real .docx output with C2PA signing (EU AI Act Article 50 ready). Installs on Claude Code, Cowork, Codex, Cursor, Copilot CLI, Antigravity. By Indranil Banerjee (indranil.in).
npx -y skills add indranilbanerjee/contentforge --skill cf-publishAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 17 stars17 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Publish finished content to Webflow or WordPress via MCP connectors with preview, verification, and HTML export fallback
SKILL.md
17.8 KB, as published. Nobody here has run it
Publish Content — ContentForge CMS Publishing
Push publication-ready content from the ContentForge pipeline directly to your CMS (Webflow or WordPress) via MCP connectors. Preview before publishing, verify post-publish, and fall back to HTML export when no connector is available.
When to Use
Use /contentforge:cf-publish when:
- You have a finished, reviewed content piece (Phase 8 complete, score >=7.0)
- You want to publish directly to Webflow or WordPress without copy-pasting
- You need to schedule content for a future publish date
- You want post-publish verification (URL live, meta tags correct, images loaded)
- You want an HTML export for manual upload when no CMS connector is configured
Do NOT use for:
- Content still in pipeline (must be Phase 8 complete)
- Content flagged for human review (score <5.0)
- Platforms other than Webflow/WordPress (use
/contentforge:cf-social-adaptfor social media)
What This Command Does
- Verify Connector -- Check if Webflow or WordPress MCP connector is active
- Load Content -- Pull finished content from Google Drive or local output
- Format for Platform -- Convert markdown/docx to platform-specific HTML/blocks
- Preview -- Show rendered preview with meta tags, slug, featured image
- AI Disclosure & Provenance -- EU AI Act Article 50 check (applicable from 2 Aug 2026)
- Publish/Schedule -- Push to CMS as draft, published, or scheduled
- Post-Publish Verification -- Confirm URL is live, meta tags are correct, content renders properly
- Fallback -- If no connector, generate standalone HTML file for manual upload
Required Inputs
Minimum Required:
- Content Source -- Google Drive URL, local file path, or requirement ID (e.g.,
REQ-001) - Platform --
webfloworwordpress - Status --
draft,publish, orschedule
Optional:
- Schedule Date -- ISO date/time for scheduled publishing (required if status=schedule)
- Collection/Category -- Webflow collection slug or WordPress category
- Featured Image -- URL or local path to hero image
- Author -- Override default author
- Tags -- Comma-separated list of tags
- Slug Override -- Custom URL slug (defaults to SEO-optimized slug from Phase 6)
How to Use
Interactive Mode
/contentforge:cf-publish
Prompts you for:
- Content source (Drive URL, file path, or requirement ID)
- Platform (Webflow / WordPress)
- Publish status (draft / publish / schedule)
- Preview confirmation before pushing
Quick Mode
/contentforge:cf-publish REQ-001 --platform=webflow --status=publish
Schedule for Later
/contentforge:cf-publish REQ-001 --platform=wordpress --status=schedule --date="2026-03-01T09:00:00"
Publish from Google Drive
/contentforge:cf-publish https://drive.google.com/file/d/ABC123 --platform=webflow --status=draft
What Happens
Step 1: Connector Verification (5-10 seconds)
Before attempting any CMS operation, verify the target connector is available.
Check MCP connector status:
Platform: webflow
Connector: Webflow MCP (https://mcp.webflow.com/sse)
Status: CHECKING...
Case A: Connector Active
Webflow MCP: CONNECTED
Site: acme-corp.webflow.io
Collections available: blog-posts, case-studies, resources
Proceeding with direct publish...
Case B: Connector Not Found
Webflow MCP: NOT CONNECTED
No Webflow connector detected in .mcp.json.
Falling back to HTML export mode.
To enable direct publishing, add the Webflow connector:
/contentforge:cf-connect webflow
Generating standalone HTML file for manual upload...
Step 2: Load and Validate Content (10-15 seconds)
Load content from source:
- Read .docx or markdown from Google Drive or local output directory
- Extract metadata: title, meta description, slug, keywords, author, featured image
- Validate quality score >= 7.0 (refuse to publish unreviewed content)
Validation checks:
Content Validation
---------------------------------------------------
Title: "AI in Healthcare: 2026 Trends" OK
Quality Score: 9.2/10 OK
Status: Approved (Phase 8 Complete) OK
Word Count: 1,947 OK
Meta Title: 58 chars OK
Meta Description: 152 chars OK
SEO Slug: ai-in-healthcare-2026-trends OK
Featured Image: hero-ai-healthcare.jpg OK
---------------------------------------------------
All checks passed. Ready to format for Webflow.
Rejection cases:
- Quality score < 7.0: "Content has not passed quality review. Score: 4.8/10. Run the full pipeline first."
- No Phase 8 completion: "Content pipeline incomplete. Phase 8 (Output Manager) has not run."
- Missing meta tags: "Meta title and description are required. Run Phase 6 (SEO Optimizer) first."
Step 3: Format for Target Platform (10-20 seconds)
Convert ContentForge output into platform-native format.
Webflow Formatting:
- Convert markdown headings to Webflow rich text blocks
- Map H1 to
namefield, body topost-bodyrich text field - Set
slug,meta-title,meta-descriptionfields - Upload featured image to Webflow assets, link to
main-imagefield - Map tags to Webflow multi-reference field
- Preserve inline links, bold, italic, lists, blockquotes
WordPress Formatting:
- Convert markdown to WordPress Gutenberg blocks (paragraph, heading, list, quote, image)
- Set
title,content,excerpt,slug,metafields - Upload featured image via media endpoint, set as
featured_media - Map categories and tags to taxonomy terms
- Preserve shortcodes if present in original content
- Add Yoast/RankMath SEO meta if plugin detected
Shared formatting rules:
- Strip .docx formatting artifacts (extra whitespace, page breaks)
- Ensure all internal links use relative paths where possible
- Validate all image URLs are accessible (no broken images)
- Preserve citation formatting (footnotes or inline links based on platform preference)
Step 4: Preview Before Publish
Show the user exactly what will be published before pushing.
PUBLISH PREVIEW
===================================================
Platform: Webflow (acme-corp.webflow.io)
Collection: blog-posts
Status: PUBLISH (goes live immediately)
---------------------------------------------------
URL: https://acme-corp.webflow.io/blog/ai-in-healthcare-2026-trends
Meta Title: AI in Healthcare: 2026 Trends and Predictions
Meta Description: Explore how AI is transforming healthcare in 2026,
from diagnostic tools to patient care. Data-driven analysis with
14 verified sources.
Featured Image: hero-ai-healthcare.jpg (1200x630, 245KB)
Author: ContentForge
Tags: AI, Healthcare, Technology Trends, 2026
Word Count: 1,947
---------------------------------------------------
Content Preview (first 300 characters):
"Multi-agent AI systems are changing how healthcare organizations
approach diagnostics, patient care, and operational efficiency. The
approach? Deploy specialized AI agents -- one for imaging analysis,
another for patient history, a third for treatment recommendations..."
===================================================
Proceed with publish? (yes / no / edit)
User options:
yes-- Push to CMSno-- Cancel, return to command lineedit-- Open content for last-minute edits before publish
Step 4.5: AI Disclosure & Provenance (EU AI Act Article 50 — applicable from 2 Aug 2026)
Before pushing, check whether AI-generation disclosure applies:
Does it apply? Yes if the brand targets EU audiences (check the brand profile's markets/regions or ask the user once and record the answer), OR if the brand profile's guardrails require AI-content disclosure regardless of region.
If it applies:
- For .docx deliverables — note that C2PA content provenance signing is available via the
--c2paflags onscripts/generate-docx.py(seedocs/c2pa-production-cert.mdfor certificate setup). If the piece was produced without signing and the user needs it, offer to regenerate the .docx with signing enabled. - For CMS publishes (Webflow/WordPress) — offer to append a disclosure line to the article, e.g.:
"This article was produced with AI assistance and reviewed by [brand]'s editorial team." Place it where the brand's guardrails specify (typically the footer or byline area). Record the user's choice in the tracking notes.
- For downstream social promotion — remind the user that major platforms (LinkedIn, Meta, TikTok, YouTube) have AI-content labeling options/requirements;
/contentforge:cf-social-adaptsurfaces these per platform.
If it does not apply (no EU targeting, no guardrail requirement): skip with a one-line note in the output — "AI-disclosure check: not required (no EU targeting configured)" — so the decision is auditable.
Step 5: Publish / Schedule / Draft (5-15 seconds)
Publish (immediate):
Publishing to Webflow...
API call: POST /collections/blog-posts/items
Status: 201 Created
Item ID: 6432a1b2c3d4e5f6
Live URL: https://acme-corp.webflow.io/blog/ai-in-healthcare-2026-trends
Schedule (future date):
Scheduling for 2026-03-01 09:00 UTC...
API call: POST /collections/blog-posts/items (draft=true, scheduled_at=2026-03-01T09:00:00Z)
Status: 201 Created
Scheduled Publish: March 1, 2026 at 9:00 AM UTC
Draft URL: https://acme-corp.webflow.io/blog/ai-in-healthcare-2026-trends (not live yet)
Draft (no publish):
Saving as draft...
API call: POST /collections/blog-posts/items (draft=true)
Status: 201 Created
Draft URL: https://acme-corp.webflow.io/blog/ai-in-healthcare-2026-trends (draft, not live)
Edit in Webflow: https://webflow.com/dashboard/sites/acme-corp/editor
Step 6: Post-Publish Verification (10-20 seconds)
After publishing, verify the content is live and correct.
Verification checks:
Post-Publish Verification
===================================================
URL Accessible: GET https://acme-corp.webflow.io/blog/ai-in-healthcare-2026-trends
Status Code: 200 OK PASS
Response Time: 340ms PASS
Meta Tags:
<title>: "AI in Healthcare: 2026 Trends..." PASS
<meta name="description">: Present, 152 chars PASS
<meta property="og:title">: Present PASS
<meta property="og:image">: Present PASS
<link rel="canonical">: Present PASS
Content Integrity:
H1 present: "AI in Healthcare: 2026 Trends" PASS
Word count matches: 1,947 (expected 1,947) PASS
Images loaded: 3/3 PASS
Internal links valid: 5/5 PASS
SEO Elements:
URL slug correct: ai-in-healthcare-2026-trends PASS
Schema markup: Article (JSON-LD) PASS
Robots meta: index, follow PASS
===================================================
All 12 checks passed. Content is live and verified.
If verification fails:
VERIFICATION WARNING
===================================================
URL Accessible: 200 OK PASS
Meta Description: MISSING FAIL
Expected: "Explore how AI is transforming..."
Found: (empty)
Action: Meta description did not save correctly.
Attempting fix via API PATCH...
Fixed: Meta description updated.
Re-verification: PASS
===================================================
Step 7: Update Tracking Sheet
After successful publish:
Tracking Sheet Updated:
Row: 5
Status: "Published"
Published URL: https://acme-corp.webflow.io/blog/ai-in-healthcare-2026-trends
Published At: 2026-02-25 14:30:00
Platform: Webflow
Verification: All 12 checks passed
Fallback: HTML Export Mode
When no CMS connector is available, generate a standalone HTML file.
What Gets Generated
Output: .tmp/publish-exports/ai-in-healthcare-2026-trends.html
HTML Export includes:
- Full article content in clean, semantic HTML5
- Inline CSS for typography (portable, no external dependencies)
- Meta tags in <head> (title, description, OG tags, Twitter cards)
- Schema.org Article markup (JSON-LD)
- Featured image with alt text
- Responsive formatting (mobile-friendly)
- Copy-paste ready for any CMS
HTML Export File Structure
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>AI in Healthcare: 2026 Trends and Predictions</title>
<meta name="description" content="Explore how AI is transforming...">
<meta property="og:title" content="AI in Healthcare: 2026 Trends...">
<meta property="og:description" content="Explore how AI is transforming...">
<meta property="og:image" content="hero-ai-healthcare.jpg">
<script type="application/ld+json">
{ "@context": "https://schema.org", "@type": "Article", ... }
</script>
</head>
<body>
<article>
<h1>AI in Healthcare: 2026 Trends and Predictions</h1>
<!-- Full formatted article content -->
</article>
</body>
</html>
Manual Upload Instructions
HTML Export Complete
===================================================
File: .tmp/publish-exports/ai-in-healthcare-2026-trends.html
Size: 48 KB
Manual Upload Instructions:
1. Open your CMS dashboard
2. Create a new blog post / article
3. Switch to HTML/code view
4. Copy the contents of the <article> tag
5. Paste into the content editor
6. Copy meta title and description from the <head> section
7. Upload featured image separately
8. Set URL slug to: ai-in-healthcare-2026-trends
9. Preview and publish
Alternatively, connect your CMS for direct publishing:
/contentforge:cf-connect webflow
/contentforge:cf-connect wordpress
===================================================
Output Example
SYNTHETIC EXAMPLE — fabricated for illustration. Successful publish:
CONTENTFORGE PUBLISH COMPLETE
===================================================
Content: AI in Healthcare: 2026 Trends
Platform: Webflow
Status: Published (LIVE)
URL: https://acme-corp.webflow.io/blog/ai-in-healthcare-2026-trends
Quality Score: 9.2/10
Word Count: 1,947
Meta Tags: All present and verified
Images: 3 loaded
Verification: 12/12 checks passed
Tracking Sheet: Updated (Row 5)
Published At: 2026-02-25 14:30:00
===================================================
Content is live and verified. No further action required.
Error Handling
CMS API Rate Limit
Error: 429 Too Many Requests
Action: Wait 60 seconds, retry (max 3 attempts)
If persistent: Save as draft, notify user to publish manually
Authentication Expired
Error: 401 Unauthorized
Action: Prompt user to re-authenticate
Webflow: Re-authorize at https://webflow.com/oauth/authorize
WordPress: Refresh application password
Content Too Large
Error: 413 Payload Too Large (WordPress limit: 2MB per post)
Action: Split content into parts or compress images
Fallback: Generate HTML export, notify user
Duplicate Slug
Error: Slug "ai-in-healthcare-2026-trends" already exists
Action: Check if this is an update (v1.1 refresh) or duplicate
If update: PATCH existing post (preserve URL, update content)
If duplicate: Append "-2" to slug, warn user
Image Upload Failure
Error: Featured image upload failed (timeout)
Action: Retry image upload (3 attempts)
Fallback: Publish without featured image, flag for manual fix
"Published successfully but featured image failed to upload.
Please upload hero-ai-healthcare.jpg manually in your CMS."
Platform-Specific Notes
Webflow
- Uses Collection Items API for blog posts
- Rich text field supports HTML content directly
- Images must be uploaded to Webflow Assets first, then referenced
- Publish requires site publish after item creation (API call to publish site)
- CMS items are draft by default; explicit publish step needed
- Rate limit: 60 requests per minute
WordPress
- Uses REST API v2 (
/wp-json/wp/v2/posts) - Gutenberg blocks preferred over classic editor HTML
- Featured image uploaded via
/wp-json/wp/v2/media, then linked by ID - Categories and tags are taxonomy term IDs (lookup by name first)
- Supports
datefield for scheduling - Application Passwords or OAuth for authentication
- Rate limit: Varies by host (typically 100-500 requests/minute)
Requirements
MCP Integrations (Optional but Recommended)
- Webflow MCP (
https://mcp.webflow.com/sse) -- For direct Webflow publishing - WordPress -- Via REST API (no MCP endpoint; uses HTTP connector or direct API)
Environment
- Claude Code or Cowork (latest version)
- Content must have completed Phase 8 (Output Manager)
- Quality score >= 7.0
Integration with Other Skills
Before Publishing:
/contentforge:create-content-- Generate the content piece/contentforge:batch-process-- Generate multiple pieces for bulk publishing/contentforge:content-refresh-- Update old content before republishing
After Publishing:
/contentforge:cf-social-adapt-- Generate social media posts to promote the published article/contentforge:content-refresh-- Schedule future refresh for evergreen content
Related Skills
- /contentforge:create-content -- Full content production pipeline
- /contentforge:batch-process -- Parallel content production
- /contentforge:content-refresh -- Update existing content
- /contentforge:cf-social-adapt -- Social media adaptation
Agent: Output Manager (Phase 8) + CMS Publisher reference (utilities/cms-publisher.md, prose reference doc)
Platforms: Webflow, WordPress
Fallback: HTML export for manual upload