by eullr
Open Agent Skill (SKILL.md) for GEO / AI visibility content. Create and rebuild web content so ChatGPT, Gemini, Perplexity and AI Overviews extract, cite and mention it. CC BY 4.0, by Eugen Ullrich
# Add to your Claude Code skills
git clone https://github.com/eullr/geo-content-engineeringGuides for using ai agents skills like geo-content-engineering.
geo-content-engineering is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by eullr. Open Agent Skill (SKILL.md) for GEO / AI visibility content. Create and rebuild web content so ChatGPT, Gemini, Perplexity and AI Overviews extract, cite and mention it. CC BY 4.0, by Eugen Ullrich. It has 0 GitHub stars.
geo-content-engineering's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/eullr/geo-content-engineering" and add it to your Claude Code skills directory (see the Installation section above). geo-content-engineering ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh geo-content-engineering against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Build web content that generative engines will pull into their answers. The goal is not ranking in a list of blue links. The goal is being the block of text a model extracts, the source it cites, and the brand it names when a user asks a question.
Generative systems do not read a page top to bottom. They split it into semantic blocks (chunks), turn each block into a vector embedding, and for any given prompt they retrieve the single block whose embedding is closest to the prompt. That retrieved block is what gets quoted, summarized, or cited. One sharp, self-contained paragraph often beats an authoritative domain, because the model scores the block, not the whole site.
Everything in this skill follows from that mechanic. Full explanation in
references/mechanics.md. Read it once if the user is new to GEO.
Three layers have to be right, in this order. A perfect text on a page a bot cannot read is invisible. So gate access first, then structure, then reputation.
references/crawler-access.md.references/offpage-mentions.md.Mode A: New content. The user is creating a page that does not exist yet. Go straight to Build.
Mode B: Rebuild an existing page. The user has a live URL that underperforms in AI answers. Do not touch the text until you have a baseline, or you will not be able to prove the rebuild worked. Run these first:
references/measurement.md.references/crawler-access.md. If
the bot cannot render the page, fix that first. Rewriting an unreadable page
is wasted effort.Then both modes converge on Build.
Use the page skeleton in assets/page-structure.md as the frame. Fill it by
applying six content rules. Each rule has a full reference file; read the file
when you need depth, not before.
Semantic chunking. One block, one claim. Answer first, then evidence.
Every block has to make sense lifted out of the page on its own. Name the
entity instead of using pronouns ("the Model X battery," not "it"). Phrase H2
and H3 headings as the questions users actually ask.
→ references/chunking.md
Dense, plain language. Active voice, short sentences, no filler. Every
wasted word blurs the block's embedding and makes it lose retrieval to a
tighter competing block. When there is no blanket answer, state the condition
directly ("if you need A, choose option 1") instead of hedging.
→ references/language.md
Citation-worthiness. Give the model something it cannot get elsewhere:
concrete numbers, ranges, prices, technical parameters, and your own data.
"42 percent faster" is quotable; "much faster" is not. Duplicate the key
figure of any chart or calculator in plain text, or the model cannot read it.
→ references/citation-worthiness.md
Query fan-out coverage. Engines split one complex prompt into
sub-questions and answer each separately. Cover the adjacent questions
(price, risks, alternatives, step-by-step, common mistakes) as their own
blocks and FAQ entries, so one page can feed several parts of one answer.
→ references/query-fan-out.md
Recency. Models favor fresh content, sometimes over better but older
content. Put a visible date marker in the text ("As of 03/2026: ...") and
keep a short "What changed" box. A CMS timestamp alone does not count, and
changing the date without a real update is detectable and increasingly
penalized.
→ references/recency.md
Authorship and trust (E-E-A-T). Named, verifiable authorship beats
anonymous content in retrieval. Add an author box with name, credentials, and
a profile link, and keep those details consistent with external profiles.
→ references/author-eeat.md
Machines read code structure, not visual layout. Something that looks like a
table but is built from div containers is useless for extraction. Before
publishing, confirm:
article, main, header) mark what is content and what
is chrome.table markup, not styled divs. Tables are among the
most frequently lifted elements.Article for posts, Person for authors,
FAQPage for question blocks, Product and Offer for offerings.Full requirements in references/semantic-html.md. Paste-ready JSON-LD in
assets/json-ld-snippets.md.
Run the finished text against references/anti-patterns.md before calling it
done. Two failure classes matter most:
When the page goes live, record the URL and publish date in an input register.
Without that record you cannot later attribute any change in visibility to this
work. The register entry is part of publishing, not an optional follow-up. Format
in references/measurement.md.
Web traffic is a weak KPI here, because users get their answer inside the AI interface without clicking (zero-click). Measure presence in the answers themselves.
Prefer shares over raw counts, benchmark the same prompts for competitors, and
validate sentiment by hand on a sample. Full algorithm and blind spots in
references/measurement.md.
If the user has to choose which pages to rebuild first, prioritize by prompt
demand, competitor gap, business value, and effort, after filtering out any URL
the bot cannot reach. See references/prioritization.md.
| File | Read it when |
|---|---|
references/mechanics.md |
The user is new to GEO and needs the why |
references/chunking.md |
Structuring text into extractable blocks |
references/language.md |
Tightening sentences and wording |
references/citation-worthiness.md |
Adding facts that force a citation |
references/query-fan-out.md |
Covering sub-questions and comparisons |
references/recency.md |
Date markers and update handling |
references/author-eeat.md |
Author boxes and trust signals |
references/crawler-access.md |
Checking or fixing bot access (gate) |
references/semantic-html.md |
Markup, tables, JSON-LD, architecture |
references/offpage-mentions.md |
External mentions and consistency |
references/measurement.md |
Baseline, tracking, Share of Mentions |
references/prioritization.md |
Choosing which pages to rebuild first |
references/anti-patterns.md |
Final blocking quality pass |
references/glossary.md |
Definitions and tool-terminology mapping |
references/worked-example.md |
A full before/after rebuild with rule map |
references/evidence-and-sources.md |
What is well-established vs still iterative |
assets/page-structure.md |
The page skeleton to fill |
assets/faq-block.md |
FAQ block template |
assets/update-box.md |
"What changed" box template |
assets/json-ld-snippets.md |
Paste-ready structured data |
There is no industry standard for optimal chunk length, and different engines cut and score differently, so the work is iterative: publish, measure, sharpen the blocks that fail to get extracted. Retrieval is a black box with no guarantees. This skill improves the odds; it does not promise placement.
Based on the OKF knowledge bundle "LLM-Content-Erstellung" by Eugen Ullrich (eullrich.com), CC BY 4.0. Attribution required: Eugen Ullrich, eullrich.com. Contact: hi@eullrich.com.
An open Agent Skill (SKILL.md format) for creating and rebuilding web content so generative engines (ChatGPT, Gemini, Perplexity, Google AI Overviews) extract, cite, and mention it. This is the discipline called GEO (Generative Engine Optimization), also known as AI visibility, LLM SEO, or answer engine optimization.
The skill turns a general agent into a GEO content specialist. It walks the agent through the retrieval mechanic (chunk, embed, retrieve, ground, cite) and applies it as a repeatable workflow: gate crawler access, structure text into extractable blocks, force citations with concrete data, cover query fan-out, keep content fresh, add verifiable authorship, apply correct semantic markup and JSON-LD, strip machine-tell language, publish with an input register, and measure Share of Mentions against a competitor benchmark.
It covers two modes: creating new content, and rebuilding existing pages (baseline first).
geo-content-engineering/
├── SKILL.md # workflow core + reference map
├── references/ # deep concept files, loaded on demand
├── assets/ # paste-ready templates and JSON-LD
└── LICENSE.md # CC BY 4.0
Place the folder in your agent's skills directory (for example
~/.claude/skills/ for Claude Code, or upload in claude.ai settings). The agent
loads the full instructions only when a task matches the description.
CC BY 4.0. Based on the OKF bundle "LLM-Content-Erstellung" by Eugen Ullrich (eullrich.com). Attribution required: Eugen Ullrich, eullrich.com.