Skip to content

Latest commit

 

History

56 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GEOloopOS · AI 可见度增长闭环系统

Open-source AI identity engine — measure and grow how AI search engines know, describe, and recommend you.

让 AI 认识你、理解你、推荐你。企业 / 个人在 AI 搜索时代的数字身份基础设施。

CI License: MIT


What is GEOloopOS?

GEOloopOS is a Generative Engine Optimization (GEO) tool. It asks AI search engines and LLMs — currently DeepSeek and 豆包 (Doubao) — what they know about a brand, a person, or a website, then scores that answer on a 0–100 visibility scale across three dimensions:

Dimension Weight Meaning
Recognition 40 Does the AI mention the entity at all? (认知)
Description depth 30 How complete is the AI's description? (描述深度)
Source citation 30 Does the AI cite a traceable source? (来源引用)

You paste a brand name, a website domain, or any question — GEOloopOS auto-classifies it, generates the right questions, queries both AI engines in parallel, and returns a report with a score, a verdict, and concrete optimization tips. It also tracks the same entity over time, accumulating a cognition curve that shows whether your AI visibility is actually improving.

Who it's for: companies and individuals who want to be found, described, and recommended by AI — the channel people increasingly use to make decisions (which restaurant, which contractor, which SaaS tool, which advisor).

Built by 张晓明 / Xiaoming Zhang, GEO 与 AI 搜索可见度独立 顾问、GEOloopOS 产品创始人。创始人实验站: https://zkoner.com · 产品官网: https://geoloopos.com · 企业私有部署: https://geoloopos.com/deploy.

商业白皮书

《GEOloop:AI可见度闭环方法论》——中文 AI 搜索环境下的实体认知、可见度与 持续优化。Experiment #001 双源(DeepSeek + 豆包)实测数据 + GEO 闭环方法论。


Features

Capability What it does
3-input auto-classify Brand name / website domain / free question — detected automatically, correct questions generated
Dual AI engine DeepSeek + Doubao answered in parallel via API — fast, stable, public-friendly (no crawler/browser)
3-dimension scoring Recognition 40 + Description 30 + Source 30 = 0–100, with verdict + optimization tips
Positioning anchor Fill in name/positioning/keywords/site once → auto-generates 3 unified bio versions (long/mid/short) to paste across platforms + a site-byline snippet — consistency enforced at generation
Article monitoring Track your articles → ask AI per topic → judge if your article is cited / site mentioned / content adopted — the ROI of content production
Domain tracking Add a domain → re-test AI cognition & citation periodically → trend line over time
Competitor comparison Your brand vs competitors, same-口径 detection → ranking, gap score, insight (who leads and why)
Knowledge base Fill your info once → AI structures it into a standard card (identity / positioning / offerings / facts / sources / FAQ / keywords) + multi-length unified bios + JSON-LD. Then run a knowledge gap check: live AI check vs your facts → coverage score, which facts AI never mentions, and "what AI currently thinks you are" — the fill-the-gap punchlist
Scene intelligence Input a real user question (e.g. "深圳推荐一家装修公司") → exposure share per brand + 0-exposure root cause analysis
Citation traceability In-answer source extraction (prompt-guided) → 3-level trust (AI-cited / AI-mentioned / suspected-fabrication), citation share (Profound formula) and "does AI believe your site?" judgment in every report. Engine-cited mode (Perplexity) ready in config — enable with PPLX_API_KEY
Unified entity archive Every check / competitor run lands in one entity profile (data/entities.json) — the cognition time-series foundation for an "enterprise AI cognition map"
Effect matrix Published PR links are re-probed → per industry × channel Bayesian hit-rate matrix (data/effect-matrix.json); conservative recommendations ranked by the 5% posterior lower bound
Private deployment Single Node process, zero runtime dependencies, Docker one-command deploy, IP rate limiting — enterprise customization →

How the scoring works

Recognition 40 + Description 30 + Source 30 = 0–100
Score Verdict
≥ 80 AI 认知清晰 (clearly recognized)
≥ 60 AI 有基础认知 (basic recognition)
≥ 40 AI 认知模糊 (fuzzy recognition)
< 40 AI 尚未认知 (not yet recognized)

Refusal is detected only for short answers (< 80 chars) with explicit refusal phrasing — "cannot/无法" inside a normal long answer is never miscounted.

