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 outputs.
# Add to your Claude Code skills
git clone https://github.com/indranilbanerjee/digital-marketing-proGuides for using ai agents skills like digital-marketing-pro.
Last scanned: 7/21/2026
{
"issues": [
{
"file": "README.md",
"line": 612,
"type": "secret-exfiltration",
"message": "Instruction appears to send credentials/secrets to an external endpoint",
"severity": "medium"
},
{
"file": "README.md",
"line": 617,
"type": "secret-exfiltration",
"message": "Instruction appears to send credentials/secrets to an external endpoint",
"severity": "medium"
}
],
"status": "PASSED",
"scannedAt": "2026-07-21T06:27:25.313Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}digital-marketing-pro is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by indranilbanerjee. 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 outputs. It has 745 GitHub stars.
Yes. digital-marketing-pro passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/indranilbanerjee/digital-marketing-pro" and add it to your Claude Code skills directory (see the Installation section above).
digital-marketing-pro is primarily written in Python. It is open-source under indranilbanerjee on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh digital-marketing-pro against similar tools.
No comments yet. Be the first to share your thoughts!
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?
Run /digital-marketing-pro:engagement against each brand. Same 12-Part Strategy Flow, same Four Core Documents, same 61-step structure — auditable across the entire portfolio in ~60 minutes per brand on Claude Opus-class models (measured on Opus 4.8; Opus 5 is the current equivalent at the same price). No more inconsistent depth between brands. No more "what did the last agency do?" mysteries. No more compliance gaps in regulated jurisdictions.
Open-source AI marketing plugin — 163 skills, 24 specialist agents, EU AI Act Article 50 ready, Cowork team-persistent. Built for marketing agencies, in-house teams running 50–200 brands, and consultancies. 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.
🆕 Just shipped — v3.31.1 (August 17, 2026): all five open community issues verified and fixed. Every open GitHub issue was reproduced against the current release before touching anything — all five were real, and each fix ships with the guard that makes its regression class impossible: (#10)
claim-verifier.py's percentage pattern ended in%\b, which — because%is a non-word character — only matched when a word character followed the percent sign:98%xwas a claim while "98% of customers" extracted nothing; fixed with%(?!\w)and pinned by a new CLI-level test suite. (#11)keyword_cluster.pytokenized with[a-z0-9]+, splitting every non-ASCII letter ("bürohaftpflicht" → "rohaftpflicht") — and exact-token Jaccard scored related German compounds at 0.00, blinding the cannibalisation gate and the link map in compounding languages; fixed with a Unicode tokenizer plus compound-aware similarity (containment matching with a 6-char floor; English sets score exactly as before, SERP-URL overlap stays pure Jaccard), pinned by tests including an English-parity bound. (#13)engagement-workflow's frontmatterallowed-toolsomittedTaskwhile its body mandates Task dispatch in five Parts — on runtimes that enforce the declaration, the 12-part flow degraded;Taskadded, and a new guard fails any skill whose body references Task dispatch without declaring it. (#12)plugin.yaml(the one manifest outside the description guards) said "158 skills" for five releases; now 163, and the Hermes description joined the derived-count guard. (#9)hooks/hooks.jsoncarried a_readmefield that Cowork's plugin validation rejects — the rationale moved tohooks/README.md, the manifest is schema-clean, and a guard pins it (fixed across all three suite plugins, since every sibling shipped the same defect). Thanks to @jurazerr and @theepicsaxguy for precise, reproducible reports. 163 skills, 402 tests. Previously — v3.31.0 (August 17, 2026): Grok (xAI Build CLI) becomes the ninth native platform. A first-class.grok-plugin/manifest pair —plugin.jsonwith the"skills"pointer Grok's loader reads, plus a single-pluginmarketplace.json— makesgrok plugin install indranilbanerjee/digital-marketing-prowork directly (Grok Build also reads the Claude Code manifests for compatibility; the native pair is what an official xAI marketplace listing points at). Both files are version-locked into the release-consistency suite. The same pass also caught and fixed four stale counts that had escaped the doc-count guard through new phrasings — "158 `SKILL.md` files" hidden by backticks, "158 marketing skills" and "158 DMP skill names" hidden by qualifier words, and an "All 209 tests" claim that was 170 stale — and taught the guard each phrasing, plant-checked, with "N tests" now a derived-truth noun. 163 skills, 381 tests. Previously — v3.30.2 (August 16, 2026): the documentation truth pass. A from-zero audit found the doc-count guard pattern-blind: the comparison table said "Skills count 158" against 163 shipped, five documents quoted "86 Python scripts" against 93, and AGENTS.md — the file every non-Claude runtime auto-loads — pinned v3.17.0, thirteen releases stale. Every number is now re-derived from the filesystem and the guard grew the exact patterns that escaped it (script counts, SKILL.md-file counts, table rows, AGENTS.md currency), each plant-checked against the phrasing it previously missed. 163 skills, 379 tests. Previously — v3.30.1 (August 16, 2026): richer Agent Plugins listing metadata + the directory submission bundle (docs/distribution/). And — v3.30.0: the content-engine run auditor — “status: ready” is now re-derived, never trusted. Newscripts/run-audit.pyre-checks a finished run from its artifacts: every numbered artifact present, the humanize verdict re-measured with a freshai-tell-scan.pyrun instead of read off the scorecard, no scan JSON embedded in the fileauthorship.pymeasures (the corruption class that once flippedmay_claim_authoredand denied an author credit for work they did), the authorship record matching a fresh measurement, recorded voice distances actually inside the 0.15 gate, and publish-ready copy free of production placeholders. A scorecard declaring ready past its own recorded gate is a FAIL with the number quoted; a missing input is reported-N/A, never silent-pass. The content-engine contract now runs the audit beforestatus: readymay be declared, and the verdict lands inrun-audit.jsonbeside the artifacts so the next reader sees the run was verified rather than believed. 163 skills, 376 tests. Previously — Just shipped — v3.29.0 (August 16, 2026): Digital Marketing Pro travels in Agent Plugins 1.0. OpenAI's vendor-neutral plugin standard (announced Aug 6; adopted by ChatGPT, Codex, Cursor, GitHub Copilot, VS Code, Kiro) reads a rootplugin.jsonon a closed schema and defines${PLUGIN_DATA}as the persistent-data name — and a compliant non-Claude host previously resolved no data directory here at all, because every resolver read only theCLAUDE_*spellings. Shipped: the root manifest (version-synced with the Claude manifest and guarded by tests — closed-schema check, name rules, all 163 skills verified in the standard's layout), and${PLUGIN_DATA}accepted as the fallback whereverCLAUDE_PLUGIN_DATAwas read. One listing in the shared ChatGPT + Codex directory is now a packaging step away rather than a port. 163 skills, 364 tests. Previously — Just shipped — v3.28.0 (August 15, 2026): abrand-setup→content-enginerun, following the instructions literally, found five defects no unit test could see.brand_voice_matchwas unfailable: it asked for "≤ 1.5 point deviation" while the scorer emitsdistancebounded at 1.0 — a hollow gate that had been passing everything. Now stated in the scorer's own 0–1 unit atdistance≤ 0.15, the threshold the scorer already used internally, with a test that fails if the two diverge.seo_completeheld one impossible criterion and one vacuous one: a pre-launch brand's first article cannot make 3 internal links, and "all images have alt text" passed at zero images — both now take anN/Athat must name its reason, because a bareN/Ais a FAIL.brand-setupproduced a profile its ownvalidate-profilerejected on BLOCKER items it never creates; the generator is the source of truth, so the validator was the outlier and now accepts its keys. The voice remediation inverted its own diagnosis — copy "too serious" was told the brand "calls for more serious tone", advice that moves the score further out of tolerance. And creating a brand silently repointed every skill at it with no history and no notice; it now announces the change, records the previous slug, and prints the way back. 163 skills, 358 tests. Previously — Just shipped — v3.27.0 (August 15, 2026): the humanize gate got measured against writing that predates ChatGPT, and lost a signal that was pointing the wrong way. A calibration