blog-topic-researchlisted
Install: claude install-skill AutomateLab-tech/publishing-skills
# blog-topic-research
Generates topic candidates for a blog with documented user demand. The skill exists to fight hallucinated SEO ideas: every topic it proposes must point to a URL that proves someone is asking about it.
```
research <N> topics [for cluster <C>] [--append-to <path>]
```
- `N` - number of topics to return (default 50; cap 100)
- `cluster` - if the blog has cluster taxonomy, restrict to one cluster the user names
- `--append-to <path>` - after presenting results, ask the user before appending accepted topics as JSON to the given path (a backlog file, a CSV, whatever the blog uses)
The skill is content-only: it does no scraping of its own. It drives the agent's `WebFetch` and `WebSearch` tools to fetch sources, and (optionally) shells out to a Python similarity script for the cannibalization step.
---
## The contract
For every topic the skill emits, it captures:
| Field | What it is |
|---|---|
| `topic` | Full title shaped like a long-tail query |
| `cluster` | A bucket the user defines for their blog (e.g. `n8n`, `databases`, `react-hooks`) |
| `format` | One of `how-to-fix`, `how-to-connect`, `how-to-automate`, `x-vs-y`, `what-is`, `use-case`, `listicle`, `migration`, `release-recap` |
| `demand_signals[]` | One or more, each with `type`, `url`, `evidence` (verbatim text), `strength` (1-3) |
| `signal_score` | Sum of `strength` across all signals; topic accepted only if **>=3** |
| `primary_sources[]` | At least **1** vendor doc / GitHub issue / off