Blog Keyword Conflict Detector
Find competing blog pages and decide whether to merge, differentiate, canonicalize, or monitor them.
The skill distinguishes local and DataForSEO API modes and discloses environment-variable credentials, approximate API cost, and external data flow. However, it does not require confirmation before billable API calls, explain least-privilege credential scope, isolate responses, define retention, or provide rollback; its recommendations include potentially consequential merge, 301, canonical, and noindex changes. Points are deducted for these gaps.
The workflow, modes, and abnormal cases are documented, including missing files, missing credentials, 429 responses, and single-post directories. However, the key implementation is not provided, semantic clustering depends on undefined Claude judgment, and URL collection and API-call reproduction details are incomplete. Static calibration caps this at 10.
Trigger phrases, directory input, default local mode, and --api boundaries are reasonably clear, and local analysis avoids API-key requirements. There is no Chinese-language support statement; the API example hard-codes language_code=en and location_code=2840, which may not fit Chinese users or mainland-China search contexts. Non-fit boundaries are also incomplete.
Frontmatter supplies the name, description, user-invokable flag, argument hint, and MIT license. The document is layered into modes, steps, outputs, recommendations, and error handling, with examples. Skill-specific versioning, changelog, maintenance ownership, and update path are absent; governance is supported mainly by repository-level context, so points are deducted.
The objective, severity levels, formula, report fields, and MERGE/DIFFERENTIATE/CANONICAL/NO ACTION recommendations are explicit, making the local core task plausible. However, the extraction and semantic rules are coarse, API-to-report behavior is not verified in the skill file, and recommendations still require human review. Static calibration caps this at 7.
The skill includes auditable rules, endpoints, request examples, and failure conditions, but no skill-specific tests, fixed sample outputs, or third-party execution evidence. The supplied repository tests mainly cover a general analyzer and delivery contract, not this skill's key paths. Static calibration caps this at 5.
- Before using --api, obtain explicit user confirmation for DataForSEO charges, credential scope, and the URLs being transmitted; the skill does not define these controls.
- Treat MERGE, 301, canonical, and noindex recommendations as review items, not automatic actions; require an owner-approved and reversible publishing plan.
- Chinese-language and mainland-China search fit are unverified; the fixed English language and U.S. location parameters may distort results.
- Semantic similarity, primary-keyword extraction, and severity decisions lack reproducible tests; reports should disclose uncertainty and receive manual sampling review.
What does this skill do, and when should you use it?
This is the keyword-cannibalization skill bundled in claude-blog. It reads Markdown, MDX, and HTML posts, extracts keyword signals from titles, headings, opening paragraphs, and metadata, then clusters pages competing for similar search intent. Its default local mode is free and requires no API key; an optional DataForSEO mode adds SERP-level overlap, ranking, and search-volume data. The resulting report assigns severity and recommends MERGE, DIFFERENTIATE, CANONICAL, or NO ACTION.
Scans a target directory for .md, .mdx, and .html files while skipping node_modules, .git, and drafts; extracts primary and secondary keyword signals from titles or H1s, H2s, the first paragraph, and frontmatter metadata; groups posts by exact, stem, semantic, and subset matches; scores clusters locally from content signals or calls DataForSEO Page Intersection and Ranked Keywords in API mode; produces a summary table, overlapping-keyword lists, stronger-page assessment, severity, and remediation recommendations.
- A content team is consolidating an archive and needs to identify posts targeting the same query.
- An SEO lead sees multiple pages ranking for related terms and wants a prioritized cannibalization audit.
- A solo blogger wants a free pre-publication scan for keyword conflicts among existing posts.
- An agency needs shared keywords, search volume, and ranking positions for a SERP-level client review.
What are this skill's strengths and limitations?
- The default local mode is free and needs no API key.
- Supports Markdown, MDX, and HTML blog content.
- Combines several content signals and turns overlap into concrete recommendations.
- API mode adds shared keywords, search volume, and ranking-position data.
- Severity levels and four recommended actions help prioritize remediation.
- SERP-level analysis requires DataForSEO credentials and costs about $0.01 per Page Intersection call.
- Local analysis has no actual ranking, search-volume, or SERP evidence.
- At least two supported blog files are required.
- The source provides no skill-specific test-coverage or accuracy metrics.
How do you install this skill?
Install it as part of the public AgriciDaniel/claude-blog plugin collection. In Claude Code 1.0.33+, run:
/plugin marketplace add AgriciDaniel/claude-blog
/plugin install claude-blog@agricidaniel-claude-blog
Restart Claude Code afterward. The source does not document a separate installation command for this single sub-skill.
How do you use this skill?
From a project containing at least two blog posts, run:
/blog cannibalization [directory]
This uses local analysis by default. Add --api for DataForSEO SERP data, after setting DATAFORSEO_LOGIN and DATAFORSEO_PASSWORD. The skill reports missing files, single-post directories, and missing credentials; missing API credentials trigger an automatic fallback to local mode.