Publish a blog post to WordPress or Webflow with SEO metadata, approval-gated.

MITAuto-check passedWriting & Content

Install Publish Blog

skills CLI
$ npx skills add indranilbanerjee/digital-marketing-pro --skill publish-blog -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install indranilbanerjee/digital-marketing-pro publish-blog --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/indranilbanerjee/digital-marketing-pro.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/publish-blog .claude/skills/publish-blog && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
publish-blog
GitHub stars
862
Used in
1 other repo
Token cost
~2.9k tokens
SKILL.md length
1,506 words
Files
1
Skills in repo
162
Repo updated
First seen
Licence
MIT

At a glance

Publish a blog post to WordPress or Webflow with SEO metadata, approval-gated.

  • Works in 5 steps: Present the full preview — recipients /… → The user must type yes (or an equivalent… → Never proceed on ambiguous input. Never… → …
  • Tasks that involve Blog and article writing
  • SKILL.md covers Purpose, Execution gate (MANDATORY —…, Input Required and Process, plus 2 more sections
  • Calls python

What it does

Publish Blog is an agent skill from indranilbanerjee/digital-marketing-pro. Publish a blog post to WordPress or Webflow with SEO metadata, approval-gated. "publish this post to WordPress"

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Writing & Content, covering Blog and article writing. It works with WordPress, Webflow and Python. The repository describes itself as: An open-source AI marketing operating system for strategy, SEO, AEO/GEO, paid media, content, CRM, and analytics - grounded in brand context, human approval, and verifiable… The licence is MIT.

When your agent uses it

  • Tasks that involve Blog and article writing

Example prompts

  • “publish this post to WordPress”
  • “/publish-blog”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  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…
  3. Never proceed on ambiguous input. Never auto-retry a failed execution; a failure needs human review before any re-run.
  4. Only after the user types yes, record it: python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action…
  5. Execute. A write sent through connector_executor.py needs --approval-id and fires only against a matching, unused, unexpired record (see…

What it can do on your machine

Read from SKILL.md and the folder at commit 9e949f3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Publish Blog loads about 2.9k tokens when it runs. Until then it costs about 31 tokens; SKILL.md has 1,506 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~31
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from indranilbanerjee/digital-marketing-pro at commit 9e949f3, republished under its MIT licence (© indranilbanerjee). 1,506 words, ~2,916 tokens.

Download SKILL.mdSave it as .claude/skills/publish-blog/SKILL.md (or your agent's skills folder).
name
publish-blog
description
Publish a blog post to WordPress or Webflow with SEO metadata, approval-gated. "publish this post to WordPress"
disable-model-invocation
false
argument-hint
[--platform=wordpress|webflow]

/digital-marketing-pro:publish-blog

Script location. If your host does not set ${CLAUDE_PLUGIN_ROOT}, the scripts are in this plugin's scripts/ folder, next to skills/.

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. Only after the user types yes, record it: python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action create-approval --data '{"type":"publish-blog","platform":"<platform>","content_summary":"<one line from the Execution Summary>","risk_level":"<tier>"}', then python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action approve --id {approval_id}. If either command errors, stop and report the error; never work around it with another tool. The record proves the approval step ran for this action; it cannot prove who typed yes.
  5. Execute. A write sent through connector_executor.py needs --approval-id and fires only against a matching, unused, unexpired record (see /digital-marketing-pro:execute-action). A write through a connected MCP server tool is outside that code check: it relies on this typed yes and on your host's permission prompt. Afterwards run python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action mark-executed --id {approval_id} --data '{"execution_result":"success"}' (or failure).

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 — disclosure statements, affiliate link disclaimers, medical or financial disclaimers, and copyright attribution for any third-party content or images referenced.
  8. Create approval record: Create the record via approval-manager.py --action create-approval with the risk level inside the --data JSON — {"type":"publish-blog","platform":"<platform>","content_summary":"...","risk_level":"medium"}. There is no --risk-level flag; see the Execution gate above for the exact command. Generate a pre-publish summary showing title, URL slug, publish time, SEO score, brand voice score, content quality score, categories, tags, featured image preview, and compliance status.
  9. Present pre-publish summary: Display the complete summary for user review and approval. Highlight any warnings from content scoring, SEO analysis, or compliance checks. Show a side-by-side preview of how the post will appear in search results and social sharing cards. Wait for explicit user confirmation before proceeding.
  10. Execute publish via CMS MCP: On approval, send the formatted payload to the CMS through the connected MCP server. Handle scheduling if a future publish date was specified. Confirm the API response indicates success.
  11. Verify live URL: After publish, request the live URL from the CMS API and verify it returns a 200 status. Confirm the title, meta description, featured image, canonical URL, and Open Graph tags are rendering correctly. Check that the page is not blocked by robots.txt or noindex tags.
  12. Validate schema markup: Confirm the published page includes the correct structured data (Article, HowTo, FAQ, or BreadcrumbList) and that it passes validation for rich snippet eligibility in search results.
  13. Submit to search engines: If the brand has Google Search Console connected, submit the new URL for indexing to accelerate discovery. Log the submission timestamp.
  14. Log execution and save insight: Run execution-tracker.py to log the publish event with timestamp, platform, URL, scores, and categories. Save an insight about the published content — topic, keywords, performance predictions — for future content strategy reference and gap analysis.
Show full SKILL.md (328 more words)Show less

Output

A structured publish confirmation containing:

  • Published URL: The live or scheduled URL where the blog post is accessible, with confirmation of correct canonical URL
  • SEO score: Content SEO score with breakdown — keyword placement, meta title and description quality, internal links count, image alt text coverage, heading structure, and URL slug optimization
  • Brand voice score: Alignment score with notes on tone, vocabulary, messaging consistency, and any adjustments made during optimization
  • Content quality score: Readability grade (Flesch-Kincaid), structure assessment (heading hierarchy, paragraph balance), word count, and engagement potential rating
  • Pre-publish checklist results: Pass/fail status for each quality gate — content score, brand voice, SEO optimization, compliance review, and platform formatting validation
  • Publish details: Platform, publish status (live or scheduled with date), author, categories, tags, featured image confirmation, canonical URL, and Open Graph preview
  • Social sharing preview: How the post will appear when shared on Facebook, Twitter/X, and LinkedIn — including Open Graph image, title, and description rendering
  • Compliance status: Verification of all required disclaimers, disclosures, and attribution included per brand market regulations
  • Schema markup validation: Structured data type applied, validation status, and rich snippet eligibility for the content format
  • Search engine submission: Indexing request status via Google Search Console (if connected) with submission timestamp
  • Performance baseline: Initial metrics snapshot — page load time, Core Web Vitals scores, and crawl status — as a baseline for post-publish performance monitoring
  • Related posts linked: List of related content linked at the end of the article with titles and URLs for internal traffic flow
  • CTA block confirmation: The call-to-action block rendered at the end of the post with type, copy, and destination URL
  • Execution log entry: Timestamped record of the publish action with all metadata for audit trail and performance tracking

Agents Used

  • content-creator — Content quality scoring, SEO optimization, brand voice alignment, keyword placement, meta description writing, internal linking recommendations, schema markup guidance, and social sharing text generation
  • execution-coordinator — Approval workflow, CMS API execution, post-publish verification, live URL validation, execution logging, and insight capture for content strategy

© indranilbanerjee, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/publish-blog of indranilbanerjee/digital-marketing-pro.

Open the folder on GitHubat commit 9e949f3

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in indranilbanerjee/digital-marketing-pro, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Publish Blog next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Publish Blog compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Publish Blog this skillindranilbanerjee/digital-marketing-pro8621 repos~2.9kAutomated safety check: PassMIT
Prompt Gap To Publishamplitude/builder-skills159—~2.8kAutomated safety check: PassNone
Release Postquarto-dev/quarto-r1601 repos~2.5kAutomated safety check: PassMIT
Release Blog Drafterobot-platform/obot1.1k—~4.6kAutomated safety check: PassMIT
Content Creatorthatrebeccarae/claude-marketing161—~1.1kAutomated safety check: PassMIT
BlogAgriciDaniel/claude-blog2.3k1 repos~8.6kAutomated safety check: WarnMIT

Similar skills

  • Prompt Gap To Publish

    amplitude/builder-skills

    A skill your agent uses whenever a user wants to turn AI Visibility data into published content — whether they say "find content gaps", "what should we write about", "which topics have low…

    159 GitHub stars~2.8k tokensUpdated 2 mo ago
    Writing & ContentAuto-check passed
  • Release Post

    quarto-dev/quarto-r

    Create professional package release blog posts following Tidyverse or Shiny blog conventions.

    160 GitHub starsUsed in 1 repo~2.5k tokens
    Writing & ContentAuto-check passed
  • Release Blog Drafter

    obot-platform/obot

    Drafts a release announcement blog post for an obot release as a Markdown file, with an optional WordPress draft through MCP and no live publishing without confirmation.

    1.1k GitHub stars~4.6k tokensUpdated today
    Writing & ContentAuto-check passed
  • Content Creator

    thatrebeccarae/claude-marketing

    Comprehensive content marketing toolkit with brand voice analysis, SEO optimization scripts, content frameworks, social media strategy, and content calendar planning.

    161 GitHub stars~1.1k tokensUpdated 4 mo ago
    Writing & ContentAuto-check passed
  • Blog

    AgriciDaniel/claude-blog

    Full-lifecycle blog engine with 31 sub-skills, 12 content templates, 5-category 100-point scoring, and 5 specialized agents.

    2.3k GitHub starsUsed in 1 repo~8.6k tokens
    Writing & ContentAuto-check: warnings
  • Generate clean, human-sounding, SEO-optimized WordPress blog posts with optional Yoast metadata, JSON-LD schema markup, and image SEO planning.

    47k GitHub starsUsed in 1 repo~2.1k tokens
    Writing & ContentAuto-check passed

More from indranilbanerjee/digital-marketing-pro

All 162 skills in this repo
  • Import Template

    indranilbanerjee/digital-marketing-pro

    Import a deliverable template as a reusable placeholder template per brand.

    862 GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check passed
  • Ab Test Plan

    indranilbanerjee/digital-marketing-pro

    Plan an A/B test by script: sample size per variant, days to run, stopping rules.

    862 GitHub starsUsed in 1 repo~1.9k tokens
    Auto-check passed
  • Aeo Audit

    indranilbanerjee/digital-marketing-pro

    Run a one-time AEO audit of six AI answer engines, scored per surface.

    862 GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • Agent Readiness Audit

    indranilbanerjee/digital-marketing-pro

    Audit agent readiness by script: AI-crawler rules, product schema, no-JS HTML, feeds.

    862 GitHub starsUsed in 1 repo~3.7k tokens
    Auto-check passed
  • Backlink Gap

    indranilbanerjee/digital-marketing-pro

    Find backlink gap domains linking to competitors, not you, scored by script.

    862 GitHub starsUsed in 1 repo~2.6k tokens
    Auto-check passed
  • C2pa Metadata

    indranilbanerjee/digital-marketing-pro

    Embed C2PA provenance in AI-generated images, video or PDF by script.

    862 GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed

Questions about Publish Blog

What does Publish Blog do?

Publish a blog post to WordPress or Webflow with SEO metadata, approval-gated. Publish Blog is an agent skill from indranilbanerjee/digital-marketing-pro. Publish a blog post to WordPress or Webflow with SEO metadata, approval-gated.

When should I use Publish Blog?

Publish Blog fits situations like: tasks that involve Blog and article writing.

How do I install Publish Blog in Claude Code?

Run `npx skills add indranilbanerjee/digital-marketing-pro --skill publish-blog -a claude-code`. Or copy the skill folder (skills/publish-blog in indranilbanerjee/digital-marketing-pro) into .claude/skills/publish-blog in your project. Claude Code loads it when a task matches its description.

How do I install Publish Blog in Codex?

Run `npx skills add indranilbanerjee/digital-marketing-pro --skill publish-blog -a codex`. Or copy the skill folder (skills/publish-blog in indranilbanerjee/digital-marketing-pro) into .agents/skills/publish-blog in your project. Codex loads it when a task matches its description.

Can I use Publish Blog in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add indranilbanerjee/digital-marketing-pro --skill publish-blog -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/publish-blog, .gemini/skills/publish-blog, .github/skills/publish-blog and .opencode/skills/publish-blog in your project.

What does Publish Blog need to run?

Going by SKILL.md and its folder, Publish Blog needs the command-line tools its instructions call (python). Our summary lists: Python 3.

Does Publish Blog access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Publish Blog safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Publish Blog use?

Publish Blog is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Publish Blog use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Publish Blog?

Skills that share tags, products or a category with Publish Blog: Prompt Gap To Publish (amplitude/builder-skills, 159 stars), Release Post (quarto-dev/quarto-r, 160 stars), Release Blog Drafter (obot-platform/obot, 1.1k stars) and Content Creator (thatrebeccarae/claude-marketing, 161 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Publish Blog?

indranilbanerjee (a GitHub user) maintains it in indranilbanerjee/digital-marketing-pro, which has 862 GitHub stars. The repository holds 162 skills in this directory. The repository was last updated on October 9, 2026.

Source: indranilbanerjee/digital-marketing-pro on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.