Content Engine
SkillFiles & storageDraft marketing content in brand voice — blog posts, ad copy, email sequences, social posts, landing pages, and brand-voice guides — through a gated pipeline (research, outline, draft, fact-check, humanize, voice check, SEO checklist) with numbered working files and a five-gate quality scorecard before copy is publish-ready. Triggers on \"/digital-marketing-pro:content-engine\", \"write a blog post about X\", \"draft ad copy for this campaign\", \"create an email sequence\", \"landing page copy for our product\". Takes /digital-marketing-pro:content-brief as preferred upstream; hands off to /digital-marketing-pro:publish-blog, /digital-marketing-pro:content-repurpose, and /digital-marketing-pro:check. Reads the brand profile, guidelines, platform specs, and compliance rules.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Content Engine skill
What this skill tells your AI
The instructions your AI receives, as published by indranilbanerjee/digital-marketing-pro in skills/content-engine/SKILL.md and read by ahel’s review.
When to Use This Skill
Activate this module when the user's request involves any of the following:
- SEO Content: Blog posts, pillar pages, topic clusters, or any content optimized for search
- Ad Copy: Headlines, descriptions, and creative for any paid platform (Google, Meta, LinkedIn, TikTok, etc.)
- Email Marketing: Email sequences, drip campaigns, newsletters, transactional emails, or cold outreach
- Social Media Content: Organic posts, captions, hashtag strategy, or content calendars for social platforms
- Landing Pages: Conversion-focused page copy, hero sections, CTAs, and page structure
- Content Calendars: Editorial planning, content scheduling, and theme mapping
- Brand Voice: Voice and tone guidelines, messaging frameworks, and brand language systems
- Content Decay Detection: Identifying content that has lost rankings, traffic, or relevance over time
- AI Content Quality Management: Ensuring AI-generated content meets quality, originality, and brand standards
- Accessibility Compliance: Making content accessible (WCAG standards, alt text, readability, screen reader compatibility)
- Multilingual/Localization: Adapting content for different languages, cultures, and regional markets
- Email Infrastructure: Deliverability, authentication (SPF, DKIM, DMARC), domain warming, and sender reputation
Trigger phrases: "write a blog post," "ad copy," "email sequence," "social media calendar," "landing page," "content calendar," "brand voice," "content audit," "content decay," "AI content," "accessibility," "translate," "localize," "email deliverability," "subject line," "headline," "CTA," "newsletter"
Brand Context (Auto-Applied)
Before producing any marketing output from this module:
- Check session context — The active brand summary was output at session start. Use the brand name, industry, voice settings, channels, goals, compliance, and competitors shown there.
- If you need the full profile, read:
~/.claude-marketing/brands/{slug}/profile.json - Apply brand voice — Formality, energy, humor, authority levels must shape all content tone and word choices
- Check compliance — Auto-apply rules for brand's target_markets and industry using
skills/context-engine/compliance-rules.md - Reference industry benchmarks — Consult
skills/context-engine/industry-profiles.mdfor the brand's industry - Use platform specs — Reference
skills/context-engine/platform-specs.mdfor character limits and format requirements - Check campaign history — Run
python "${CLAUDE_PLUGIN_ROOT}/scripts/campaign-tracker.py" --brand {slug} --action list-campaignsbefore planning new work - If no brand exists, say: "No brand profile found. Use /digital-marketing-pro:brand-setup to create one, or I can proceed with general best practices."
- Check brand guidelines — If
~/.claude-marketing/brands/{slug}/guidelines/_manifest.jsonexists, load and enforce:restrictions.mdfor banned words, restricted claims, and mandatory disclaimers;channel-styles.mdfor channel-specific tone overrides (may differ from base voice);messaging.mdfor approved key messages, taglines, and positioning language;voice-and-tone.mdfor detailed voice rules beyond the 4 numeric scores. If producing content for a specific channel, channel style rules take precedence over base voice settings.
Do not ask the user for information that already exists in their brand profile.
Required Context
Before executing content work, gather:
- Content Type: Which specific content format is needed?
- Audience: Who is this content for? (Link to personas from Audience Intelligence if available)
- Objective: What should this content achieve? (Traffic, conversions, engagement, education, retention)
- Brand Voice: Does a brand voice guide exist? What is the tone? (Professional, casual, authoritative, playful, etc.)
- Keywords/Topics: For SEO content — target keywords, search intent, and competitive landscape
- Platform: Where will this content live? (Platform-specific requirements matter)
- Funnel Stage: Where does this content fit in the customer journey?
- Existing Content: What related content already exists? (Avoid cannibalization)
- Constraints: Word count limits, character limits, regulatory disclaimers, brand guidelines
- Performance Benchmarks: What does success look like for this content type?
For quick requests (e.g., "write me a LinkedIn post"), infer reasonable defaults and deliver immediately. For strategic content work, gather full context.
Capabilities
- SEO Content Creation: Keyword-optimized blog posts, pillar pages, topic cluster design, meta titles/descriptions, internal linking strategy, and featured snippet optimization
- Ad Copy (All Platforms): Google Ads (RSAs, headlines, descriptions), Meta Ads (primary text, headlines, descriptions), LinkedIn Ads, TikTok Ads, Twitter/X Ads — platform-specific formats and character limits
- Email Sequences: Welcome sequences, nurture drips, cart abandonment, re-engagement, onboarding, upsell/cross-sell, and win-back sequences with subject lines, preview text, body copy, and CTAs
- Social Content: Platform-native content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, YouTube, Pinterest — including captions, hashtags, hooks, and post structure
- Landing Page Copy: Hero headline/subhead, value proposition blocks, social proof, feature/benefit sections, FAQ, and CTA optimization
- Content Calendars: Editorial calendars with theme mapping, content pillars, publishing cadence, and channel distribution plans
- Brand Voice System: Voice attributes, tone spectrum (how voice adapts by context), vocabulary guidelines, do/don't examples, and brand-specific terminology
- Content Decay Detection: Methodology for identifying declining content by traffic, rankings, engagement, and freshness — with refresh prioritization
- AI Content Quality Management: Quality checklist for AI-generated content, originality verification approach, brand alignment review, fact-checking protocol, and human-in-the-loop guidelines
- Accessibility Compliance: WCAG 2.2 AA content guidelines, alt text writing, readability scoring, heading structure, link text, color contrast guidance, and screen reader optimization
- Multilingual/Localization: Translation-ready content structuring, cultural adaptation framework, locale-specific messaging guidelines, and RTL language considerations
- Email Infrastructure: SPF/DKIM/DMARC setup guidance, domain warming schedules, list hygiene practices, deliverability monitoring, and sender reputation management
Process
Primary Workflow: Content Creation
-
Content Strategy Alignment
- Confirm the content type, audience, objective, and funnel stage
- Check for existing content that may overlap (prevent cannibalization)
- Identify the core message and key takeaway
- Select the appropriate content framework for the task
-
Research & Preparation
- For SEO content: Analyze target keyword, search intent, SERP features, and top-ranking content
- For ad copy: Review platform specs, competitor ads, and audience pain points
- For email: Identify the sequence trigger, desired action, and subscriber segment
- For social: Check platform trends, optimal formats, and audience behavior patterns
- For landing pages: Identify the traffic source, visitor intent, and conversion goal
-
Content Creation
- Apply the brand voice guidelines (or establish them if none exist)
- Write to the specific format requirements (character limits, structure, platform norms)
- Build in persuasion architecture:
- Attention: Hook/headline that stops the scroll or earns the click
- Interest: Problem-aware framing that demonstrates understanding
- Desire: Solution positioning with clear benefits and social proof
- Action: Clear, specific CTA with reduced friction
- Include SEO elements where applicable (keywords, headers, internal links, meta data)
- Write multiple variations for testing when the format supports it (ad copy, subject lines, CTAs)
-
Quality Assurance
- Brand voice alignment check
- Readability score assessment (aim for grade 8 or below for general audiences). Run the analyzer on the draft:
(python "${CLAUDE_PLUGIN_ROOT}/scripts/readability-analyzer.py" \ --file "${CLAUDE_PLUGIN_DATA}/{brand}/seo/content-engine/{date}/{slug}/03-draft-v1.md" \ --target b2c_general--textinline or--filepath — mutually exclusive, one required;--targetone ofb2c_general,b2b_professional,b2b_technical,children,academic.) - Accessibility review (heading hierarchy, alt text guidance, link text clarity)
- Fact-checking for any claims, statistics, or references
- Platform compliance check (ad policies, character limits, format requirements)
- SEO on-page audit (keyword placement, meta data, internal links) for search content
- AI content quality check if AI-assisted (originality, brand alignment, factual accuracy)
-
Optimization & Testing Plan
- Define what to A/B test (headlines, CTAs, email subject lines, ad creative)
- Set performance benchmarks based on content type and channel
- Schedule content review dates for decay monitoring
- Plan content repurposing across formats and channels
Secondary Workflow: Content Audit & Refresh
- Pull content inventory (URLs, publish dates, current traffic/rankings)
- Score each piece on freshness, performance trend, and relevance
- Categorize: Keep (performing well), Refresh (declining but fixable), Consolidate (thin/overlapping), Remove (irrelevant/harmful)
- Prioritize refresh candidates by traffic recovery potential
- Create refresh briefs with specific update instructions
Reference Files
seo-content.md— Keyword optimization, topic cluster design, featured snippet strategy, and on-page SEO checklistad-copy.md— Platform-specific ad copy frameworks, character limits, policy guidelines, and A/B testing methodologyemail-sequences.md— Sequence templates (welcome, nurture, abandonment, etc.), subject line formulas, and email copywriting frameworkssocial-content.md— Platform-by-platform content guidelines, hook formulas, hashtag strategy, and optimal posting practiceslanding-pages.md— Landing page structure templates, CTA optimization, above-the-fold frameworks, and conversion copy formulascontent-calendar.md— Editorial calendar templates, content pillar frameworks, publishing cadence recommendations, and theme mappingbrand-voice.md— Voice development methodology, tone spectrum design, vocabulary guidelines, and brand voice audit processcontent-decay.md— Decay detection methodology, content scoring rubric, refresh prioritization framework, and update trackingai-content-quality.md— AI content quality checklist, originality verification, brand alignment review, and human review workflowaccessibility.md— WCAG 2.2 AA content checklist, alt text writing guide, readability standards, and inclusive language guidelinesmultilingual.md— Localization readiness checklist, cultural adaptation framework, translation management, and RTL considerationsemail-infrastructure.md— Authentication setup (SPF/DKIM/DMARC), domain warming plan, deliverability best practices, and list hygieneemail-automation.md— Automation trigger design, workflow mapping, dynamic content rules, and behavioral email logiccase-studies.md— Challenge-Solution-Results framework, customer-hero narrative structure, and case study creation best practicespersonalization.md— Personalization maturity model, segment/rule-based/behavioral strategies, and implementation guidancevideo-scripting.md— Platform-specific video formats and lengths, script structures, and hook and retention techniques
Output Formats
| Deliverable | Format | Description |
|---|---|---|
| Blog Post / Article | Document | Complete SEO-optimized content with meta data, headers, and internal link suggestions |
| Ad Copy Set | Document / Spreadsheet | Multiple variations per platform with headlines, descriptions, and CTAs |
| Email Sequence | Document | Full sequence with subject lines, preview text, body copy, CTAs, and send timing |
| Social Media Content | Spreadsheet / Calendar | Posts organized by platform, date, copy, hashtags, and visual direction |
| Landing Page Copy | Document | Section-by-section copy with headline, subhead, body, bullets, CTAs, and form copy |
| Content Calendar | Spreadsheet | Monthly/quarterly editorial plan with themes, topics, formats, channels, and owners |
| Brand Voice Guide | Document | Complete voice system with attributes, tone spectrum, vocabulary, and examples |
| Content Audit Report | Spreadsheet + Document | Inventory with scores, categorization, and prioritized refresh recommendations |
| Accessibility Report | Checklist document | Content-level accessibility assessment with specific remediation steps |
Edge Cases
Regulated Industry Content (Disclaimers Required)
- Situation: Healthcare, financial services, legal, insurance, cannabis, gambling, or other industries requiring mandatory disclaimers, disclosures, or compliance language
- Approach: Flag the regulatory requirement at the start of content creation. Include placeholder disclaimer text and recommend legal review before publication. For ad platforms, note specific policy restrictions (e.g., Facebook financial services disclaimers, Google healthcare ad policies). Never present marketing content as compliant without legal review — always recommend professional compliance verification. Keep marketing copy and compliance language visually distinct.
Multilingual Campaigns
- Situation: Content needs to work across multiple languages and cultural contexts
- Approach: Write source content with localization in mind (avoid idioms, cultural references, humor that won't translate). Create a localization brief alongside the content that flags culturally sensitive elements. Do not use machine translation for final deliverables — recommend professional translators with marketing expertise. For RTL languages (Arabic, Hebrew, Farsi), flag layout implications for design teams. Account for text expansion (German text is ~30% longer than English) in character-limited formats.
Content Cannibalization
- Situation: Multiple pages competing for the same keyword or covering the same topic
- Approach: Audit existing content before creating anything new. If cannibalization exists, recommend consolidation (merge weaker pages into a single strong one) rather than creating yet another competing piece. Use canonical tags, internal linking, and content differentiation to resolve existing cannibalization. When creating new content, check keyword and topic overlap with the existing inventory.
AI-Generated Content Disclosure
- Situation: User wants to publish AI-generated content and needs guidance on disclosure
- Approach: Recommend transparency. Note that platform policies are evolving (Google does not penalize AI content but values quality; some social platforms require AI disclosure). Always recommend human review and editing of AI-generated drafts. Flag that pure AI-generated content without human oversight risks factual errors, brand inconsistency, and audience trust issues. Provide the quality assurance checklist for AI-assisted content.
Accessibility for Video/Audio Content
- Situation: Content includes video, audio, or interactive elements needing accessibility treatment
- Approach: Recommend captions (not auto-generated — accuracy matters) for all video content. Provide audio descriptions for visual-only information in videos. Create transcripts for podcasts and audio content. Ensure interactive elements are keyboard-navigable. Test with screen readers. Follow WCAG 2.2 AA at minimum, with AAA as a stretch goal for public-facing content.
RTL Languages
- Situation: Content in Arabic, Hebrew, Farsi, Urdu, or other right-to-left languages
- Approach: Flag RTL implications early in the process. Content structure, CTA placement, and visual hierarchy all reverse. Numbers and embedded Latin text remain LTR within RTL context (bidirectional text). Recommend native-speaker review for all RTL content. Design templates must support RTL layouts. Test email templates in RTL mode specifically, as many email clients handle RTL inconsistently.
Numbered output convention
All content-engine outputs go to ${CLAUDE_PLUGIN_DATA}/{brand}/seo/content-engine/{YYYY-MM-DD}/{slug}/:
00-input.md topic, target keyword, intent, format, source brief (from keyword-cluster?)
01-research.md source list, key data points, expert quotes, competitor references
02-outline.md H1, H2/H3 structure with target word counts per section
03-draft-v1.md first complete draft
04-fact-check.md per-claim verification + citations
00-source-draft.md the author's own words, verbatim (ONLY when --source-draft was given)
05-humanize.md AI-pattern detection + rewrite log (flags from scripts/ai-tell-scan.py)
05-scans.json Surface + structural scan output, keyed {"surface":…, "structure":…}
05-authorship.json author-sentence provenance (ONLY when 00-source-draft.md exists)
06-brand-voice-check.md voice score (formality/energy/humor/authority) vs brand profile
07-seo-checklist.md title, meta, schema, internal links, image alt text
08-quality-scorecard.md the gates below
09-publish-ready.md final clean copy + handoff metadata
PLAN.md summary + publish instructions
Quality scorecard
| Gate | What it checks |
|---|---|
| brand_voice_match | 06-brand-voice-check.md shows distance ≤ 0.15 on each axis (formality/energy/humor/authority). The unit is the scorer's 0–1 scale, not the profile's 1–10 scale. This gate previously read "≤ 1.5 point deviation" while brand-voice-scorer.py emits distance bounded at 1.0 — so read literally it could never fail, which is the same hollow-gate defect as a gate with no measurement behind it. 0.15 is the threshold the scorer already uses internally to flag a deviation. Note what this does and does not measure: the target axis values come from brand-setup's mapping of voice descriptors to numbers, and there is no rubric for descriptors it has not seen — so a FAIL here is a prompt to check the profile's targets as much as the copy |
| fact_check_clean | 04-fact-check.md shows 0 unverified claims and ≥ 1 citation per factual statement |
| humanize_passed | python "${CLAUDE_PLUGIN_ROOT}/scripts/ai-tell-scan.py" --file 05-humanize.md reports humanize_passed: true — i.e. flagged_paragraph_pct ≤ the brand threshold (default 10%). Run the script; do not judge this by eye. See "Humanize step" below for what counts as a flag |
| seo_complete | 07-seo-checklist.md shows title ≤ 60 chars, meta 150-160 chars, ≥ 1 schema type, ≥ 3 internal links, all images have alt text. Two criteria take an explicit N/A rather than a pass: internal links when the brand has no published site (a pre-launch brand's first article cannot link internally to anything — record N/A (no site) and the gate ignores it, but never record it as met), and alt text when the piece has no images (0 of 0 is a pass that verifies nothing — record N/A (no images)). An N/A must name its reason; a bare N/A is a FAIL |
| eu_disclosure_if_ai | If the brand has target_markets including EU AND the content is AI-generated, 09-publish-ready.md carries the required Article 50 disclosure (machine-readable + visible) |
status: ready requires all five gates pass — and the run audit re-deriving them:
python "${CLAUDE_PLUGIN_ROOT}/scripts/run-audit.py" --run-dir "${CLAUDE_PLUGIN_DATA}/{brand}/seo/content-engine/{date}/{slug}"
Run it after writing 08-quality-scorecard.md and before declaring status: ready. It re-derives what the scorecard claims from the artifacts themselves: every numbered artifact present, the humanize verdict re-measured with a fresh ai-tell-scan.py run (never read off the scorecard), no scan JSON embedded in the file authorship.py measures, the authorship record matching a fresh measurement when a source draft exists, recorded voice distances actually inside the 0.15 gate, and the publish-ready copy free of production placeholders. Exit 1 means the scorecard is claiming something the artifacts do not support — fix the finding, never the wording. The verdict lands in run-audit.json beside the artifacts, so the next reader can see the run was verified rather than trusted.
AI-assistance disclosure (all runs, not just EU)
Beyond the EU gate above, every publish-ready draft applies the brand's ai_disclosure block from profile.json — {"mode": "claude-surfaces"|"always"|"off", "text": null|custom, "author": null|name} (missing block = the default: claude-surfaces, no custom text, no author).
- Run
python "${CLAUDE_PLUGIN_ROOT}/scripts/detect_surface.py" --mode {mode}— itsdisclosure_appliesfield IS the decision. The fail-safe is deliberate: anuncertainsurface applies the disclosure in claude-surfaces mode (skipping requires an AFFIRMATIVE non-Claude fingerprint). Never override the script's answer by guessing. - When it applies, append the block as the final content paragraph of
09-publish-ready.md— inside the body, so it survives/digital-marketing-pro:publish-blog— using: no custom text and no author →*Created with AI assistance and reviewed by our editorial team.*; author set →*Created with AI assistance; researched, fact-checked, and edited by {author}.*; custom text → verbatim. The default wording is vendor-neutral (no model or vendor names) and claims only the review this pipeline performs. The author field is OPTIONAL — never invent a name, never block on it being blank. - Record the decision in the handoff metadata either way:
disclosure: {applied, mode, surface}— an unapplied disclosure is a recorded choice, not an omission.
Humanize step (05-humanize.md) — what a flag actually is
The humanize_passed gate is measured by scripts/ai-tell-scan.py, not by impression. Run it and work the flags it returns.
05-scans.json holds BOTH scans under named keys — never two JSON documents in one file. Write it as {"surface": {...ai-tell-scan output...}, "structure": {...structural-tell-scan output...}}. Two > redirects into the same path produce a file that json.load rejects; a run doing exactly that is how this was found. On Windows, redirect with PYTHONIOENCODING=utf-8 set — the default cp1252 encodes the em-dash in the advisory note as byte 0x97 and the file then fails to parse.
Keep 05-humanize.md to the article body. scripts/authorship.py --draft 05-humanize.md classifies every sentence in that file, so scan JSON or report prose living there is counted as machine-added text against the author's share. Measured on a real run: appending the scan JSON and a short report moved author_word_share from 0.253 to 0.206 and flipped may_claim_authored from true to false — denying the author credit for work they actually did, on nothing but file layout. Reports go in 05-scans.json; the draft file stays the draft.
python "${CLAUDE_PLUGIN_ROOT}/scripts/ai-tell-scan.py" --file 05-humanize.md [--max-flagged-pct N]
Two tells count toward the gate, because they are precise enough to gate on:
Shortened here. Read the whole file on GitHub.
Signals
- GitHub stars
- 814
- Forks
- 134
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
content-engine-indranilbanerjee- Source
- github.com/indranilbanerjee/digital-marketing-pro