Blog Write
AgriciDaniel/claude-blog
Write new blog articles from scratch optimized for Google rankings and AI citations.
URL-level SEO intelligence — which keywords this page ranks for, traffic captured, position history, SERP context, and AI Search citation status.
$ npx skills add seranking/seo-skills --skill seo-page -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install seranking/seo-skills seo-page --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/seranking/seo-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/seo-page .claude/skills/seo-page && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "seo-page" agent skill from https://github.com/seranking/seo-skills/tree/main/skills/seo-page into .claude/skills/seo-page/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-page", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/seranking/seo-skills/tree/main/skills/seo-pageType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add seranking/seo-skills --skill seo-page -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install seranking/seo-skills seo-page --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/seranking/seo-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/seo-page .agents/skills/seo-page && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "seo-page" agent skill from https://github.com/seranking/seo-skills/tree/main/skills/seo-page into .agents/skills/seo-page/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-page", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add seranking/seo-skills --skill seo-page -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install seranking/seo-skills seo-page --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/seranking/seo-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/seo-page .cursor/skills/seo-page && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "seo-page" agent skill from https://github.com/seranking/seo-skills/tree/main/skills/seo-page into .cursor/skills/seo-page/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-page", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/seranking/seo-skills.git --path skills/seo-page--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add seranking/seo-skills --skill seo-page -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install seranking/seo-skills seo-page --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/seranking/seo-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/seo-page .gemini/skills/seo-page && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "seo-page" agent skill from https://github.com/seranking/seo-skills/tree/main/skills/seo-page into .gemini/skills/seo-page/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-page", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install seranking/seo-skills seo-pageInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add seranking/seo-skills --skill seo-page -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/seranking/seo-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/seo-page .github/skills/seo-page && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "seo-page" agent skill from https://github.com/seranking/seo-skills/tree/main/skills/seo-page into .github/skills/seo-page/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-page", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add seranking/seo-skills --skill seo-page -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install seranking/seo-skills seo-page --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/seranking/seo-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/seo-page .opencode/skills/seo-page && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "seo-page" agent skill from https://github.com/seranking/seo-skills/tree/main/skills/seo-page into .opencode/skills/seo-page/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-page", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
seo-pageURL-level SEO intelligence — which keywords this page ranks for, traffic captured, position history, SERP context, and AI Search citation status.
SEO Page is an agent skill from seranking/seo-skills. URL-level SEO intelligence — which keywords this page ranks for, traffic captured, position history, SERP context, and AI Search citation status. Produces a keep / refresh / consolidate / kill verdict for one page. Distinct from seo-technical-audit (which checks technical health, not keyword/traffic performance) and from seo-content-brief (which produces a NEW article from a topic). Use when the user asks "analyze this page", "page SEO performance", "what does this URL rank for", "page traffic", "should I refresh…
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Marketing & SEO, covering On-page SEO, Citation management and AI search optimization. It works with Firecrawl. The repository describes itself as: Claude SEO Skills — production Claude Agent Skills for the SE Ranking MCP server. Content briefs, AI Search share of voice, audits, backlink gaps, keyword clusters, schema… The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit fd6d140. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
SEO Page loads about 3.6k tokens when it runs. Until then it costs about 146 tokens; SKILL.md has 1,377 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from seranking/seo-skills at commit fd6d140, republished under its MIT licence (© seranking). 1,377 words, ~3,603 tokens.
.claude/skills/seo-page/SKILL.md (or your agent's skills folder).Example output: examples/seo-page-notion-keyboard-shortcuts-20260514/PAGE.md
Show what a single URL ranks for, what traffic it captures, where its weak and strong points are, and what to do about it. The deliverable is an opinionated verdict — KEEP, REFRESH, CONSOLIDATE, or KILL — anchored in objective signals from SE Ranking's URL-level data.
WebFetch tool available (for the page-level HTML sense-check).us), (c) primary topical keyword (auto-inferred from <title> + <h1> if not supplied).Validate target & preflight. See skills/seo-firecrawl/references/preflight.md for the canonical 3-stage preflight (credit balance, Firecrawl availability, Google APIs). Skill-specific notes:
og:*, twitter:*, canonical, robots meta, JSON-LD types, and hreflang count from raw <head> — WebFetch returns markdown only and strips those fields. Without Firecrawl, the affected lines in PAGE.md emit (skipped — Firecrawl not installed). Pass --no-firecrawl to treat Firecrawl as unavailable even when installed (credit conservation).skills/seo-google/references/cross-skill-integration.md § "seo-page" for the full recipe.URL-level overview DATA_getUrlOverviewWorldwide
Ranking keywords DATA_getDomainKeywords (use the url param for exact match — not filter_url)
volume × CTR-by-position (use a standard CTR curve: 1=28%, 2=15%, 3=11%, 4=8%, 5=7%, 6=5%, 7=4%, 8=3%, 9=2%, 10=2%, 11+=1%).Page authority DATA_getPageAuthority + DATA_getPageAuthorityHistory
4b. GSC URL performance + URL Inspection (only if google-api.json is present, tier ≥ 1)
python3 scripts/gsc_query.py --property "{config.default_property}" --url "{target_url}" --days 28 --jsonpython3 scripts/gsc_inspect.py "{target_url}" --site-url "{config.default_property}" --jsonPAGE.md "## Snapshot": GSC last 28d: {clicks}/{impressions}/{ctr}% CTR / pos {position} and Google sees: {INDEXED|EXCLUDED} · canonical {userCanonical} → {googleCanonical} · last crawled {date}.INDEXED + impressions > 100 + position 4–10 → harden REFRESH (clear quick-win). EXCLUDED (any reason) → harden KILL or CONSOLIDATE. userCanonical ≠ googleCanonical → flag as critical issue regardless of verdict.skills/seo-google/references/cross-skill-integration.md § "seo-page" for the full recipe.SERP context DATA_getSerpResults and DATA_getAiOverview
HTML sense-check WebFetch (always) + mcp__firecrawl-mcp__firecrawl_scrape (when available)
<title>, meta description, all <h1..h6>, lang, word count, internal-link count, image count. WebFetch returns markdown so anything in <head> beyond <title> is lost — the next bullet recovers it.formats: ["rawHtml"]) — recovers what WebFetch can't see. Pin the format to rawHtml; the default html is post-processed and silently strips canonical, hreflang, and <script type="application/ld+json"> blocks on many sites. If those head fields come back zero on a site that obviously has them (any major SaaS homepage), you forgot the rawHtml flag — re-run.metadata: og:title, og:description, og:image, twitter:card, viewport, robots meta, canonical URL.rawHtml: every <script type="application/ld+json"> block. Parse each as JSON, list detected @types (Article, BreadcrumbList, Organization, Product, etc.). Note any block that fails to parse.<link rel="alternate" hreflang="…"> occurrences in rawHtml.(skipped — Firecrawl not installed). Don't infer from markdown.Domain context DATA_getDomainOverviewWorldwide (parent domain)
Cannibalization check DATA_getDomainPages
DATA_getDomainKeywords on the parent domain — that endpoint can return tens of thousands of rows on large sites and is unnecessarily heavy for this question. DATA_getDomainPages ranked by traffic surfaces the high-impact peers directly.Synthesise verdict
PAGE.md (output spec below).Create a folder seo-page-{target-slug}-{YYYYMMDD}/ with:
seo-page-{target-slug}-{YYYYMMDD}/
├── PAGE.md (synthesised verdict + plan — primary deliverable)
├── keywords.csv (full keyword list with positions — load-bearing CSV the auditor walks through row-by-row)
├── 04-serp-context.md (top 10 + AIO for top 3–5 keywords — load-bearing reference for SERP-driven REFRESH discussions)
└── evidence/
├── 01-url-overview.md (raw DATA_getUrlOverviewWorldwide)
├── 02-keywords.md (raw DATA_getDomainKeywords filtered)
├── 03-authority.md (PA + history)
├── 05-page-snapshot.md (HTML extracts)
└── 06-cannibalization.md (peer pages on the same domain competing for the top-3 keywords)Top-level: PAGE.md + keywords.csv + 04-serp-context.md. The other step files preserve raw API/HTML extracts in evidence/ for reproducibility — auditors lean on the CSV and SERP context, not the per-call dumps.
PAGE.md follows this shape:
# Page Intelligence: {URL}
> Snapshot dated {YYYY-MM-DD} · Country: {country} · Primary keyword: {keyword}
## Snapshot
- Ranking keywords: {n}
- Estimated monthly organic traffic: {n}
- Page authority: {PA} ({↑/↓ trajectory over 90 days})
- Primary topic: {topic}
- AIO citations: {n} of {checked} primary-keyword AIOs cite this URL
- GSC last 28d: {clicks} clicks / {impressions} impressions / {ctr}% CTR / avg position {n} *(or `not configured` / `property not verified`)*
- Google sees: {INDEXED|EXCLUDED|...} · canonical {userCanonical} {→ googleCanonical if differ} · last crawled {YYYY-MM-DD}
## Page basics
- `<title>`: {value}
- meta description: {value | absent}
- `og:title`: {value | absent | skipped — Firecrawl required}
- `og:description`: {value | absent | skipped}
- `og:image`: {url | absent | skipped}
- `twitter:card`: {summary | summary_large_image | absent | skipped}
- `<link rel="canonical">`: {URL | self-referential | absent | skipped}
- meta robots: {index,follow | noindex,nofollow | absent | skipped}
- JSON-LD types detected: {Article, BreadcrumbList, Organization | none | skipped}
- hreflang variants: {n | skipped}
## What this page wins
- {keyword} — position {n}, ~{volume} monthly searches, ~{traffic} monthly clicks.
- ... (top 3–5)
## Almost-wins (page-2 refresh opportunities)
- {keyword} — position {n}, ~{volume} monthly searches. The top 3 SERP winners all do {pattern} that this page doesn't.
- ... (top 3 examples)
## What this page misses
- {keyword} — competitors {comp1}, {comp2} rank in top 5; this page is absent.
- ...
## Same-domain cannibalization
- {peer URL} — ranks position {n} for "{keyword}" (candidate ranks position {m}). Peer estimated traffic: {n}/mo.
- ... (only list rows where a peer URL ranks ≤ 20 for one of the candidate's top-3 keywords; if none, write "No same-domain cannibalization detected on top-3 keywords.")
## AI Search angle
- {n} of {checked} AIO queries on the URL's keywords cite this page.
- The AIOs that DON'T cite this page tend to cite {pattern} (e.g., comparison tables, step-by-step how-tos).
- Recommended GEO move: {one specific change}.
## Verdict: {KEEP | REFRESH | CONSOLIDATE | KILL}
Reasoning: {1–2 sentences anchored in objective signals from above}.
### If REFRESH — top 3 changes
1. {Specific change}
2. {Specific change}
3. {Specific change}
## Raw data
- keywords.csv — full enriched ranking-keyword list
- 04-serp-context.md — per-keyword SERP top-10 with AIO
- evidence/05-page-snapshot.md — HTML extractskeywords.csv columns: keyword,volume,kd,position,intent,traffic_estimate,url
DATA_getCreditBalance before running. ~10–15 credits is typical for one URL.INDEXED + impressions > 100 + average position 4–10 (clear quick-win territory).EXCLUDED for any reason.userCanonical ≠ googleCanonical, flag this as a critical issue in PAGE.md regardless of the verdict — it points at indexing instability that the verdict on its own can't resolve.PAGE.md to a number from the raw data files.keywords.csv is the auditable trail. If a stakeholder questions the verdict, walk them through the CSV row by row.DATA_getPageAuthorityHistory all-zeros caveat: if the endpoint returns inlink_rank: 0 (or equivalent) for every date in the history window, treat as "insufficient history" — don't claim a drop or recommend REFRESH based on it. Often happens for very high-authority pages where the metric is saturated, or for URLs that haven't accumulated enough longitudinal data. Cross-check with DATA_getPageAuthority (current value) — if current PA is meaningful but history is flat-zero, flag the gap explicitly in PAGE.md rather than synthesising a trajectory.© seranking, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/seo-page of seranking/seo-skills.
Open the folder on GitHubat commit fd6d140
SEO Page next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| SEO Page this skillseranking/seo-skills | 160 | — | ~3.6k | Automated safety check: Pass | MIT | |
| Blog WriteAgriciDaniel/claude-blog | 2.3k | 1 repos | ~5.6k | Automated safety check: Pass | MIT | |
| Blog BriefAgriciDaniel/claude-blog | 2.3k | — | ~3.2k | Automated safety check: Pass | MIT | |
| AI Citability Scorerzubair-trabzada/geo-seo-claude | 11k | 2 repos | ~3.7k | Automated safety check: Notes | MIT | |
| GEO Platform Optimizerzubair-trabzada/geo-seo-claude | 11k | 2 repos | ~4.7k | Automated safety check: Notes | MIT | |
| Geo Site Diagnoseyaojingang/GEOHub | 165 | — | ~515 | Automated safety check: Pass | AGPL-3.0 |
AgriciDaniel/claude-blog
Write new blog articles from scratch optimized for Google rankings and AI citations.
AgriciDaniel/claude-blog
Generate detailed content briefs for blog posts with target keywords, content outlines, competitive analysis, recommended statistics, image and chart suggestions, word count targets, internal…
zubair-trabzada/geo-seo-claude
Scores how likely AI assistants are to quote passages from a web page and suggests rewrites that make those passages easier to extract.
zubair-trabzada/geo-seo-claude
Audits a site for AI search visibility one platform at a time, scoring Google AI Overviews, ChatGPT, Perplexity, Gemini and Bing Copilot and listing gaps to fix.
yaojingang/GEOHub
Crawl one public website from a supplied URL, select up to ten representative page types, score evidence-lined GEO readiness, and generate a standalone visual HTML report.
AgriciDaniel/claude-seo
Hub for site-wide SEO work: audits, technical checks, schema, content quality, local, hreflang and AI-search readiness, run through slash commands.
seranking/seo-skills
Direct access to Google's own SEO data via Search Console (Search Analytics, URL Inspection, Sitemaps), PageSpeed Insights v5, CrUX field data with 25-week history, Indexing API v3, GA4 organic…
seranking/seo-skills
SE Ranking API integration architect. An agent skill from seranking/seo-skills.
seranking/seo-skills
E-E-A-T + CITE quality audit for an EXISTING piece of content.
seranking/seo-skills
Generate a writer-ready SEO content brief from a target domain and topic.
seranking/seo-skills
Capture an SEO baseline snapshot for a domain or URL, then on later runs compare the current state and surface regressions.
seranking/seo-skills
Ad-hoc web scraping, site mapping, and full-site crawling via Firecrawl MCP.
Works with
Categories
URL-level SEO intelligence — which keywords this page ranks for, traffic captured, position history, SERP context, and AI Search citation status. SEO Page is an agent skill from seranking/seo-skills. URL-level SEO intelligence — which keywords this page ranks for, traffic captured, position history, SERP context, and AI Search citation status.
SEO Page fits situations like: the user asks analyze this page; page SEO performance; what does this URL rank for; should I refresh this page.
Run `npx skills add seranking/seo-skills --skill seo-page -a claude-code`. Or copy the skill folder (skills/seo-page in seranking/seo-skills) into .claude/skills/seo-page in your project. Claude Code loads it when a task matches its description.
Run `npx skills add seranking/seo-skills --skill seo-page -a codex`. Or copy the skill folder (skills/seo-page in seranking/seo-skills) into .agents/skills/seo-page in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add seranking/seo-skills --skill seo-page -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/seo-page, .gemini/skills/seo-page, .github/skills/seo-page and .opencode/skills/seo-page in your project.
Going by SKILL.md and its folder, SEO Page needs the command-line tools its instructions call (python3). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
SEO Page is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with SEO Page: Blog Write (AgriciDaniel/claude-blog, 2.3k stars), Blog Brief (AgriciDaniel/claude-blog, 2.3k stars), AI Citability Scorer (zubair-trabzada/geo-seo-claude, 11k stars) and GEO Platform Optimizer (zubair-trabzada/geo-seo-claude, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
seranking (a GitHub organization) maintains it in seranking/seo-skills, which has 160 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on June 25, 2026.
Source: seranking/seo-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.