SEO
AgriciDaniel/seo-os
Comprehensive SEO analysis for any website or business type.
SEO + Generative Engine Optimization (GEO) for 2026 — technical SEO, on-page optimization, structured data (JSON-LD, schema.org), Core Web Vitals, citability scoring (llms.txt, entity clarity), AI…
$ npx skills add EliasOulkadi/shokunin --skill seo-geo -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install EliasOulkadi/shokunin seo-geo --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/EliasOulkadi/shokunin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.pack/skills/seo-geo .claude/skills/seo-geo && 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-geo" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/seo-geo into .claude/skills/seo-geo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-geo", 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/EliasOulkadi/shokunin/tree/master/.pack/skills/seo-geoType 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 EliasOulkadi/shokunin --skill seo-geo -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install EliasOulkadi/shokunin seo-geo --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.pack/skills/seo-geo .agents/skills/seo-geo && 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-geo" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/seo-geo into .agents/skills/seo-geo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-geo", 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 EliasOulkadi/shokunin --skill seo-geo -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install EliasOulkadi/shokunin seo-geo --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.pack/skills/seo-geo .cursor/skills/seo-geo && 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-geo" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/seo-geo into .cursor/skills/seo-geo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-geo", 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/EliasOulkadi/shokunin.git --path .pack/skills/seo-geo--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 EliasOulkadi/shokunin --skill seo-geo -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install EliasOulkadi/shokunin seo-geo --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.pack/skills/seo-geo .gemini/skills/seo-geo && 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-geo" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/seo-geo into .gemini/skills/seo-geo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-geo", 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 EliasOulkadi/shokunin seo-geoInstalls 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 EliasOulkadi/shokunin --skill seo-geo -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .github/skills && cp -r skills-src/.pack/skills/seo-geo .github/skills/seo-geo && 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-geo" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/seo-geo into .github/skills/seo-geo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-geo", 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 EliasOulkadi/shokunin --skill seo-geo -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install EliasOulkadi/shokunin seo-geo --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.pack/skills/seo-geo .opencode/skills/seo-geo && 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-geo" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/seo-geo into .opencode/skills/seo-geo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-geo", 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-geoSEO + Generative Engine Optimization (GEO) for 2026 — technical SEO, on-page optimization, structured data (JSON-LD, schema.org), Core Web Vitals, citability scoring (llms.txt, entity clarity), AI…
SEO Geo is an agent skill from EliasOulkadi/shokunin. SEO + Generative Engine Optimization (GEO) for 2026 — technical SEO, on-page optimization, structured data (JSON-LD, schema.org), Core Web Vitals, citability scoring (llms.txt, entity clarity), AI search engine optimization (ChatGPT, Gemini, Perplexity, Claude, Google AI Overviews), and brand authority building. Use when user asks to optimize a site for search engines, improve SEO, write SEO content, implement structured data, optimize for AI search/GEO, audit a page, or improve Google rankings. Do NOT use for…
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts, reference files and assets (for example `assets/seo-checklist.md`, `references/geo-strategy.md` and `references/seo-fundamentals.md`). Compatibility notes: opencode
It sits in Marketing & SEO, covering AI search optimization, Schema markup and Technical SEO. It works with OpenAI and Perplexity. The repository describes itself as: 職人 Shokunin 62 AI agent skills for OpenCode, Claude Code, Cursor, Windsurf. ChromaDB memory, MCP servers, declarative self-updates. Multi-model, open source, zero cost. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4c68e5b. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadBashWriteGrepWebFetchFrom allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Shell), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
schema.orgtwitter.comgithub.comFrom 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.
opencode
From compatibility in the SKILL.md frontmatter.
SEO Geo loads about 2.6k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 168 tokens; SKILL.md has 983 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Bash, Write, Grep, WebFetchAutomated 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); the scripts in this folder are not scanned.
The full file from EliasOulkadi/shokunin at commit 4c68e5b, republished under its MIT licence (© EliasOulkadi). 983 words, ~2,569 tokens.
.claude/skills/seo-geo/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Optimize for traditional search AND AI-powered engines. Based on Google Search Central, Moz, and GEO research (2025-2026).
| Command | Description |
|---|---|
audit-seo | Run full SEO audit (titles, meta, schema, speed, mobile) |
audit-geo | Run GEO audit (llms.txt, entity clarity, AI answer format) |
schema | Generate JSON-LD structured data for any page type |
optimize | Implement priority fixes ranked by impact |
llms | Generate/update llms.txt for AI crawler discovery |
Check: title tags (< 60 chars, keyword first), meta descriptions (< 155 chars, value prop), H1 (one per page, keyword), img alt text, OG tags, canonical, robots.txt, sitemap.xml, Core Web Vitals.
Score: 90-100% good. 70-89% fix flagged. < 70% structural issues first.
Check: llms.txt presence, ai-plugin.json, FAQ/HowTo schema, entity clarity, brand mention structure, answer format (direct answer in first 2 paragraphs).
| Fix | Impact | Effort |
|---|---|---|
| Fix crawl errors (GSC) | High | Low |
| Improve LCP < 2.5s | High | Medium |
| Add structured data (JSON-LD) | High | Medium |
| Create llms.txt | High | Low |
| Fix meta titles/descriptions | Medium | Low |
| Add hreflang (if multilingual) | Medium | Low |
| Improve internal linking | Medium | Medium |
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Brand Name",
"description": "One sentence. What you do.",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": ["https://twitter.com/handle", "https://github.com/handle"]
}Also: Article, FAQPage, HowTo, Product, BreadcrumbList, LocalBusiness (if applicable).
# Brand Name
> One-line description.
## Core pages
- https://example.com/: Home
- https://example.com/about: About
## Docs
- https://docs.example.com/api: API reference
## Blog
- https://example.com/blog/post: TitlePlace at /.well-known/llms.txt. This is how AI crawlers (GPTBot, Claude, Gemini) discover your site.
| Factor | Implementation |
|---|---|
| Citability | Publish original research, unique data. AI cites sources. |
| Entity clarity | Clear about pages. Define who/what/for whom. |
| Answer format | Direct answer in first 2 paragraphs before expanding. |
| Conversational tone | Write naturally. AI penalizes keyword stuffing. |
| Source authority | Link to .edu, .gov, peer-reviewed. Build topical authority. |
| Brand mentions | Get mentioned on authoritative sites. |
| Mistake | Fix |
|---|---|
| Keyword stuffing | Natural language. For humans first, search second. |
| No structured data | Schema critical for Google AND AI search. |
| No original research | AI cites original data. Publish unique findings. |
| Thin content (< 500 words) | Comprehensive, authoritative. |
| Ignoring Core Web Vitals | Performance is a ranking factor. |
| No E-E-A-T signals | Author bios, citations, credentials, about page. |
| Metric | Good | Needs Work | Poor |
|---|---|---|---|
| LCP (Largest Contentful Paint) | < 2.5s | 2.5-4.0s | > 4.0s |
| INP (Interaction to Next Paint) | < 200ms | 200-500ms | > 500ms |
| CLS (Cumulative Layout Shift) | < 0.1 | 0.1-0.25 | > 0.25 |
Measure with: Lighthouse, PageSpeed Insights, Web Vitals extension, CrUX dashboard.
User-agent: *
Allow: /
Disallow: /api/
Disallow: /*?*
Disallow: /search
Sitemap: https://example.com/sitemap.xmlRules:
? parameterslastmod accurately (Google prioritizes recently-changed URLs)<priority> sparingly (Google largely ignores it)<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="es" href="https://example.com/es/pagina" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />Rules:
x-default for language selector page or auto-redirect{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Title",
"author": { "@type": "Person", "name": "Author" },
"publisher": { "@type": "Organization", "name": "Site", "logo": { "@type": "ImageObject", "url": "logo.png" } },
"mainEntityOfPage": { "@type": "WebPage", "@id": "https://example.com/article" }
}Nest entities, don't flatten. Google prefers deeply-nested schema over flat arrays.
For AI search engines (ChatGPT, Gemini, Perplexity, Google AI Overviews):
llms.txt at /.well-known/llms.txt with structured content## headers better than <h2> tags| Cause | Fix |
|---|---|
| Google Search Console reports crawl errors on critical pages | Check robots.txt for accidental Disallow: / rules. Verify server returns 200 (not 5xx or 3xx loops). Submit individual URL inspection in GSC to trigger re-crawl. |
| Structured data (JSON-LD) fails Google Rich Results Test | JSON-LD must be a valid @type from schema.org (not a made-up type). Check required properties for the type. Use application/ld+json MIME type, not text/javascript. Escape HTML entities inside JSON strings. |
llms.txt returns 404 when accessed at /.well-known/llms.txt | The .well-known directory requires explicit server routing. For static sites, place at root: /llms.txt and add a redirect from /.well-known/llms.txt. For Next.js, add to public/ directory. |
| Core Web Vitals LCP > 4s despite image optimization | LCP element may not be an image — it could be a text block, video poster, or background image loaded via CSS. Identify the actual LCP element in PageSpeed Insights report. Preload critical resources with <link rel="preload">. |
| AI search engines (ChatGPT, Perplexity) ignore llms.txt | llms.txt is an emerging standard (2025-2026), not universally adopted. Complement with ai-plugin.json, comprehensive sitemap.xml, and clear entity pages. Submit to Perplexity Publisher Program separately. |
| Canonical URL points to wrong domain after migration | Stale canonicals cause duplicate content penalties. Audit all pages with a crawler (Screaming Frog, Sitebulb). Update in bulk with server-side redirects. Verify each canonical returns 200, not a redirect chain. |
| Hreflang tags return 404 or self-referencing loops | Each language variant must return a valid page. Use x-default for the language selector page. Validate with the hreflang tag tester in GSC International Targeting report. Remove broken variant links rather than leaving dead hreflang. |
| Site dropped in rankings after major redesign | URLs may have changed without 301 redirects. Audit before/after URL maps. Implement redirects for all high-traffic pages first (prioritize by organic traffic in GSC). Submit old sitemap + new sitemap to GSC simultaneously for faster re-indexing. |
© EliasOulkadi, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (scripts, references, assets) in .pack/skills/seo-geo of EliasOulkadi/shokunin.
Open the folder on GitHubat commit 4c68e5b
SEO Geo 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 Geo this skillEliasOulkadi/shokunin | 114 | — | ~2.6k | Automated safety check: Notes | MIT | |
| SEOAgriciDaniel/seo-os | 137 | 2 repos | ~3.5k | Automated safety check: Pass | MIT | |
| SEOAgriciDaniel/codex-seo | 799 | — | ~3.7k | Automated safety check: Pass | MIT | |
| SEONexus-JPF/note-companion | 870 | — | ~2.2k | Automated safety check: Pass | MIT | |
| GEO-First SEO Audit Toolzubair-trabzada/geo-seo-claude | 11k | — | ~2.8k | Automated safety check: Notes | MIT | |
| SEO Aeo Best Practicessanity-io/agent-toolkit | 188 | 2 repos | ~467 | Automated safety check: Pass | MIT |
AgriciDaniel/seo-os
Comprehensive SEO analysis for any website or business type.
AgriciDaniel/codex-seo
Comprehensive SEO analysis for any website, page, business, or topic.
Nexus-JPF/note-companion
Use and read this skill immediately if the user request is in any way related to SEO or a site's organic search or AI search presence.
zubair-trabzada/geo-seo-claude
Audits a website for AI search visibility across ChatGPT, Claude, Perplexity and Google AI Overviews while checking traditional SEO, schema and E-E-A-T content quality.
sanity-io/agent-toolkit
SEO and AEO best practices for metadata, Open Graph, sitemaps, robots.txt, hreflang, JSON-LD structured data, EEAT, and content optimized for search engines and AI answer surfaces.
tech-leads-club/agent-skills
Makes a page or site easier for AI answer engines to find, understand, trust and quote, using metadata, structured data, an llms.txt file and clear page structure.
EliasOulkadi/shokunin
Design CI/CD pipelines for GitHub Actions, GitLab CI, and CircleCI with matrix builds, test sharding, caching, Docker layer caching, OIDC auth, deployment strategies (rolling, blue-green, canary)…
EliasOulkadi/shokunin
Build production-grade components for React, Vue 3, and Svelte 5 with all states (loading, empty, error, success, idle), TypeScript strict, WCAG 2.2 accessibility, server components (RSC), and…
EliasOulkadi/shokunin
PostgreSQL database administration — backup/restore (pgdump, PITR, WAL archiving), health monitoring (connections, bloat, cache hit ratio, dead tuples), connection pooling (PgBouncer), replication…
EliasOulkadi/shokunin
Design database schemas with Prisma/Drizzle, PostgreSQL index strategy (B-tree, GIN, GiST, BRIN, Hash), query optimization (EXPLAIN ANALYZE), migration safety (expand/contract, zero-downtime), and…
EliasOulkadi/shokunin
Optimize Docker images with multi-stage builds, distroless bases, BuildKit cache mounts, multi-arch builds, compose watch, security hardening (non-root, seccomp, capabilities drop), and…
EliasOulkadi/shokunin
Design error handling, structured logging, and observability with OpenTelemetry (traces, metrics, logs), error classification, recovery patterns (retry with jitter, circuit breaker, bulkhead…
Works with
Categories
SEO + Generative Engine Optimization (GEO) for 2026 — technical SEO, on-page optimization, structured data (JSON-LD, schema.org), Core Web Vitals, citability scoring (llms.txt, entity clarity), AI…. SEO Geo is an agent skill from EliasOulkadi/shokunin.txt, entity clarity), AI search engine optimization (ChatGPT, Gemini, Perplexity, Claude, Google AI Overviews), and brand authority building.
SEO Geo fits situations like: user asks to optimize a site for search engines; write SEO content; implement structured data; optimize for AI search/GEO.
Run `npx skills add EliasOulkadi/shokunin --skill seo-geo -a claude-code`. Or copy the skill folder (.pack/skills/seo-geo in EliasOulkadi/shokunin) into .claude/skills/seo-geo in your project. Claude Code loads it when a task matches its description.
Run `npx skills add EliasOulkadi/shokunin --skill seo-geo -a codex`. Or copy the skill folder (.pack/skills/seo-geo in EliasOulkadi/shokunin) into .agents/skills/seo-geo 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 EliasOulkadi/shokunin --skill seo-geo -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-geo, .gemini/skills/seo-geo, .github/skills/seo-geo and .opencode/skills/seo-geo in your project.
Going by SKILL.md and its folder, SEO Geo needs a shell for the scripts in its folder. Our summary lists: A Bash shell. Its frontmatter pre-approves these tools: Read, Bash, Write, Grep, WebFetch. Compatibility (from SKILL.md): opencode.
SKILL.md names 3 domains. In commands or code: schema.org, twitter.com and github.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
SEO Geo is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 8.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with SEO Geo: SEO (AgriciDaniel/seo-os, 137 stars), SEO (AgriciDaniel/codex-seo, 799 stars), SEO (Nexus-JPF/note-companion, 870 stars) and GEO-First SEO Audit Tool (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.
EliasOulkadi (a GitHub user) maintains it in EliasOulkadi/shokunin, which has 114 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 5, 2026.
Source: EliasOulkadi/shokunin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.