content-plan
Skill4 starsChanged 14 days agoMITView on GitHub
Plans what a blog should publish next: a ranked list of posts, each with one keyword, one intent, a pillar, and an angle only this blog can back, plus lists of posts to refresh, merge, or cut. Use when the user asks what to write about, wants a content plan, calendar, or topic clusters, asks which old posts to update, or asks whether their posts cannibalize each other. For one post's keyword set, see keyword-research. For updating one decaying post, see refresh.
9 other projects use a version of this.
Adopted by
Most recently taken up by
- ZoolCoder/findabletheir own version, first seen Nov 1, 2026
- fliqrlabs/instagram-creator-skillstheir own version, first seen Nov 1, 2026
- codebywater/WB-OZON-AI-TEAMtheir own version, first seen Oct 25, 2026
- cuevaio/skillstheir own version, first seen Oct 3, 2026
- DRAZY/claude-skillstheir own version, first seen Sep 14, 2026
- marcus-at-localhost/market-context-kittheir own version, first seen Aug 21, 2026
Other versions9 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 9
- fliqrlabs/instagram-creator-skills★ 5same name
- codebywater/WB-OZON-AI-TEAM★ 2same name
- cuevaio/skills★ 2same name
- donatassimkus/claude-ai-skills★ 1same name
- DRAZY/claude-skills★ 1same name
- lumizone/social-content-os-claude-skill★ 0same name
- marcus-at-localhost/market-context-kit★ 0same name
- phoenixvn/claude-code-agency★ 0same name
- ZoolCoder/findable★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository14 other files it gives its agents.
- AGENTS.mdAGENTS.md
- ai-seoSkill
- articleSkill
- blog-contextSkill
- brand-voiceSkill
- house-styleSkill
- humanizeSkill
- internal-linksSkill
- keyword-researchSkill
- metaSkill
- refreshSkill
- seo-optimizeSkill
- serp-analysisSkill
- youtube-to-blogSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 3 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
Read .agents/blog-context.md.
- Distinctive: line 26
Use data when it's connected.
- Distinctive: line 29
Default to 10 to 15 new posts unless the user asks for a number.
- Distinctive: line 37
Search Console queries with impressions but no page built for them.
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Content plan
You decide what this blog should publish next. The output is a short, ranked list of posts where each one targets a distinct search intent, ladders up to a pillar, and has an angle the blog can actually back with experience or data.
You're done when every planned post has a distinct intent no existing page already serves, a pillar, a page type, and a reason it should exist, the list is ordered by what to write first, and the candidates you cut are listed with their reasons.
Initial assessment
- Read
.agents/blog-context.md. The pillars, audience, goal, and "Experience and proof" sections drive this plan. If it doesn't exist, run blog-context first or infer the pillars from the site and label them as inferred. - Get the inventory of what's already published: a sitemap, a CMS export, or a pasted list of URLs and titles. Without one, plan anyway but say you couldn't check for duplicates.
- Use data when it's connected. Search Console shows queries the site already gets impressions for, which is the strongest source of ideas. A keyword or SERP tool adds demand and difficulty. With neither, estimate and label estimates as such.
- Default to 10 to 15 new posts unless the user asks for a number.
Method
- Map the inventory. Sort existing posts under the pillars and note which pillars are thin. Pages that target the same intent as each other are cannibalization; list them for a merge.
- Gather candidates for each pillar from:
- Search Console queries with impressions but no page built for them. Look first at striking distance (an average position of about 5 to 20), where the site is already close. Check the page earning those impressions: if it's built for the query, it goes on the refresh list instead; if it only ranks in passing, plan the new post and have that page link to it.
- The real problems and questions in the audience section (keyword-research can expand any one of them).
- Comparisons, alternatives, and "how to choose" decisions readers face.
- The Experience and proof section. Posts built on the author's own tests, data, or stories are the ones competitors can't copy, and they're what readers, search engines, and AI answers reward.
- One page per intent. Merge candidates that a single page would satisfy. A quick test: if the same results rank for both searches, it's one post. Drop any candidate an existing page already serves, and add that page to the refresh list if it serves it badly.
- Score each survivor on four things: fit with the blog's goal, reader demand, winnability (forums, thin pages, or outdated posts in the top results mean an opening), and the unique angle this blog can bring. Cut anything that scores low on the last one; a post with no angle is filler. Spread the proof: if three candidates all lean on the same test or story, keep the strongest one and fold the rest in, or the posts will repeat each other. Note each candidate you cut and why. A plan that shows its rejects can be checked, and writing them down stops the ranking from sliding toward raw search volume.
- Shape clusters. For each pillar, name the hub page (existing or planned) and make sure supporting posts link up to it and across to siblings.
Output
Open with two or three lines on what the plan is based on (the inventory, which data sources, what's estimated). Then a table of planned posts in priority order with these columns: working title, primary keyword, intent, page type (how-to, comparison, review, list, explainer, opinion), pillar, demand (from data, or marked "est."), the unique angle or proof, and the hub it links to.
Then four short lists:
- Refresh instead: existing posts to update rather than duplicate, with a one-line reason each (hand these to refresh).
- Merge: pages competing for the same intent, with the URL that should survive.
- Gaps in proof: planned posts that need a test, data, or story the author doesn't have yet.
- Considered and cut: candidates that didn't make the plan and aren't already on the refresh or merge lists, one line each with the reason ("a planned post already covers it", "no angle we can back", "ranked below the cutoff on demand"). Group near-duplicates on one line. "Maybe later" isn't a reason.
Save the plan to .agents/content-plan.md unless the user said not to, so article
and keyword-research can pick topics from it and skip what's already planned.
Related skills
blog-context · keyword-research · serp-analysis · article · refresh · internal-links
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

