* feat: Skill Authoring Standard + Marketing Expansion plans
SKILL-AUTHORING-STANDARD.md — the DNA of every skill in this repo:
10 universal patterns codified from C-Suite innovations + Corey Haines' marketingskills patterns:
1. Context-First: check domain context, ask only for gaps
2. Practitioner Voice: expert persona, goal-oriented, not textbook
3. Multi-Mode Workflows: build from scratch / optimize existing / situation-specific
4. Related Skills Navigation: when to use, when NOT to, bidirectional
5. Reference Separation: SKILL.md lean (≤10KB), refs deep
6. Proactive Triggers: surface issues without being asked
7. Output Artifacts: request → specific deliverable mapping
8. Quality Loop: self-verify, confidence tagging
9. Communication Standard: bottom line first, structured output
10. Python Tools: stdlib-only, CLI-first, JSON output, sample data
Marketing expansion plans for 40-skill marketing division build.
* feat: marketing foundation — context + ops router + authoring standard
marketing-context/: Foundation skill every marketing skill reads first
- SKILL.md: 3 modes (auto-draft, guided interview, update)
- templates/marketing-context-template.md: 14 sections covering
product, audience, personas, pain points, competitive landscape,
differentiation, objections, switching dynamics, customer language
(verbatim), brand voice, style guide, proof points, SEO context, goals
- scripts/context_validator.py: Scores completeness 0-100, section-by-section
marketing-ops/: Central router for 40-skill marketing ecosystem
- Full routing matrix: 7 pods + cross-domain routing to 6 skills in
business-growth, product-team, engineering-team, c-level-advisor
- Campaign orchestration sequences (launch, content, CRO sprint)
- Quality gate matching C-Suite standard
- scripts/campaign_tracker.py: Campaign status tracking with progress,
overdue detection, pod coverage, blocker identification
SKILL-AUTHORING-STANDARD.md: Universal DNA for all skills
- 10 patterns: context-first, practitioner voice, multi-mode workflows,
related skills navigation, reference separation, proactive triggers,
output artifacts, quality loop, communication standard, python tools
- Quality checklist for skill completion verification
- Domain context file mapping for all 5 domains
* feat: import 20 workspace marketing skills + standard sections
Imported 20 marketing skills from OpenClaw workspace into repo:
Content Pod (5):
content-strategy, copywriting, copy-editing, social-content, marketing-ideas
SEO Pod (2):
seo-audit (+ references enriched by subagent), programmatic-seo (+ refs)
CRO Pod (5):
page-cro, form-cro, signup-flow-cro, onboarding-cro, popup-cro, paywall-upgrade-cro
Channels Pod (2):
email-sequence, paid-ads
Growth + Intel + GTM (5):
ab-test-setup, competitor-alternatives, marketing-psychology, launch-strategy, brand-guidelines
All 29 skills now have standard sections per SKILL-AUTHORING-STANDARD.md:
✅ Proactive Triggers (4-5 per skill)
✅ Output Artifacts table
✅ Communication standard reference
✅ Related Skills with WHEN/NOT disambiguation
Subagents enriched 8 skills with additional reference docs:
seo-audit, programmatic-seo, page-cro, form-cro,
onboarding-cro, popup-cro, paywall-upgrade-cro, email-sequence
43 files, 10,566 lines added.
* feat: build 13 new marketing skills + social-media-manager upgrade
All skills are 100% original work — inspired by industry best practices,
written from scratch in our own voice following SKILL-AUTHORING-STANDARD.md.
NEW Content Pod (2):
content-production — full research→draft→optimize pipeline, content_scorer.py
content-humanizer — AI pattern detection + voice injection, humanizer_scorer.py
NEW SEO Pod (3):
ai-seo — AI search optimization (AEO/GEO/LLMO), entirely new category
schema-markup — JSON-LD structured data, schema_validator.py
site-architecture — URL structure + internal linking, sitemap_analyzer.py
NEW Channels Pod (2):
cold-email — B2B outreach (distinct from email-sequence lifecycle)
ad-creative — bulk ad generation + platform specs, ad_copy_validator.py
NEW Growth Pod (3):
churn-prevention — cancel flows + save offers + dunning, churn_impact_calculator.py
referral-program — referral + affiliate programs
free-tool-strategy — engineering as marketing
NEW Intelligence Pod (1):
analytics-tracking — GA4/GTM setup + event taxonomy, tracking_plan_generator.py
NEW Sales Pod (1):
pricing-strategy — pricing, packaging, monetization
UPGRADED:
social-media-analyzer → social-media-manager (strategy, calendar, community)
Totals: 42 skills, 27 Python scripts, 60 reference docs, 163 files, 43,265 lines
* feat: update index, marketplace, README for 42 marketing skills
- skills-index.json: 89 → 124 skills (42 marketing entries)
- marketplace.json: marketing-skills v2.0.0 (42 skills, 27 tools)
- README.md: badge 134 → 169, marketing row updated
- prompt-engineer-toolkit: added YAML frontmatter
- Removed build logs from repo
- Parity check: 42/42 passed (YAML + Related + Proactive + Output + Communication)
* fix: merge content-creator into content-production, split marketing-psychology
Quality audit fixes:
1. content-creator → DEPRECATED redirect
- Scripts (brand_voice_analyzer.py, seo_optimizer.py) moved to content-production
- SKILL.md replaced with redirect to content-production + content-strategy
- Eliminates duplicate routing confusion
2. marketing-psychology → 24KB split to 6.8KB + reference
- 70+ mental models moved to references/mental-models-catalog.md (397 lines)
- SKILL.md now lean: categories overview, most-used models, quick reference
- Saves ~4,300 tokens per invocation
* feat: add plugin configs, Codex/OpenClaw compatibility, ClawHub packaging
- marketing-skill/SKILL.md: ClawHub-compatible root with Quick Start for Claude Code, Codex CLI, OpenClaw
- marketing-skill/CLAUDE.md: Agent instructions (routing, context, anti-patterns)
- marketing-skill/.codex/instructions.md: Codex CLI skill routing
- .claude-plugin/marketplace.json: deduplicated, marketing-skills v2.0.0
- .codex/skills-index.json: content-creator marked deprecated, psychology updated
- Total: 42 skills, 27 Python tools, 60 references, 18 plugins
* feat: add 16 Python tools to knowledge-only skills
Enriched 12 previously tool-less skills with practical Python scripts:
- seo-audit/seo_checker.py — HTML on-page SEO analysis (0-100)
- copywriting/headline_scorer.py — headline quality scoring (0-100)
- copy-editing/readability_scorer.py — Flesch + passive + filler detection
- content-strategy/topic_cluster_mapper.py — keyword clustering
- page-cro/conversion_audit.py — HTML CRO signal analysis (0-100)
- paid-ads/roas_calculator.py — ROAS/CPA/CPL calculator
- email-sequence/sequence_analyzer.py — email sequence scoring (0-100)
- form-cro/form_field_analyzer.py — form field CRO audit (0-100)
- onboarding-cro/activation_funnel_analyzer.py — funnel drop-off analysis
- programmatic-seo/url_pattern_generator.py — URL pattern planning
- ab-test-setup/sample_size_calculator.py — statistical sample sizing
- signup-flow-cro/funnel_drop_analyzer.py — signup funnel analysis
- launch-strategy/launch_readiness_scorer.py — launch checklist scoring
- competitor-alternatives/comparison_matrix_builder.py — feature comparison
- social-media-manager/social_calendar_generator.py — content calendar
- readability_scorer.py — fixed demo mode for non-TTY execution
All 43/43 scripts pass execution. All stdlib-only, zero pip installs.
Total: 42 skills, 43 Python tools, 60+ reference docs.
* feat: add 3 more Python tools + improve 6 existing scripts
New tools from build agent:
- email-sequence/scripts/sequence_analyzer.py — email sequence scoring (91/100 demo)
- paid-ads/scripts/roas_calculator.py — ROAS/CPA/CPL/break-even calculator
- competitor-alternatives/scripts/comparison_matrix_builder.py — feature matrix
Improved scripts (better demo modes, fuller analysis):
- seo_checker.py, headline_scorer.py, readability_scorer.py,
conversion_audit.py, topic_cluster_mapper.py, launch_readiness_scorer.py
Total: 42 skills, 47 Python tools, all passing.
* fix: remove duplicate scripts from deprecated content-creator
Scripts already live in content-production/scripts/. The content-creator
directory is now a pure redirect (SKILL.md only + legacy assets/refs).
* fix: scope VirusTotal scan to executable files only
Skip scanning .md, .py, .json, .yml — they're plain text files
that VirusTotal can't meaningfully analyze. This prevents 429 rate
limit errors on PRs with many text file changes (like 42 marketing skills).
Scan still covers: .js, .ts, .sh, .mjs, .cjs, .exe, .dll, .so, .bin, .wasm
---------
Co-authored-by: Leo <leo@openclaw.ai>
8.4 KiB
Internal Linking Playbook
Patterns for building an internal link structure that distributes equity intelligently and reinforces topical authority.
The Three Goals of Internal Linking
- Crawlability — every page should be reachable from the homepage in 3 clicks or fewer
- Equity flow — link equity flows from authoritative pages to pages you want to rank
- Topical signals — anchor text and link context tell Google what a page is about
Most sites get none of these right. The ones that do compound their SEO advantage over time.
Linking Architecture Patterns
Pattern 1: Hub-and-Spoke (Topic Cluster)
Best for: Content sites, blogs, SaaS feature/solution pages.
Hub (Pillar) Page
├── Spoke 1 (Sub-topic)
│ └── Deep 1a (Specific guide within sub-topic)
│ └── Deep 1b
├── Spoke 2 (Sub-topic)
│ └── Deep 2a
└── Spoke 3 (Sub-topic)
Link rules:
- Hub → all spokes (contextual, in-body links)
- Each spoke → hub (with anchor text matching hub's target keyword)
- Each spoke → adjacent spokes (only when genuinely relevant)
- Deep pages → parent spoke + hub
What makes this work: The hub becomes the authority page because it receives links from everything in the cluster. Google sees a well-linked hub as the definitive resource on the topic.
Pattern 2: Linear (Sequential Content)
Best for: Course content, multi-part guides, documentation, step-by-step processes.
Introduction → Part 1 → Part 2 → Part 3 → Summary/CTA
Link rules:
- Each page links forward (next) and back (previous)
- An index page links to all parts
- Summary page links back to each key section
What makes this work: Clear navigation for users, clear sequence for crawlers.
Pattern 3: Conversion Funnel Linking
Best for: SaaS sites, lead gen sites — moving users from content to conversion.
Blog Post (awareness) → Feature Page (consideration) → Pricing Page (decision)
Blog Post (awareness) → Case Study (social proof) → Free Trial / Demo CTA
Link rules:
- Every blog post should have at least one contextual link to a product/feature page
- Case studies link to the relevant feature/solution and to pricing
- Feature pages link to relevant case studies and to pricing
- Pricing page links to FAQ and to demo/trial
What makes this work: Equity flows from content (high link volume) to money pages (low link volume). Most SaaS sites have this backwards — money pages get links from the nav only.
Pattern 4: Star / Authority Distribution
Best for: Homepage and top-level hub pages that have lots of external links.
Homepage (authority source)
├── Service Page A (direct link from homepage)
├── Feature Page B (direct link from homepage)
├── Blog Category Hub (direct link from homepage)
└── Case Studies Hub (direct link from homepage)
Link rules:
- Homepage links only to the most important pages
- Not to every blog post — to the category hubs
- Each hub then distributes equity downward
What makes this work: Homepage equity isn't diluted across 200 blog links. It concentrates on 5-8 priority pages, which then funnel it to their children.
Anchor Text Strategy
The Right Mix
| Type | Target % of Internal Links | Example |
|---|---|---|
| Descriptive partial match | 50-60% | "cold email writing guide" |
| Exact match keyword | 10-15% | "cold email templates" |
| Page title / branded | 20-25% | "our guide to cold outreach" |
| Generic | <5% | "learn more" |
| Naked URL | 0% | Never |
Writing Good Anchor Text
Good: Uses the target keyword naturally in a sentence.
"For tactical patterns, see our cold email frameworks."
Bad: Forces exact match where it sounds unnatural.
"Click here to read our cold email templates cold email cold outreach guide."
Bad: Generic — signals nothing.
"For more information, click here."
Anchor Text Diversification
Don't link to the same page with the same anchor every time. Vary it. If you have 15 internal links to your "cold email templates" page:
- 8 using variations: "email outreach templates," "cold outreach scripts," "first-email frameworks"
- 4 using exact: "cold email templates"
- 3 using title/branded: "our template library"
This looks natural and covers a wider keyword base.
Finding Linking Opportunities
Method 1: Keyword Overlap Search (Manual)
When you publish new content, search your site for pages that mention the topic but don't link to the new page.
site:yourdomain.com "cold email"
Any page that mentions "cold email" and doesn't already link to your cold email guide is a candidate for adding a contextual link.
Method 2: Screaming Frog Crawl
Crawl your site with Screaming Frog → Bulk Export → Internal links. Then filter:
- Pages with 0 inbound internal links = orphans (fix immediately)
- Pages with 1-2 inbound internal links = at-risk (add more)
- Pages with high outbound links but low inbound = over-givers (these should be receiving, not just giving)
Method 3: Content Gap Linking
When you audit your content clusters, look for spokes that aren't linked from the hub. The hub should explicitly link to every key spoke page. If it doesn't, the cluster is broken.
Orphan Page Recovery
An orphan page has no internal links pointing to it. It's effectively invisible to Google's link graph.
Step 1: Find your orphans
- Run
scripts/sitemap_analyzer.pyto get all indexed URLs - Cross-reference with your internal link graph (from Screaming Frog or GSC)
- Pages in sitemap but not in internal link graph = candidates
Step 2: Classify them
| Type | Action |
|---|---|
| Valuable content, no home | Find existing relevant pages to add contextual links from; add to relevant hub |
| Landing pages (PPC, events) | These are intentionally unlinked — check if they're accidentally indexed |
| Duplicate / thin content | Consolidate with canonical or noindex |
| Old content no longer relevant | Consider 301 redirect to updated version or 410 |
Step 3: Fix in priority order
- Orphans with inbound external links first (equity is flowing in but going nowhere)
- Orphans with good content and search potential
- Orphans with thin content (fix content first, then link)
Internal Link Audit Checklist
Run this quarterly:
- Every key page is reachable in ≤3 clicks from homepage
- Pillar/hub pages have links from all their spokes
- All spoke pages link back to their hub
- No orphan pages (pages with zero internal inbound links)
- Homepage links to 5-8 priority sections only
- Footer links limited to high-value pages (10-15 max)
- New content published in the last 30 days has at least 3 contextual inbound internal links
- No broken internal links (404s from internal sources)
- Anchor text is descriptive, not generic
- Pages with highest external backlinks are linking to money/conversion pages
Common Patterns That Fail
The Footer Dump
Putting 80 links in the footer because "they should be accessible." Google gives footer links minimal weight and won't thank you for linking to every blog post from there. Footer = navigation to key sections + legal. That's it.
The "Related Posts" Widget Approach Only
Auto-generated related posts widgets are fine as supplemental linking, but they don't replace intentional contextual linking. The widget links to "related" content by tag or category — not necessarily to what you actually want to rank. Do the manual work.
The Nav-Only Money Pages
Feature pages and pricing pages that only appear in the navigation get equity from nav links only. Powerful nav links are sitewide — but adding 5-10 contextual blog links to your pricing page is a significant equity boost. Write one blog post that organically links to pricing. That's real.
Linking to Pages You Want to Rank for the Wrong Topic
If your /blog/seo-guide has 30 internal links to it but all the anchor text says "our guide" and "learn more," you're not sending a topical signal. The link equity flows in, but Google doesn't know what topic to attribute. Fix anchor text.
Never Touching Old Posts
Old blog posts accumulate internal links over time because new posts link to them. But they rarely link out to newer, better content. When you publish new content, go back and update old posts to add contextual links to the new piece. This is one of the highest-ROI activities in content SEO.