Input classification

  • Brand (e.g. 海底捞) → asks "「海底捞」是什么?" and "提供哪些产品或服务?"
  • Website (e.g. example.com) → asks "「example.com」是什么网站?", plus checks whether the answer cites that domain
  • Question (e.g. 什么是 GEO?) → asks it verbatim, scores answer quality, extracts mentioned brands/domains

Quick start

npm install
cp .env.example .env      # fill DEEPSEEK_API_KEY and ARK_API_KEY (see "Model sources")
npm run serve             # start the product server

Open http://localhost:8788, type a brand / domain / question, hit 检测.

Print the current publishing effect matrix:

npm run effect

API (REST, zero-dependency server)

Endpoint Method Purpose
/api/check POST body {"query":"..."} → run one check, persist history, return full report
/report/{id} GET standalone report page (HTML) — the app redirects here after each check
/api/checks?limit=N GET recent check history (default 20, max 50), newest first
/api/checks/{id} GET one stored check report by id (404 if not found / expired)
/api/anchor GET / POST positioning anchor + generated versions + platform list + site byline
/api/articles GET / POST article library list / add {"title","url","topic"}
/api/articles/:id DELETE remove an article
/api/articles/check POST run article monitoring for all articles (serial, ~15–40 s each)
/api/compare POST body {"self":"我的品牌","competitors":["竞品1"]} → comparison ranking + gap + insight
/api/cites GET / POST / DELETE domain tracking list / add / remove
/api/cites/check POST re-test all tracked domains
/api/entities GET full unified entity archive
/api/entities/stats GET archive stats (counts, check totals, scene shares, top scores)
/api/kb GET list knowledge cards (deduped by key, newest wins)
/api/kb/{key} GET one knowledge card by key (404 if none)
/api/kb POST body {"input":{"name":...,"facts":...,...}} → AI-structured knowledge card (identity / positioning / offerings / facts / sources / faq / keywords / multi-length versions / JSON-LD)
/api/kb/gap POST body {"key":"..."} → run a live AI check, compare the card's facts against what AI actually says → coverage score + missing/weak facts + AI's current impression
/deploy GET standalone enterprise private-deployment page (HTML) — value props, customization flow, founder contact
/effect GET standalone effect-matrix page (HTML) — industry × channel × AI-citation stats
/api/effect/matrix GET full effect matrix derived live from publish ledger + article monitoring + media catalog
/api/effect/recommend GET ?industry=X&topN=12&minTrials=2 → channel recommendations for an industry, ranked by the conservative posterior 5% lower bound

Example — run a check:

curl -s -X POST localhost:8788/api/check \
  -H 'Content-Type: application/json' \
  -d '{"query":"海底捞"}'
# → { "ok": true, "report": { "type": "brand", "score": 70, "verdict": "AI 有基础认知", ... } }

Public-facing deployment is rate limited per IP (default 8/min, 80/day) with a global concurrency cap (3) and input length validation. See DEPLOY.md.


Data model — the cognition archive

Every measurement lands in one normalized entity profile. This time-series is the project's core asset (the "enterprise AI cognition map" foundation).

EntityProfile {
  key: string;            // normalized: lowercase, no protocol/www/whitespace
  name: string;
  kind: "brand" | "site";
  industry?: string;      // set by industry checks
  keywords: string[];
  createdAt: string;
  checks:     { at, score, verdict, mention, cited, sources }[];  // cognition curve
  citations:  { at, source, kind }[];                             // who cited you
  sceneShares:{ at, scene, share, rank, total }[];                // exposure per scene
}

Archived in data/entities.json (gitignored — runtime data stays on the deploy host; the repo contains code, not customer data).


Effect matrix — the publishing ROI loop

Every published soft-wen link is tracked in data/articles.json. The matrix is derived live from the ledger + article monitoring and written to data/effect-matrix.json, an industry × channel hit-rate matrix using a Beta-Binomial Bayesian update (uniform prior; posterior mean + 5%/95% credible interval). Recommendations use the conservative 5% lower bound so small lucky samples don't rank first.

npm run effect                      # print matrix + per-industry recommendations
GET /api/effect/matrix              # full matrix JSON
GET /api/effect/recommend?industry=餐饮&topN=12&minTrials=2

This is the publishing-side data moat: each new probe adds one more observation of "which channel actually gets cited by AI".


Directory layout

