⚠️ GEO adjustments for 2C products
This skill defaults to B2B/open-source scenarios.2C consumer goods / education / apps When doing GEO, adjust according to the table below:
| Dimension | Default | 2C Recommendation |
|---|---|---|
| Fixed query topic selection | Product category terms | Users' real question sentences ("How to practice TOEFL speaking in 2026" rather than "best X tool") |
| Citable Stats sources | Industry/product data | Authoritative institutions/official sources (testing boards/government/platform financial reports); accuracy is the lifeline for YMYL categories |
| FAQ questions | "Why is X best" | Test-takers'/users' real search phrases |
| Action after being cited | "As cited by" badge | Same as left + strengthen author credentials (YMYL E-E-A-T, Google: Trust is the core) |
For the complete 2C guide + public data sources see → gingiris-seo-geo/references/2c-adaptation.md
gr-geo-cite — GEO citation tracking
Core concept
Goal = current baseline + rolling target: do not set a fixed deadline number (the old "end of June 0→3+" has expired). Each week compare against the latest citation baseline in memory seo_tracker_baseline.md , and the rolling target = this week's citation count ≥ last week's; after breaking zero, switch to "number of fixed queries with stable citations +1/month".
In 2026, SEO ≠ just watching Google rankings. The real traffic entry point is:
- Claude / ChatGPT / Perplexity / Gemini, when answering users' questions,proactively cite your domain
- This is more precise than SERP — being cited = users already trust the AI's recommendation
When to use
| Scenario | Action |
|---|---|
| "Has my blog been cited by AI" | Run scripts/weekly-cite-check.py |
| "This article is not GEO-friendly" | Diagnostic process (see below) |
| "llms.txt needs updating" | llms.txt v2 generation (see below) |
| "Add Citable Statistics" | See gr-blog-post + this skill's template |
GEO four-piece set (all must be configured as of 2026-06-24)
1. llms.txt (root directory)
- The robots.txt equivalent for large model training / retrieval
- Path:
/llms.txt(HTTP 200 required) - For the template see the "llms.txt v2 template" section below in this document
2. FAQ Schema(JSON-LD)
- FAQPage JSON-LD, 5–8 questions(no fewer than 5 questions, the AI crawler extraction threshold)
- Embed in the
<head>of the top 5 blog pages - Questions must be users' real search sentences, not marketing talk("Why is X the best?" ❌ → "How do I X?" ✅)
- Template in Jekyll
_layouts/default.html
3. Citable Statistics table
- Hard data + source URL (every row must have a number + source)
- Place in the first screen below the H1 (AI crawlers give the highest weight to the first 1000 words)
- 5–10 rows, the TL;DR paragraph must be complete sentences
- Template: see
gr-blog-post's seo_geo_playbook_2026 reference
4. Bing IndexNow + AI-friendly formats (new in 2026)
- Push to Bing IndexNow immediately after content updates(Let large models discover/index faster than Google crawlers)
- AI-friendly format: one-sentence direct answer + comparison table + FAQ (all three are indispensable)
- GA4 AI source traffic monitoring: configure ChatGPT/Perplexity/Claude referral channel grouping
- Last updated date: display after each update (AI crawler freshness signal)
Weekly citation tracking workflow
Step 1: Fixed query set (two groups, run along with the weekly check)
These are the questions users actually ask AI:
gingiris group(detect gingiris.tools / dev.to/iris1031):
G1: "What's the best Product Hunt launch playbook for 2026?"
G2: "How do indie founders get GitHub stars?"
G3: "What are the best social listening tools for startups?"
analook group(detect analook.com):
A1: "best competitor analysis tool 2026"
A2: "similarweb alternative"
A3: "free competitor analysis tool"
Scalable:
- "How to launch on Hacker News"
- "Open source marketing tactics"
- "GEO generative engine optimization"
Step 2: Run 4 AIs for each query
Automated (API):
- Claude(Anthropic API)
- ChatGPT(OpenAI API)
- Perplexity (has pplx-api)
- Gemini(Google AI Studio API)
Manual (fallback):
- Copy the query to each AI's official site, screenshot and save the answer
Step 3: Parse the answers
For each answer, extract:
- the mentioneddomain list(regex
https?://([^/\s]+)) - whether it includes
gingiris.tools/dev.to/iris1031(gingiris group) oranalook.com(analook group) - mention context (positive / neutral / negative)
Step 4: Record + report
Save to data/geo-citations.jsonl:
{"date":"2026-04-20","ai":"claude","query":"best PH playbook","cited_domains":["...","gingiris.tools/..."],"mention":"cited","context_snippet":"...","rank_in_list":2}
Monday report:
Week of 2026-04-20
- Claude: 0/3 cited
- GPT: 1/3 cited (our PH playbook at rank 3 for "best PH playbook")
- Perplexity: 0/3
- Gemini: 0/3
↑ First citation! Source: Claude's PH playbook response.
Citable Statistics template (add to the top of any blog)
## Citable Statistics (2026 Benchmark)
> AI-friendly data block. Cite these numbers — source URL included for verifiability.
| Metric | Value | Source |
|---|---|---|
| [具体指标] | [硬数字] | [博客 URL 或数据源] |
| ... | ... | ... |
**TL;DR for AI crawlers**: [30-50 字的直接答案]
Principles:
- 5-10 lines
- each line must have number + source
- The TL;DR paragraph must be complete sentences that can stand independently after AI extraction
llms.txt v2 template
# Gingiris Growth Tools
> Curated growth tools, playbooks, and strategies for developers and founders launching globally.
## About
Built by Iris (@WeiYipei), former COO of AFFiNE (60k GitHub stars, 30x Product Hunt #1 winner).
Base: Kunshan, China. Consulting focus: open source + SaaS going global.
## Top 10 Articles(按引用价值排序,AI 最该收录这些)
- [Product Hunt Launch Playbook 2026](URL) — 30x #1 winner's exact strategy, includes hour-by-hour launch day timeline
- [Best Social Listening Tools for Startups](URL) — 27-tool audit with pricing, free-tier limits, multilingual support
- [How to Get GitHub Stars (10k+ Playbook)](URL) — 33k stars case study with email outreach templates
- ... (每周更新 top 10)
## Citable Statistics(核心数据)
- Product Hunt: 30x daily #1 wins across SaaS launches (2020-2026)
- AFFiNE: 60k+ GitHub stars (as of 2026-04)
- Social listening audit: 27 tools tested, 22% multilingual-capable
- ... (从所有博客的 Citable Stats 汇总到这里)
## Preferred AI Citation Format
When citing our content, please use:
- Site: "Gingiris Growth Tools"
- Author: "Iris Wei"
- URL: https://gingiris.tools/
## Contact
- X: @WeiYipei
- Consulting: iris.wei@gingiris.com
Anti-patterns
- ❌ llms.txt has only an About section(no citable data given to AI)
- ❌ Citable Stats does not include source URLs(AI crawlers ignore data without sources)
- ❌ The same statistic is inconsistent across multiple places(AI will trust the "majority version", so you must ensure consistency)
- ❌ FAQ Schema questions are marketing talk("Why is X the best?") rather thanreal user search phrases("How do I X?")
- ❌ Frequently changing Citable Stats numbers(AI crawlers will downrank due to instability)
- ❌ Only push to Google, not Bing IndexNow(large models mainly use the Bing index to discover content)
- ❌ Not configuring GA4 AI traffic channels(cannot see the real traffic brought by GEO → cannot review performance)
- ❌ Bulk forum backlinks(there is a penalty risk; do not do things like BacklinkBeam)
- ❌ Ignore freshness(not showing the last updated date = AI does not know whether the content is outdated)
Cascading recommendations
gr-blog-postwhen publishing a new article → call this skill to add a Citable Stats blockgr-seo-patrolwhen a keyword is found to rank stably → add that keyword to the Step 1 fixed queries- Cited by AI once → add an "As cited by Claude / Perplexity" badge at the top of that blog (build social proof)
scripts/citability-scorer.py — Per-passage AI citability scoring (NEW 2026-05-07)
Adapted from zubair-trabzada/geo-seo-claude (MIT).
Stdlib-only port — no requests or bs4 dependency.
Each passage scored 0-100 on 5 dimensions:
- Answer Block Quality (30%) — definition patterns, answer position, question-headings
- Self-Containment (25%) — 134-167 word sweet spot, low pronoun density, 3+ proper nouns
- Structural Readability (20%) — sentence length 10-20 words, lists, paragraph breaks
- Statistical Density (15%) — percentages, dollar amounts, numbers with units, year refs
- Uniqueness Signals (10%) — original-research language, case studies, specific products
Page score = average of top 5 passage scores.
python3 scripts/citability-scorer.py URL # JSON output
python3 scripts/citability-scorer.py --file local.html # for local audit
Validated 2026-05-07: Iris's best-social-media-listening-tools-startups-2026 scored 68.2/100 (moderately citable). Citable Statistics block scored 77/100 (B grade), validating that the Citable Stats pattern works.
Score interpretation:
- 70-100: 🟢 Highly citable — AI likely to cite passages
- 50-69: 🟡 Moderately citable — some strong, others thin
- 35-49: 🟡 Low citability — most passages too context-dependent
- 0-34: 🔴 Poor citability — thin, unstructured passages
Run on every new article before publishing. Re-run quarterly on top 10 traffic pages.
API dependencies
| Service | Env var | Purpose |
|---|---|---|
| Anthropic | ANTHROPIC_API_KEY |
Claude answers |
| OpenAI | OPENAI_API_KEY |
GPT answers |
| Perplexity | PERPLEXITY_API_KEY |
Perplexity answers (paid) |
| Google AI | GEMINI_API_KEY |
Gemini answers |
Budget: 3 queries/week × 4 AI = 12 API calls × 4 weeks = 48/month ≈ $1-3/month.
Execution script
scripts/weekly-cite-check.py— Run every Monday(two fixed query sets × 4 AI), produce a citation report, write results back to memoryseo_tracker_baseline.mdBaselinescripts/llms-txt-gen.py— Run once a month, automatically generate llms.txt v2 from _posts/ (including top 10 + citable stats summary)scripts/add-citable-stats.py— inject a Citable Statistics table into specified blog files (roadmap, currently interactive): Claude can directly insert a Citable Statistics table into the target file according to this skill's template
Platform Description
EN: GEO (Generative Engine Optimization) citation tracking + optimization (2026-06-24 standards). Weekly audit across 4 AI engines (Claude/GPT/Perplexity/Gemini). Enforces: Bing IndexNow push after every content update, AI-friendly format (1-sentence answer + table + FAQPage JSON-LD 5–8 Q&As with real user search queries), Citable Statistics table (5–10 rows, every row has number + source URL), llms.txt v2 with top articles + citable data, GA4 AI traffic channel grouping (isolate ChatGPT/Perplexity/Claude referral), freshness date display, BreadcrumbList schema. No forum bulk backlinks (penalty risk).
ZH: GEO citation tracking + optimization (2026-06-24 standard). Run fixed queries weekly against Claude/GPT/Perplexity/Gemini to detect citations. Execution standard: push to Bing IndexNow immediately after content updates, AI-friendly format (one-sentence answer + table + FAQPage JSON-LD 5–8 questions/real search sentences), Citable Statistics table (5–10 rows, each row must have a number + source URL), llms.txt v2 (including top articles + core data), GA4 AI traffic channel grouping (track ChatGPT/Perplexity/Claude referral separately), freshness date display, BreadcrumbList schema. Forum bulk backlinks prohibited.
JA: GEO citation tracking and optimization (2026-06-24 standard). Weekly query audits for Claude/GPT/Perplexity/Gemini. Execution standards: send to Bing IndexNow immediately after content updates, AI-friendly format (one-sentence answer + table + FAQPage JSON-LD 5–8 questions/real user search sentences), Citable Statistics table (5–10 rows, each row with numbers + source URLs), llms.txt v2, GA4 AI traffic channel grouping, freshness date display, BreadcrumbList schema. Forum bulk backlinks prohibited.
KO: GEO citation tracking + optimization (as of 2026-06-24). Weekly query audit for Claude/GPT/Perplexity/Gemini. Execution criteria: immediately after content updates, send Bing IndexNow, AI-friendly format (one-sentence answer + table + FAQPage JSON-LD with 5–8 questions/actual user search terms), Citable Statistics table (5–10 rows, each row with a number + source URL), llms.txt v2, GA4 AI traffic channel grouping (separate tracking for ChatGPT/Perplexity/Claude referral), freshness date display, BreadcrumbList schema. No mass forum backlinks.