Systems Lab

Agent skill

seo-keyword-to-page

Table-driven keyword analysis and SEO content planning.

activeSelf-containedInstructions only3,928 words

Filed under Content and SEO.

From lbarberis/gtm-skills · 7 skill entries · 0 · pushed 2026-09-26

What it does when it runs

Table-driven keyword analysis and SEO content planning. Turns a site, topic or seed keywords into clustered keywords, SERP intent reads, demand and difficulty assessments, go/build/skip verdicts, a page map (blog post vs main navigation page), title tags, meta descriptions and an on-page optimization checklist, all delivered as structured tables. Use this skill whenever someone asks for keyword research, keyword analysis, an SEO content plan or content calendar, a content brief, topic clusters, which page should target a keyword, whether a keyword is worth going after, how to read search volume or keyword difficulty, title tags, meta descriptions, keyword cannibalization, an on-page SEO review, or how to show up in Google AI Overviews, even if they never say "framework" or "tables".

Automated analysis of the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about seo-keyword-to-page

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/lbarberis/gtm-skills.git /tmp/gtm-skills
git -C /tmp/gtm-skills sparse-checkout set "skills/seo-keyword-to-page"
mkdir -p ~/.claude/skills/seo-keyword-to-page
cp -R "/tmp/gtm-skills/skills/seo-keyword-to-page/." ~/.claude/skills/seo-keyword-to-page/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

Or take the whole library

This repo ships a .claude-plugin manifest, so Claude Code can install all 7 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.

/plugin marketplace add lbarberis/gtm-skills
/plugin

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from lbarberis/gtm-skills/blob/aba514c75be2102fa8c91074bb978ee36cfa050b/skills/seo-keyword-to-page/SKILL.md, which is licensed MIT (repository). 3,928 words, 21 headings.

Keyword to page: table-driven SEO planning

This skill runs keyword analysis as a fixed sequence of tables. Each table forces one decision into the open, so gaps show up as empty cells instead of hiding inside paragraphs. Work through the tables in order, fill every cell (or mark it n/a and log why in T9), and only then write the short commentary that connects them.

The core concept

SEO planning is five bets, answered in order. The numbers decide where to compete; the page decides whether you win.

Rows: the five stages of the plan. Columns: the question each stage answers, the tables that answer it, and what Google actually evaluates behind the tool metrics.

StageQuestionTablesWhat Google actually evaluates
DemandIs anyone searching for this?T1, T3Nothing directly. Volume is a tool estimate; Google matches pages to queries by meaning. Ground truth is Search Console impressions.
IntentWhat does the searcher want?T2The live results page is Google's current answer. What ranks is the brief.
WinnabilityCan we beat page 1?T4Pages and links, among many signals. Google does not use DR, DA or KD; they are third-party proxies.
PageWhat single page serves it best?T5, T6Helpful, people-first, non-commodity content with information the current results lack.
PackagingWill they click?T7, T8Title links and snippets built by Google from your title, H1 and page text, often rewritten.

House rules

Rows: the output rules. Columns: the rule, and why it exists.

RuleWhy
Think in tables. Produce each stage's table before reasoning about the next stage.Structure makes every decision explicit and comparable across keywords.
Caption every table with one line: Rows: ... Columns: ...A reader must know what a single cell means without guessing.
Prose is connective only: at most two short lines between tables, plus a closing summary of three lines or fewer.The analysis lives in the tables; prose only links them.
Never use em dashes. Use commas, colons or parentheses.House style.
Never invent a metric. Every number carries a source tag. If data is unavailable, write n/a and still complete the qualitative columns.A plausible fake volume is worse than a blank: it drives wrong priorities.
Describe tool metrics as estimates. Search Console is the only first-party performance data.Google states that third-party tools have no access to its ranking data.
Read intent and page type from the live SERP, never from the keyword's wording alone.The same words can hide opposite intents.
On how Search works, Google's documentation outranks third-party advice. Use practitioner studies only for magnitudes (click loss, rewrite rates).Keeps the plan grounded in what Google says it does.
One country and one language per analysis, stated in T0.Volume, difficulty and SERPs differ by market.

Source tags (put in a Source column, or in brackets after a value):

Rows: the tags. Columns: the tag and what it means.

TagMeaning
[Ahrefs] [Semrush] [KWP]Third-party tool estimate (KWP = Google Keyword Planner)
[GSC]Google Search Console, first-party data
[SERP]Observed on the live results page
[User]Provided by the user
[Judgment]Reasoned assessment; allowed only for qualitative scores (business value, angle, information gain)
[Illustrative]Made-up teaching data; never allowed in a real plan
n/aNot available; the reason goes in T9

Step 1: pick the mode

Rows: request types. Columns: the tables required for that request.

RequestTables required
Full keyword plan for a site or topicT0, T1, T2, T3, T4, T5, T6, T7, T9 (T8 for priority pages, or on request)
"Is keyword X worth targeting?"T0 (short), T2, T3, T4, T5, T9
Content brief for one pageT0, T1 (that cluster only), T2, T6, T7, T8, T9
Optimize an existing pageT0, T2, T7, T8 (including the cannibalization check), T9
Titles and meta descriptions onlyT0 (short), T2, T7

Step 2: get the data

Rows: the inputs the tables need. Columns: preferred source, fallback, and what to do when neither is available.

InputPreferredFallbackIf unavailable
Search volume, traffic potentialAhrefs Keywords Explorer (use a connector if one is available)Semrush; Keyword Planner rangesn/a; rank demand relatively from SERP and GSC evidence
Keyword difficultyAhrefs KDSemrush KD% (never mix tools in one table)n/a; judge from the T4 SERP columns
SERP composition (who ranks, page types, DR, linking domains)Ahrefs SERP overviewLive web search of the query: read titles, URLs, domainsNever skip: at minimum read the top 10 titles and domains
AI Overview presenceLive SERPTool SERP-features columnunknown; treat informational queries as likely affected
Own rankings and clicksSearch ConsoleAhrefs GSC reportsAsk the user for an export
Site strengthAhrefs DR of own domainMoz DAn/a; compare against the SERP qualitatively

If a data connector is available (for example an Ahrefs connector with keyword overview and SERP overview tools), use it before asking the user. If no tool data is available, say so once in a single line, then deliver every qualitative column in full. If a code tool is available, use it for character counts and priority maths.

Step 3: fill the tables

T0 Brief

Rows: the brief fields. Columns: the value, its source tag, and its status.

FieldValueSourceStatus (Confirmed / Assumed / Missing)
Site or domain
Site strength (DR)
Market: country and language
Offer: what we sell
Ideal customer
Conversion action
Existing relevant pages
Seed topics or keywords
Data access (tools, GSC)
Constraints (budget, cadence, brand rules)

Ask only for fields that block the work (market and offer). Assume the rest, mark them Assumed, and carry them into T9.

T1 Keyword universe and clusters

Rows: individual keywords. Columns: the cluster each keyword belongs to and the evidence for the grouping.

KeywordCluster headShared top-10 URLs with headParent topic (Ahrefs)VolumeSource

Rules:

  • Expand seeds from tool suggestions, autocomplete, People Also Ask, Search Console queries and the customer's own words.
  • Cluster by SERP overlap, not by similar wording. House threshold: 4 or more shared URLs in the top 10 means one page; 1 to 3 means decide by intent in T2; 0 means separate pages.
  • One page per cluster. Never create a page per keyword variation: Google understands synonyms, and mass-producing variant pages to manipulate rankings breaches its scaled content abuse policy.

T2 Intent read (the three Cs)

Rows: clusters, one per cluster head. Columns: the intent and the three Cs read from the live top 10, plus the evidence.

Cluster headDominant intentContent typeContent formatContent angleSERP featuresEvidence (top 3 results)

Rules:

  • Intent: informational, commercial investigation, transactional or navigational.
  • Content type: blog post, product page, category page, landing page, tool, video.
  • Content format: how-to, list, comparison, review, template, definition.
  • Content angle: the selling point the top results share (free, for beginners, step by step, for small teams).
  • Match type and format; differentiate on angle.
  • Mixed SERP: record the split (for example "6 guides, 4 product pages"), then follow the majority or send the cluster to Skip.
  • SERP features to record: AI Overview, People Also Ask, video, local pack, shopping, forums.

T3 Demand

Rows: clusters. Columns: raw demand, AI-adjusted demand and business value.

Cluster headHead volumeTraffic potentialTrend or seasonalityAI OverviewAdjusted demandBusiness value (1-3)Source

Rules:

  • Prefer traffic potential (organic traffic of the current #1 page across all its keywords) over single-keyword volume.
  • Adjusted demand = traffic potential × 0.42 when an AI Overview appears on an informational query; otherwise adjusted demand = traffic potential. Basis: Ahrefs' December 2025 data links an AI Overview to 58% lower click-through at position 1. Re-verify this figure yearly.
  • Business value comes before volume. A 90-search keyword with buying intent can beat 9,000 informational searches.

Rows: business value scores. Columns: the score and its meaning.

ScoreMeaning
3The searcher could buy what we sell now (product, pricing, comparison, alternatives)
2Adjacent problem our product solves, one step from a purchase
1Educational only, weak path to conversion

T4 Winnability

Rows: clusters. Columns: difficulty, what page 1 is made of, and our position against it.

Cluster headKD (tool)Linking domains impliedTop-10 DR rangeTop-10 results from sites with DR ≤ oursLinking domains to ranking pages (min to median)Our topical depth (existing pages on the topic)Winnability (1-3)

Rows: the linking domains Ahrefs estimates a page needs for the top 10. Columns: Ahrefs KD values. Use only with Ahrefs KD.

KD0102030405060708090
Linking domains needed01022365684129202353756

Rows: winnability scores. Columns: the score and the condition for it.

ScoreCondition
3Several top-10 results come from sites no stronger than ours, and we can match the ranking pages' linking domains soon
2The gap is closable within about 6 months with supporting content and link building
1Page 1 is dominated by far stronger sites whose pages carry hundreds of linking domains

KD estimates the top 10 (not the top 3), ignores on-page quality and is identical for every site. It never decides winnability on its own; the SERP columns do.

T5 Verdict and priority

Rows: clusters, sorted by priority, highest first. Columns: the three scores, the priority, the verdict and the next action.

Cluster headBusiness valueWinnabilityDemand scorePriority (BV × W × D)VerdictReason (15 words max)Next action

Demand score: 3 = top third of adjusted demand within this set, 2 = middle third, 1 = bottom third.

Rows: verdicts. Columns: the scoring condition and the action.

VerdictConditionAction
Go nowBusiness value ≥ 2, winnability 3, demand score ≥ 2Publish or optimize now
Quick winBusiness value ≥ 2, winnability 3, demand score 1Publish fast and link it to a money page
Build towardBusiness value 3 with winnability 1 or 2, or business value 2 with winnability 2Build the supporting cluster and links first; recheck in 3 to 6 months
SkipBusiness value 1, or business value 2 with winnability 1, or an intent we cannot serveLeave out and note it in T9 (keep only if the plan explicitly includes awareness content)

T6 Page map

Rows: pages, one per cluster with a Go now, Quick win or Build toward verdict. Columns: where the page lives and what it must do.

URLPage typeNew or existingPrimary keywordSecondary keywordsMain concept (one sentence)Information gainLinks toLinked from

Rows: intents from T2. Columns: the page type that serves each intent and where it lives.

IntentPage typeLives in
TransactionalProduct, pricing, sign-up, category pageMain navigation
Commercial investigationComparison, alternatives, use case, industry pageMain navigation (compare or solutions section)
InformationalGuide, how-to, template, glossaryBlog or resources directory
Navigational (own brand)Home, product, login, supportMain navigation

Rules:

  • Main concept sentence: who the page is for, the question it answers, and what it adds beyond the current top 10.
  • Information gain must name something concrete: original data, first-hand testing, real screenshots, worked examples, a tool or a template. "Better written" does not count.
  • Existing page first: if a page already targets the intent, optimize it instead of creating a new one.
  • Cannibalization: merge only pages that serve the same intent. Pages serving different intents can both rank.
  • Every blog post links to its navigation page with descriptive anchor text; every navigation page links to its supporting posts.

T7 SERP packaging

Rows: pages from T6. Columns: title, H1, meta description and slug, with exact character counts and checks.

PageTitle tagTitle charsH1Meta descriptionMeta charsSlugChecks

Rows: the packaging elements. Columns: the rule and the target.

ElementRuleTarget
TitlePrimary keyword early, one clear promise, no repeated words, no sitewide boilerplate, brand once at the end on navigation pagesAbout 50 to 60 characters. Google sets no limit but truncates to device width (about 600px on desktop).
H1The most prominent text on the page, carrying the same promise as the titleOne visible main heading
Meta descriptionUnique and specific: outcome, key facts (price, author, specs), soft call to actionAbout 150 to 160 characters. Google sets no limit.
SlugShort readable words, lowercase, hyphens, no dates on evergreen pagesFor example /freelancers or /blog/late-payment-reminder-email
Year in titleOnly if the content is genuinely re-checked for that yearGoogle treats cosmetic date changes as a warning sign

Count characters exactly, with code if available; never estimate. Google rewrites most meta descriptions and many titles, so the page's opening paragraph must carry the same promise as the tags.

T8 On-page optimization checklist

Rows: individual checks, grouped by area. Columns: the area, the check, its status, the fix, and the basis (Google = Google documentation, Research = published practitioner data, Practice = common expert practice without official backing).

AreaCheckStatus (Pass / Fix / n/a)FixBasis
PackagingTitle unique, keyword early, within about 600pxGoogle; Practice for length
PackagingOne dominant H1 matching the titleGoogle
PackagingUnique, specific meta descriptionGoogle
PackagingDescriptive slug; visible breadcrumbs with BreadcrumbList markupGoogle
ContentDirect answer or offer in the first screenGoogle (snippets come from page text)
ContentConcrete information gain versus the current top 10Google
ContentClear sections, descriptive headings, tables for comparisonsGoogle
ContentLength set by the question, not by a word countGoogle
ContentByline linked to an author page; sources citedGoogle
ContentVisible dates; date changed only with a substantial updateGoogle
ContentRelevant images placed near their text, with descriptive alt textGoogle
LinksHub and spoke links between the navigation page and its postsPractice
LinksDescriptive anchor text in crawlable <a href> linksGoogle
LinksKey pages within three clicks of home; no orphan pagesPractice
LinksOne URL per piece of content (301 first, rel="canonical" second)Google
LinksCannibalization: Search Console, filter the query, Pages tab; two URLs splitting one intent means mergePractice
TechnicalReturns 200, not blocked by robots.txt or the CDN, no stray noindexGoogle
TechnicalCore Web Vitals at the 75th percentile: LCP ≤ 2.5 s, INP ≤ 200 ms, CLS ≤ 0.1Google
TechnicalSame main content on mobile and desktopGoogle
TechnicalKey content present as text in the rendered HTMLGoogle
TechnicalNo interstitial or ad blocking the main contentGoogle
Structured dataOrganization, BreadcrumbList, Article (posts), SoftwareApplication or Product (product pages); markup matches visible textGoogle
Structured dataNo FAQ or HowTo markup added for search appearance (FAQ rich results retired 7 May 2026; HowTo in 2023)Google, via trade press
AI searchPage indexed and snippet-eligible; site included in generative AI features in Search ConsoleGoogle
AI searchNo effort spent on llms.txt, content chunking or AI-specific rewrites for GoogleGoogle
MeasurementGenerative AI performance report and Performance report reviewedGoogle
MeasurementChanges judged only after recrawl plus a few weeksGoogle

T9 Assumptions, gaps and provenance

Rows: every assumption, data gap and judgment call made in the tables above. Columns: what it is, what it affects, how much, and how to close it.

ItemType (Assumption / Data gap / Judgment)AffectsImpact (High / Medium / Low)How to close

Step 4: deliver

Order: one line stating scope, market and data sources; then the tables in T-number order; then a closing summary of three lines or fewer naming the top three pages to build and why. If the user wants a document or web page, render the same tables there with the same captions; the tables stay the backbone.

Step 5: self-check before sending

Rows: the checks. Columns: the check and whether it passes.

CheckPass?
Every table has a Rows/Columns caption
Every metric has a source tag or n/a
No invented numbers; [Illustrative] data appears only in teaching examples
Intent and page type come from the live SERP
One page per intent; no variant pages
Every cluster has a verdict
Title and meta character counts are exact
Tool metrics described as estimates, not Google facts
All assumptions and gaps listed in T9
No em dashes anywhere

What not to do (Google's documented position)

Rows: common SEO beliefs. Columns: the belief and what Google's documentation says.

BeliefGoogle's position
A higher DR or DA ranks you higherGoogle says it does not use Domain Authority, and third-party tools have no access to its ranking data
There is an ideal word countNo minimum or maximum; length alone does not matter
Keywords in the URL or domain boost rankingsHardly any effect beyond breadcrumbs
Headings must follow strict order and countOrder and count do not matter to Google Search (semantic order helps screen readers)
Meta keywords matterGoogle does not use the keywords meta tag
Duplicate content triggers a penaltyNot a spam violation; consolidate for users and crawl efficiency
E-E-A-T is a ranking factorNot by itself; ranking systems use factors that align with it
AI Overviews need llms.txt, chunking or special schemaNone needed; the same SEO fundamentals apply
Publish a page for every keyword variantUnnecessary, and at scale it breaches the scaled content abuse policy

Example of the expected format

T5 for a hypothetical invoicing SaaS with DR 35. Every value is [Illustrative].

Rows: clusters, sorted by priority. Columns: the three scores, the priority, the verdict and the next action.

Cluster headBusiness valueWinnabilityDemand scorePriorityVerdictReasonNext action
[competitor] alternatives33218Go nowBuying intent; DR 40 to 60 blogs rank with few linksBuild the /compare page
invoicing software for freelancers32318Build towardMoney term; KD 42 implies roughly 60 linking domainsPublish 4 supporting posts first
contractor invoice template23212Go nowTemplate intent, weak SERP, natural product tie-inPublish the template post
late payment reminder email2316Quick winForums rank; links to the reminders featurePublish and link to the feature page
invoice1133SkipMixed intent, dominated by the largest brandsNone

Evidence base (verified September 2026; re-verify yearly)

Rows: the facts this skill relies on. Columns: the fact and its source.

FactSource
No title length limit; truncated to device width; title links built from the title, H1 and prominent textdevelopers.google.com/search/docs/appearance/title-link
No meta description limit; snippets come mainly from page contentdevelopers.google.com/search/docs/appearance/snippet
Keyword variations, URLs, duplicates, headings, word count and E-E-A-T mythsdevelopers.google.com/search/docs/fundamentals/seo-starter-guide
Information gain tests, date changes, bylines, E-E-A-Tdevelopers.google.com/search/docs/fundamentals/creating-helpful-content
AI search runs on core ranking; no llms.txt or chunking; scaled content abuse; Search Console inclusion and reportingdevelopers.google.com/search/docs/fundamentals/ai-optimization-guide
Third-party tools have no access to Google's ranking datadevelopers.google.com/search/docs/fundamentals/third-party-seo
KD method and the KD-to-linking-domains tableahrefs.com/keyword-difficulty
Three Cs of search intentahrefs.com/seo/glossary/search-intent
Traffic potential definition; limits of search volume accuracyhelp.ahrefs.com (Traffic Potential; search volume accuracy)
AI Overview linked to 58% lower position-1 click-through (December 2025 data)ahrefs.com/blog/ai-overviews-reduce-clicks-update
Google rewrote meta descriptions 62.78% of the timeahrefs.com/blog/meta-description-study
FAQ rich results retired on 7 May 2026Google FAQPage documentation notice, reported by trade press

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what seo-keyword-to-page does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.