config.ts           Provider config (DeepSeek / Doubao)
src/check.ts        Detection engine: classify → questions → scoring → report
src/entity.ts       Unified entity archive: normalization + cognition time-series
src/effect.ts       Effect matrix: publishing × channel × AI-citation Bayesian stats
src/history.ts      Check history (data/checks.jsonl, zero-dep JSONL)
src/anchor.ts       Positioning anchor: version generation + site byline
src/articles.ts     Article monitoring: library + citation judgment
src/cite.ts         Domain tracking: re-test trends
src/compare.ts      Competitor comparison: ranking + exposure share + insights
src/kb.ts           Knowledge base: AI-structured card + knowledge-gap analysis (data/kb.jsonl)
src/server.ts       Product API server (rate limit / concurrency / validation)
src/providers.ts    API query layer (DeepSeek / Doubao, retry + timeout)
src/web/            Product front-end (index.html homepage + app.html console + report.html standalone report page + effect.html effect matrix + deploy.html private-deployment page)
data/               Runtime data (gitignored): checks, entities, anchors, articles, cites, publish ledger, effect snapshots

Model sources

Source Type Requires
deepseek OpenAI-compatible API DEEPSEEK_API_KEY (platform.deepseek.com)
doubao (豆包) Volcano Ark API ARK_API_KEY (console.volcengine.com/ark)

Doubao model defaults to doubao-seed-2-0-pro-260215, overridable via DOUBAO_MODEL. API keys live only in the server .env — page users need no configuration.


Deployment

bash deploy.sh                 # auto-detects Docker/Node, asks for keys, one-command start
# or Docker:
docker compose up -d --build   # bind-mounts ./data → data continuity & transparent backup

Production notes: reverse proxy (Nginx/Caddy) for HTTPS + real-IP passthrough; process guard via docker compose (restart: unless-stopped); single Node process, lightweight enough for any VPS. Tuning via RATE_PER_MIN, RATE_PER_DAY, MAX_CONCURRENT. Full details in DEPLOY.md.


FAQ

Q: Is GEO the same as SEO? A: No. SEO optimizes for search-engine results pages; GEO (Generative Engine Optimization) optimizes for how AI answers — what it mentions, how it describes, and whether it cites a source. GEOloopOS measures the latter. / GEO 针对 AI 如何「回答」,SEO 针对搜索引擎的「结果页」。GEOloopOS 测的是前者。

Q: Which AI engines does it check? A: DeepSeek and Doubao (both OpenAI-compatible). Adding a source is a one-entry config change in config.ts. / 当前 DeepSeek + 豆包,可扩展。

Q: Does it need my API key as a user? A: No — keys live on the server. You only type a brand / domain / question. / 使用者无需配置任何 key。

Q: What does a score of 0 mean? A: The AI gave no substantive answer (refusal) or did not mention the entity — typically because there is no crawlable, consistent public content about it. Optimization tips in the report address this directly.

Q: Can I use it for my competitors? A: Yes. /api/compare runs the same detection on your brand + competitors and shows ranking, gap, and who leads — and why.

Q: Where does the data go? A: All runtime data stays on your host in data/ (gitignored). The repo contains code, not customer or brand data.

Q: Is it free / self-hostable? A: MIT-licensed and self-hostable with one Docker command. You only pay the two AI engines' API usage.


Roadmap & docs

  • ROADMAP.md — P0 publishing-effect loop; P1 public HTTPS/domain, industry benchmarks, brand/domain mapping; P2 accounts, AI cognition map, AI cognition reports.
  • IDENTITY-ENGINE.md — product positioning & the "AI identity engine" concept.
  • VISION.md — moat strategy (data assets > tool code).
  • DEPLOY.md — deployment & operations.
  • AIAGENTS.md — architecture & data-model guide for AI agents working in the repo.

Author & license

Built by 张晓明 / Xiaoming Zhang — AI consultant, GEO engineer, GEOloopOS founder. Site: https://zkoner.com · GitHub: zhangxiaomingv

Released under the MIT License. If you use or build on GEOloopOS, a citation (CITATION.cff) is appreciated.

GEOloopOS · AI 可见度增长闭环系统 — 让 AI 认识你、理解你、推荐你。

About

GEOloopOS · AI 可见度基础设施 — 开源 AI 身份 进化引擎。让 AI 认识你、理解你、推荐你。Measure & grow how AI search engines (DeepSeek, Doubao) recognize, describe & recommend a brand, person or website.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages