agentleFS
XuHo-ITXuHo-IT/Content-Agent-Kit/skills/geo-optimize/SKILL.md

geo-optimize

Skill3 starsChanged 3 months agoMITView on GitHub

Write so an answer engine can quote you — ChatGPT, Perplexity, Google AI Overviews, Claude. Use when the user says "GEO", "tối ưu GEO", "generative engine optimization", "answer engine optimization", "AEO", "làm sao để AI trích bài mình", "xuất hiện trong AI Overview", or asks why traffic fell while rankings held. Also covers the OTHER thing called GEO — geography, local and market-led content — because the two share an acronym and not much else.

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 3 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Read the failures before you read the draft.

    line 35
  2. Distinctive:

    When the user means *place*, the work is different and the kit has the parts:

    line 90
  3. Distinctive:

    Every heading you added is a question somebody actually asks

    line 117

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

GEO

Two different jobs are called GEO. Say which one out loud before doing anything, because the work does not overlap.

the user meansthis is aboutgo to
Generative Engine Optimizationbeing quotable by an answer engine§1 onward
geography — local, market, "near me"being placed§6

1. What changed, in one paragraph

SEO gets a human to click a ranked link. GEO gets a machine to lift a passage out of your page and cite it, and the reader may never arrive at all. That makes the unit of success different: not a page that ranks, but a passage that still means something once it is cut out of its page. Everything below follows from that one sentence.

This is why a piece can hold its rankings and lose its traffic. Nothing about it got worse. It just was not written in a shape anything could quote.

2. Run the audit first, not last

node scripts/geo-audit.mjs --in brain/<slug>/post.md

It is rule-based — no key, no network, no model. It exits 1 when a must rule fails, so it works as a gate in the same place validate-post sits.

Read the failures before you read the draft. The rules are the shape; the draft is your opinion about the shape.

rulelevelwhat it means
answer-firstmustthe sentence under a question heading answers it, in ≤30 words, with no run-up
self-containedmustno paragraph opens on "Nó", "Điều này", "However"
sourced-numbersmustevery number says where it came from in its own paragraph
question-headingsshouldat least a third of the H2s match something a person would type
definitionshouldan "X là Y" sentence in the first screen
datedshoulda real date, not "gần đây"
tableshouldat least one — tables are the most-quoted thing on a page

3. The three musts, and why they are musts

Answer first. The paragraph under a question heading is the candidate passage. If it opens with "Trong bài này chúng ta sẽ cùng tìm hiểu…", that is what gets quoted — an announcement that an answer exists, in place of the answer. Put the answer in the first sentence and the reasoning after it. This is the inverted pyramid, and it is worth noticing that the shape answer engines reward is the one newsrooms settled on a century ago for the same reason: the reader may stop at any moment.

Self-contained paragraphs. A passage is quoted alone. A paragraph beginning "Nó rẻ hơn 68%" is true on the page and meaningless off it — what is cheaper? Name the subject again. Repetition that reads slightly redundant to a human reading top to bottom is what makes the paragraph survive extraction. Accept the redundancy.

Numbers carry their source in the same breath. "Rẻ hơn 68%" and, three paragraphs later, "số liệu từ RAG-EVAL-VN" are two passages, and only one of them will be quoted. Write "Rẻ hơn 68%, đo trên 500 câu hỏi tiếng Việt" — the claim and its warrant travel together or the claim travels alone and gets dropped.

4. What this kit already gives you, free

  • docs/12-writing-craft.md — the house rules on claims, marketing hooks and evidence.
  • frame-geo-faq-direct — direct Answer-First search query frame in video form (the search box, then the definition sentence <25 words with citation anchor).
  • genre: geo-answer in templates/VIDEO_GENRES.template.json — complete video sequence for Answer Engine queries.
  • Every number in the video pipeline is measured, not decorative — frame-chart-bars, frame-trend-line, frame-review-verdict, frame-geo-region-stat all compute their picture from the value.
  • frame-myth-fact is a question-heading in video form: the belief, then the correction.

5. What NOT to do

  • Do not stuff a FAQ block at the bottom of everything. An FAQ whose questions nobody asked is a list of headings with no traffic behind them. Write the questions you were actually asked — support tickets, comments, search console.
  • Do not write for the machine at the human's expense. Engines quote passages humans found useful; the ranking signal underneath has not disappeared.
  • Do not claim a citation you cannot see. Whether an engine cited you is not observable from your own logs in any reliable way. Report what you changed, not what you assume it won.
  • Do not add schema markup and call it done. Structured data helps a crawler parse; it does not make a badly shaped paragraph quotable.

6. The other GEO — geography

When the user means place, the work is different and the kit has the parts:

node scripts/geo-audit.mjs --in post.md --place "Đà Nẵng"

That turns on one extra must: the locality appears in the title or the first paragraph. A place named for the first time in paragraph nine is not what the piece is about, and both a local search engine and an answer engine read the opening to decide what it is about.

For video, the genre is local in templates/VIDEO_GENRES.template.json, built on the suite of geographic frames:

  • frame-geo-markers — where you are, or where your customers are. Auto-fits the map to the points you give it.
  • frame-geo-local-card — venue, restaurant, cafe, or business review card with verified rating, address, and highlight tags.
  • frame-geo-region-stat — multi-region market breakdown and comparison (e.g. Miền Bắc vs Miền Nam).
  • frame-geo-route — one place to another: expansion, delivery, a journey.

Both draw from video-templates/world-path.json, which is committed — no map tiles are fetched, so no attribution or API key is involved. See CATALOG.md for the projection and the auto-fit trap that produced a map of Indonesia from three Vietnamese cities.

7. Done means

  • geo-audit.mjs exits 0 on the draft
  • Every heading you added is a question somebody actually asks
  • You can point at each number's source without scrolling
  • You did not invent a metric for whether an engine cited you

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.