Geo Fundamentals
wasp-lang/wasp
Generative Engine Optimization for AI search engines (ChatGPT, Claude, Perplexity).
Audit how a brand shows up in AI answers about its market and deliver a short report on the few changes most likely to get it mentioned or cited, such as a third-party page to get onto, an owned…
$ npx skills add every-app/open-seo --skill ai-visibility-audit -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install every-app/open-seo ai-visibility-audit --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/every-app/open-seo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/ai-visibility-audit .claude/skills/ai-visibility-audit && 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 "ai-visibility-audit" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/ai-visibility-audit into .claude/skills/ai-visibility-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ai-visibility-audit", 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/every-app/open-seo/tree/main/.agents/skills/ai-visibility-auditType 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 every-app/open-seo --skill ai-visibility-audit -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install every-app/open-seo ai-visibility-audit --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/ai-visibility-audit .agents/skills/ai-visibility-audit && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ai-visibility-audit" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/ai-visibility-audit into .agents/skills/ai-visibility-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ai-visibility-audit", 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 every-app/open-seo --skill ai-visibility-audit -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install every-app/open-seo ai-visibility-audit --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/ai-visibility-audit .cursor/skills/ai-visibility-audit && 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 "ai-visibility-audit" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/ai-visibility-audit into .cursor/skills/ai-visibility-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ai-visibility-audit", 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/every-app/open-seo.git --path .agents/skills/ai-visibility-audit--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 every-app/open-seo --skill ai-visibility-audit -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install every-app/open-seo ai-visibility-audit --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/ai-visibility-audit .gemini/skills/ai-visibility-audit && 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 "ai-visibility-audit" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/ai-visibility-audit into .gemini/skills/ai-visibility-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ai-visibility-audit", 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 every-app/open-seo ai-visibility-auditInstalls 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 every-app/open-seo --skill ai-visibility-audit -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/ai-visibility-audit .github/skills/ai-visibility-audit && 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 "ai-visibility-audit" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/ai-visibility-audit into .github/skills/ai-visibility-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ai-visibility-audit", 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 every-app/open-seo --skill ai-visibility-audit -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install every-app/open-seo ai-visibility-audit --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/ai-visibility-audit .opencode/skills/ai-visibility-audit && 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 "ai-visibility-audit" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/ai-visibility-audit into .opencode/skills/ai-visibility-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ai-visibility-audit", 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.
ai-visibility-auditAudit how a brand shows up in AI answers about its market and deliver a short report on the few changes most likely to get it mentioned or cited, such as a third-party page to get onto, an owned…
AI Visibility Audit is an agent skill from every-app/open-seo. Audit how a brand shows up in AI answers about its market and deliver a short report on the few changes most likely to get it mentioned or cited, such as a third-party page to get onto, an owned page to improve, or an access problem to fix. Use when the user asks for an AI visibility audit, a GEO or AEO audit, why AI recommends competitors instead of them, or how to show up in ChatGPT, Gemini or Google AI answers.
Its SKILL.md is about 3.3k 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 AI search optimization. It works with OpenAI. The repository describes itself as: Open source alternative to Semrush and Ahrefs. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 89e5a00. 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.
No scripts in the folder and no shell commands in SKILL.md.
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:
openseo.soFrom 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.
AI Visibility Audit loads about 3.3k tokens when it runs. Until then it costs about 109 tokens; SKILL.md has 1,901 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 every-app/open-seo at commit 89e5a00, republished under its MIT licence (© every-app). 1,901 words, ~3,260 tokens.
.claude/skills/ai-visibility-audit/SKILL.md (or your agent's skills folder).Find the work most likely to get a brand named or cited in AI answers about its market, and explain it so a non-expert can act on it. Research broadly; recommend selectively. The report leads with one to three recommendations, each tied to the answers and cited pages that justify it.
This skill reads saved answers, adds the pages behind them, and decides what to do. For demand research alone, use ai-prompt-research.
The project-context tools are free and shared with the app and other agents.
list_projects, ask only if the match is ambiguous, then call get_project_context. In SAM, use the current project and context already injected into the conversation; SAM has no get_project_context tool and needs no project selection or connection setup.business_overview, the website and the main competitors. If the overview is empty, infer it from the site, confirm it in one question, and save it with update_project_context.get_ai_visibility_tracker. Its prompts, competitors, engines, market and latest runs decide which path below applies. Check the tracker's own brand, the brands row with own: true. Its name is the project name. If that is not how people write the brand (for example a project named "Acme website"), answers that name the brand are not counted as mentions and brand questions are not treated as branded. Ask the user to rename the project in the app before collecting or interpreting answers.addKeyPages and append { updates: [{ appendResearchLog: { summary: "AI visibility audit: <run id>. Verdict: <conclusion>" } }] }.get_ai_visibility_results, get_ai_visibility_sources, get_ai_visibility_answer: the evidence. Read one run-wide results call, one run-wide sources call with the same runId, then answers you need to verify.get_ai_visibility_trend: whether visibility is moving, when the tracker has comparable history. Never compute a trend yourself from separate result calls.research_ai_visibility_prompts: the questions around a prompt group and the sources ChatGPT cites for them (US English only).explore_prompt: asks ChatGPT one prompt through its API and returns the answer, citations and fanOutQueries, the web searches the model ran before answering. Charged at actual usage per uncached answer; cached answers are free for seven days. Requires a paid plan in hosted mode.estimate_ai_visibility_cost, save_ai_visibility_tracker, set_ai_visibility_schedule, run_ai_visibility_check, get_ai_visibility_run: only for the first-run path below.get_ranked_keywords, get_serp_results, get_backlinks_overview: optional context when an owned page's search performance or authority could change a recommendation.robots.txt, the owned pages that should be cited, and the pages AI answers cite instead.recentRuns has no other. Do not buy new answers.recentRuns shows a pending or partially finished run, follow it with get_ai_visibility_run, respecting pollAfterSeconds. Do not start another. A failed or partial run still supplies whatever answers it completed; report its coverage.estimate_ai_visibility_cost, get approval once, then call run_ai_visibility_check with the approved runNowCostUsd as maxCostUsd. Follow the returned run. Do not change the schedule.research_ai_visibility_prompts. Show one plan with the check cost and the monthly cost from estimate_ai_visibility_cost, and say that a new tracker runs weekly, with its first scheduled check a week later. Get approval once, save through save_ai_visibility_tracker with each prompt's topic, and run one check with the approved runNowCostUsd as maxCostUsd. If the user wants this audit only, pause the schedule with set_ai_visibility_schedule and enabled: false. If the user declines the spend, run the audit on prompt research alone and say the report has no observed answers.Results and sources return 25 rows by default. Pass limit: 50, and when totalCount is larger than the rows returned, follow nextCursor before counting.
The default results and sources reads cover only baseline and scheduled runs. When the evidence is a manual check, including one this skill started, pass its runId to every results and sources read; otherwise the read returns no rows.
Read neutral prompts (the default) for the run. For each topic and engine record: answers collected, brand mentioned, own site cited, and which competitors appear. Rates count answered collections only. Report failed and no-answer collections separately; they are not absence.
Then derive the gap: prompts where a competitor is named and the brand is not. These are the main material for recommendations.
Call get_ai_visibility_sources once for the run, grouped by URL. For the 10–15 sources that recur most in answers where the brand is absent, classify each:
Read the five or six that decide the recommendations. For a list article: is the brand listed, and is there a way to be added (submission form, author, update date)? For a competitor page: what question does it answer that no owned page does? For a forum thread: is the brand named, and is the thread still active?
Read two or three of the gap answers with get_ai_visibility_answer (each results row's id is the observationId that get_ai_visibility_answer takes.) to confirm what the engine says and which citations sit next to the competitor's name.
Tracked answers show what gets cited but not why. For the one or two gap prompts that lead the recommendations, call explore_prompt with the exact prompt text, the default ChatGPT model and highlightBrand set to the brand. Its fanOutQueries are the searches ChatGPT ran to find sources. Tell the user it uses a small amount of credit before the first call. If it returns an error, such as no paid plan, continue without it and say so.
robots.txt and check whether it blocks AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, Google-Extended, PerplexityBot, ClaudeBot). Blocking OAI-SearchBot or the whole site is a real barrier for ChatGPT search; blocking GPTBot or Google-Extended affects model training, not live answers. Report what is blocked and what that rule controls; do not overstate it.explore_prompt returned fan-out queries, run get_serp_results for the one or two that match the gap best. A cited page that ranks for those searches while the owned page does not explains the citation, and points the recommendation at that page and query.Write five to eight candidate actions drawn from at least two kinds:
link-prospecting)For each: the prompts it serves, the evidence (answers, cited pages, engines), the proposed change, effort, and the main uncertainty. Prefer an action that matches a pattern across several prompts and engines over one that fits a single answer. A real access barrier jumps the queue. Every candidate ends as a recommendation or a row in "What else we checked" with a reason.
Deliver through the seo-report skill, saving with skill: "ai-visibility-audit" and a title like "AI Visibility Audit — Oct 2, 2026". If that skill is unavailable, say so and stop before writing HTML. Sections, in order:
h3 items in priority order. Each has Do this (two to four bullets, starting with a verb and naming the page) and Why (the prompts and engines, the cited pages behind the gap, and the main uncertainty), plus a small evidence table: Prompt | Engines naming a competitor, not you | Pages cited instead.seo-report (URL https://openseo.so/docs/skills/ai-visibility-audit, text "OpenSEO AI Visibility Audit skill"), the run ID, collection date, market, engines and coverage, then a <details><summary>Evidence and methodology</summary> block with the prompts, the answers and pages read, any fan-out queries checked, and the robots.txt rules found.In chat, lead with one sentence a founder would repeat, built from the evidence, for example: "When people ask AI for the best invoicing app for freelancers, 3 of 4 engines name FreshBooks and cite two review articles that don't list you." Then the leading recommendation and the report link.
explore_prompt answer comes from the model's API, not the consumer site the tracker observes, and it is one sample. Use it to explain why a page gets cited; never fold it into mention or citation rates.get_ai_visibility_trend for any claim about change, and only when it reports comparable.© every-app, 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 .agents/skills/ai-visibility-audit of every-app/open-seo.
Open the folder on GitHubat commit 89e5a00
AI Visibility Audit 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 |
|---|---|---|---|---|---|---|
| AI Visibility Audit this skillevery-app/open-seo | 23k | — | ~3.3k | Automated safety check: Pass | MIT | |
| Geo Fundamentalswasp-lang/wasp | 19k | 9 repos | ~861 | Automated safety check: Pass | MIT | |
| SEO GeoReScienceLab/opc-skills | 1.8k | 4 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| GEO-First SEO Audit Toolzubair-trabzada/geo-seo-claude | 11k | — | ~2.8k | Automated safety check: Notes | MIT | |
| SEO DataforseoAgriciDaniel/codex-seo | 797 | 2 repos | ~4.6k | Automated safety check: Pass | MIT | |
| Fire Your SEO Agencyleopard627/fire-your-seo-agency | 708 | — | ~1.1k | Automated safety check: Pass | MIT |
wasp-lang/wasp
Generative Engine Optimization for AI search engines (ChatGPT, Claude, Perplexity).
ReScienceLab/opc-skills
SEO & GEO (Generative Engine Optimization) for websites. An agent skill from ReScienceLab/opc-skills.
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.
AgriciDaniel/codex-seo
Live SEO data via DataForSEO MCP server. An agent skill from AgriciDaniel/codex-seo.
leopard627/fire-your-seo-agency
SEO·AEO·GEO·LLMO·NEO(네이버) 다섯 레인을 진단하고 직접 구현하며, 인용되는 콘텐츠를 계속 생산하는 서브 블로그·콘텐츠 운영 파이프라인까지 세팅하는 스킬.
Yuzzyuk/marketing-os
A complete marketing department in one skill. An agent skill from Yuzzyuk/marketing-os.
every-app/open-seo
Log genuine, recurring repository friction to .agents/PAPERCUTS.md — confusing setup, a flaky repo command or script, a misleading in-repo error, stale generated files, or a non-obvious gotcha that…
every-app/open-seo
Test a candidate OpenSEO skill end to end by running fresh, isolated Codex sessions against the local backend and scoring the reports they save.
every-app/open-seo
Turn a rough bug report, feature request, support note, or pull request into a short, plain-language issue focused on the problem and desired behavior.
every-app/open-seo
Create or update a skill in this repository the right way — canonical home in .agents/skills, internal-vs-public marking, symlink mirroring into .claude/skills, and public docs registration for…
every-app/open-seo
Remove AI writing patterns from prose so it reads like a person wrote it.
every-app/open-seo
Triage OpenSEO production errors in Cloudflare Workers Observability — verified query recipes, counting gotchas, and a known-noise filter list applied automatically.
Works with
Categories
Audit how a brand shows up in AI answers about its market and deliver a short report on the few changes most likely to get it mentioned or cited, such as a third-party page to get onto, an owned…. AI Visibility Audit is an agent skill from every-app/open-seo. Audit how a brand shows up in AI answers about its market and deliver a short report on the few changes most likely to get it mentioned or cited, such as a third-party page to get onto, an owned page to improve, or an access problem to fix.
AI Visibility Audit fits situations like: the user asks for an AI visibility audit; why AI recommends competitors instead of them; how to show up in ChatGPT; google AI answers.
Run `npx skills add every-app/open-seo --skill ai-visibility-audit -a claude-code`. Or copy the skill folder (.agents/skills/ai-visibility-audit in every-app/open-seo) into .claude/skills/ai-visibility-audit in your project. Claude Code loads it when a task matches its description.
Run `npx skills add every-app/open-seo --skill ai-visibility-audit -a codex`. Or copy the skill folder (.agents/skills/ai-visibility-audit in every-app/open-seo) into .agents/skills/ai-visibility-audit 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 every-app/open-seo --skill ai-visibility-audit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ai-visibility-audit, .gemini/skills/ai-visibility-audit, .github/skills/ai-visibility-audit and .opencode/skills/ai-visibility-audit in your project.
SKILL.md names no scripts, command-line tools or credentials: AI Visibility Audit is instructions for the agent only.
SKILL.md names 1 domain. In commands or code: openseo.so; the agent is likely to contact it when it follows the instructions. 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.
AI Visibility Audit 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.3k tokens (SKILL.md is roughly 13k 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 AI Visibility Audit: Geo Fundamentals (wasp-lang/wasp, 19k stars), SEO Geo (ReScienceLab/opc-skills, 1.8k stars), GEO-First SEO Audit Tool (zubair-trabzada/geo-seo-claude, 11k stars) and SEO Dataforseo (AgriciDaniel/codex-seo, 797 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
every-app (a GitHub organization) maintains it in every-app/open-seo, which has 22,828 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 8, 2026.
Source: every-app/open-seo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.