/publish-blog
Publish blog posts. Use when: deploying to WordPress or Webflow with SEO optimization, categories, and scheduling.
$ npx -y skills add indranilbanerjee/digital-marketing-pro --skill publish-blog --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/publish-blog
Context preview
The summary Claude sees to decide when to auto-load this skill.
Publish blog posts. Use when: deploying to WordPress or Webflow with SEO optimization, categories, and scheduling.
SKILL.md
publish-blog.SKILL.mdname: publish-blog
description: "Publish blog posts. Use when: deploying to WordPress or Webflow with SEO optimization, categories, and scheduling."
disable-model-invocation: false
argument-hint: "[--platform=wordpress|webflow]"
/digital-marketing-pro:publish-blog
Purpose
Publish a fully optimized blog post to the brand's CMS (WordPress or Webflow) with SEO metadata, categories and tags, featured image, and optional scheduling. Includes pre-publish quality checks for content scoring and brand voice alignment, plus post-publish verification to confirm the live URL is accessible and rendering correctly. Designed to be the final step in a content workflow — taking a draft from ready to live with all optimization gates enforced.
Execution gate (MANDATORY — cannot be skipped)
1. Present the full preview — recipients / spend / changes / compliance — as an **Execution Summary** before touching any live system. 2. The user must type `yes` (or an equivalent explicit approval). ANY other input — ambiguous, implied, partial, or absent approval — cancels the run. 3. Never proceed on ambiguous input. Never auto-retry a failed execution; a failure needs human review before any re-run. 4. Record the approval with `python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action create-approval --data '{"risk_level":"<tier>","summary":"..."}'` **before** executing, then `python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action mark-executed --id {approval_id}` after the platform confirms success.
Input Required
The user must provide (or will be prompted for):
- **Blog content**: The full blog post draft or a rough draft to refine — title, body, any inline images or embeds, and blockquotes or callout boxes
- **Target CMS platform**: Which publishing platform to use — WordPress or Webflow — must have the corresponding MCP server connected
- **Publish date**: Immediate publish or a scheduled date and time with timezone — scheduling uses the platform's native scheduling feature
- **Categories and tags**: Content categories and taxonomy tags for organization and discoverability, or allow auto-suggestion based on content analysis and existing taxonomy
- **Featured image**: Image file path, URL, or description for generation — used as the hero image and social sharing thumbnail (Open Graph and Twitter Card)
- **SEO metadata**: Primary keyword, secondary keywords, meta title (50-60 chars), meta description (150-160 chars) — or request auto-generation based on content analysis and keyword strategy
- **Author attribution**: Author name and bio link if different from the default brand author configured in the CMS
- **Slug preference**: Custom URL slug or auto-generate from the title with keyword optimization and stop-word removal
- **Internal links**: Specific internal pages to link to within the post, or allow auto-detection of linking opportunities based on existing site content
- **Social sharing text**: Custom Open Graph title and description for social previews, or auto-generate from the meta title and description
- **Content format**: Post format — standard article, listicle, how-to guide, case study, or thought leadership — determines schema markup type and structural expectations
- **Excerpt or summary**: A 1-2 sentence excerpt for archive pages, RSS feeds, and social cards, or auto-generate from the opening paragraph
- **Related posts**: Optional — specific posts to link as related content at the end of the article, or auto-detect based on category and topic overlap
- **CTA block**: Optional — custom call-to-action block to append at the end of the post (newsletter signup, product trial, content upgrade, consultation booking)
Process
1. **Load brand context**: Read `~/.claude-marketing/brands/_active-brand.json` for the active slug, then load `~/.claude-marketing/brands/{slug}/profile.json`. Apply brand voice, compliance rules for target markets (`skills/context-engine/compliance-rules.md`), and industry context. Also check for guidelines at `~/.claude-marketing/brands/{slug}/guidelines/_manifest.json` — if present, load restrictions. Check for agency SOPs at `~/.claude-marketing/sops/`. If no brand exists, ask: "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with defaults. 2. **Verify CMS connection**: Check which CMS MCP server is connected (wordpress or webflow) and confirm it matches the user's target platform. If not connected, instruct the user to configure the MCP server first and provide the relevant setup link. 3. **Score content quality**: Run `content-scorer.py` on the blog draft to evaluate readability (Flesch-Kincaid grade), structure (heading hierarchy, paragraph length, list usage), depth (word count vs topic complexity), and engagement potential. Flag any issues that need fixing before publish. 4. **Score brand voice alignment**: Run `brand-voice-scorer.py` to verify the content matches the brand's tone, vocabulary, and messaging guidelines. Suggest specific edits if the score falls below the brand's minimum threshold defined in profile.json. 5. **Optimize for SEO**: Ensure the primary keyword appears in the title, H1, first 100 words, URL slug, and meta description. Verify meta description is 150-160 characters and meta title is 50-60 characters. Check internal linking opportunities, image alt text, and heading keyword usage. Validate schema markup compatibility for the content type (article, how-to, FAQ). 6. **Format for platform API**: Structure the content payload per the target CMS requirements — consult `skills/context-engine/platform-publishing-specs.md` for field mappings, HTML formatting, image handling, category/tag taxonomy IDs, featured image upload, Open Graph meta fields, and any platform-specific quirks like WordPress custom fields or Webflow CMS collection structure. 7. **Run compliance check**: Verify content meets regulatory requirements for the brand's target markets — d
Read more
name: publish-blog description: "Publish blog posts. Use when: deploying to WordPress or Webflow with SEO optimization, categories, and scheduling." disable-model-invocation: false argument-hint: "[--platform=wordpress|webflow]"
/digital-marketing-pro:publish-blog
Purpose
Publish a fully optimized blog post to the brand's CMS (WordPress or Webflow) with SEO metadata, categories and tags, featured image, and optional scheduling. Includes pre-publish quality checks for content scoring and brand voice alignment, plus post-publish verification to confirm the live URL is accessible and rendering correctly. Designed to be the final step in a content workflow — taking a draft from ready to live with all optimization gates enforced.
Execution gate (MANDATORY — cannot be skipped)
1. Present the full preview — recipients / spend / changes / compliance — as an **Execution Summary** before touching any live system. 2. The user must type `yes` (or an equivalent explicit approval). ANY other input — ambiguous, implied, partial, or absent approval — cancels the run. 3. Never proceed on ambiguous input. Never auto-retry a failed execution; a failure needs human review before any re-run. 4. Record the approval with `python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action create-approval --data '{"risk_level":"<tier>","summary":"..."}'` **before** executing, then `python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action mark-executed --id {approval_id}` after the platform confirms success.
Input Required
The user must provide (or will be prompted for):
- **Blog content**: The full blog post draft or a rough draft to refine — title, body, any inline images or embeds, and blockquotes or callout boxes
- **Target CMS platform**: Which publishing platform to use — WordPress or Webflow — must have the corresponding MCP server connected
- **Publish date**: Immediate publish or a scheduled date and time with timezone — scheduling uses the platform's native scheduling feature
- **Categories and tags**: Content categories and taxonomy tags for organization and discoverability, or allow auto-suggestion based on content analysis and existing taxonomy
- **Featured image**: Image file path, URL, or description for generation — used as the hero image and social sharing thumbnail (Open Graph and Twitter Card)
- **SEO metadata**: Primary keyword, secondary keywords, meta title (50-60 chars), meta description (150-160 chars) — or request auto-generation based on content analysis and keyword strategy
- **Author attribution**: Author name and bio link if different from the default brand author configured in the CMS
- **Slug preference**: Custom URL slug or auto-generate from the title with keyword optimization and stop-word removal
- **Internal links**: Specific internal pages to link to within the post, or allow auto-detection of linking opportunities based on existing site content
- **Social sharing text**: Custom Open Graph title and description for social previews, or auto-generate from the meta title and description
- **Content format**: Post format — standard article, listicle, how-to guide, case study, or thought leadership — determines schema markup type and structural expectations
- **Excerpt or summary**: A 1-2 sentence excerpt for archive pages, RSS feeds, and social cards, or auto-generate from the opening paragraph
- **Related posts**: Optional — specific posts to link as related content at the end of the article, or auto-detect based on category and topic overlap
- **CTA block**: Optional — custom call-to-action block to append at the end of the post (newsletter signup, product trial, content upgrade, consultation booking)
Process
1. **Load brand context**: Read `~/.claude-marketing/brands/_active-brand.json` for the active slug, then load `~/.claude-marketing/brands/{slug}/profile.json`. Apply brand voice, compliance rules for target markets (`skills/context-engine/compliance-rules.md`), and industry context. Also check for guidelines at `~/.claude-marketing/brands/{slug}/guidelines/_manifest.json` — if present, load restrictions. Check for agency SOPs at `~/.claude-marketing/sops/`. If no brand exists, ask: "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with defaults. 2. **Verify CMS connection**: Check which CMS MCP server is connected (wordpress or webflow) and confirm it matches the user's target platform. If not connected, instruct the user to configure the MCP server first and provide the relevant setup link. 3. **Score content quality**: Run `content-scorer.py` on the blog draft to evaluate readability (Flesch-Kincaid grade), structure (heading hierarchy, paragraph length, list usage), depth (word count vs topic complexity), and engagement potential. Flag any issues that need fixing before publish. 4. **Score brand voice alignment**: Run `brand-voice-scorer.py` to verify the content matches the brand's tone, vocabulary, and messaging guidelines. Suggest specific edits if the score falls below the brand's minimum threshold defined in profile.json. 5. **Optimize for SEO**: Ensure the primary keyword appears in the title, H1, first 100 words, URL slug, and meta description. Verify meta description is 150-160 characters and meta title is 50-60 characters. Check internal linking opportunities, image alt text, and heading keyword usage. Validate schema markup compatibility for the content type (article, how-to, FAQ). 6. **Format for platform API**: Structure the content payload per the target CMS requirements — consult `skills/context-engine/platform-publishing-specs.md` for field mappings, HTML formatting, image handling, category/tag taxonomy IDs, featured image upload, Open Graph meta fields, and any platform-specific quirks like WordPress custom fields or Webflow CMS collection structure. 7. **Run compliance check**: Verify content meets regulatory requirements for the brand's target markets — d
Your agency just signed a 50-brand client. The previous agency left no playbook. Three brands are bleeding budget, two have stale positioning, one is launching in a regulated jurisdiction next month. Where do you start?
Other skills on digital-marketing-pro.
- /ab-test-plan
Design A/B and multivariate tests. Use when: sample size calculation, testing hypothesis, CRO experimentation.
Open skill - /ad-creative
Generate platform-specific ad copy. Use when: Google RSA, Meta, LinkedIn, TikTok ad variations with quality scoring.
Open skill - /add-integration
Add MCP server integrations. Use when: connecting a custom tool, API, or service to the plugin via .mcp.json.
Open skill - /aeo-audit
Audit AI search visibility. Use when: checking brand presence in ChatGPT, Perplexity, AI Overviews, Gemini.
Open skill - /aeo-geo
Optimize AI engine visibility. Use when: AEO/GEO strategy, citation optimization, entity consistency across AI platforms.
Open skill - /agency-dashboard
Portfolio-level agency dashboard aggregating health metrics across all client brands — campaign status, budget pacing, KPI attainment, team utilization. Use when reviewing cross-brand portfolio health, preparing for agency leadership standups, or getting a single-view snapshot
Open skill

