<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://www.onegeo.cn/</id>
  <title>OneGeo</title>
  <subtitle>OneGeo 是新乡洹拓科技有限公司旗下的 GEO（生成式引擎优化）项目，做实体一致性、内容结构化、抓取可达性、信源布局与持续监测，用被引用次数、描述准确率与来源分布衡量效果，不承诺排名。</subtitle>
  <updated>2026-10-25T18:53:58.192Z</updated>
  <generator uri="https://hexo.io/" version="7.3.0">Hexo</generator>
  <author><name>新乡洹拓科技有限公司</name></author>
  <link href="https://www.onegeo.cn/" />
  <link rel="self" href="https://www.onegeo.cn/atom.xml" />
  <logo>https://www.onegeo.cn/images/og-cover.png</logo>
  <entry>
    <title>llms.txt 是什么，站点到底要不要放</title>
    <id>https://www.onegeo.cn/llms-txt/</id>
    <link href="https://www.onegeo.cn/llms-txt/" />
    <published>2026-10-25T05:00:00.000Z</published>
    <updated>2026-10-25T18:53:58.192Z</updated>
    <summary>llms.txt 是一份写给大模型的站点说明：Markdown 格式，标题 + 摘要 + 关键链接。本文说清它的格式约定、与 robots.txt 和 sitemap 的分工，以及一个务实结论——放的成本极低，但别指望它单独带来引用。</summary>
    <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.onegeo.cn/images/og-cover.png" />
    <category term="抓取可达性" />
    <category term="llms.txt" />
    <category term="结构化" />
    <content type="html"><![CDATA[<h2 id="它想解决什么"><a href="#它想解决什么" class="headerlink" title="它想解决什么"></a>它想解决什么</h2><p>模型抓取网页时拿到的是 HTML：导航、模板、脚本、评论混在一起，真正的事实段落被噪声包围。<code>llms.txt</code> 的思路是给机器一份<strong>纯文本的站点导览</strong>——这是什么站、讲什么、关键页面在哪，用 Markdown 写清楚，让模型不必从模板里猜。</p>
<p>提案地址是 <a href="https://llmstxt.org/">llmstxt.org</a>，社区里也常配一份 <code>llms-full.txt</code>，把所有内容拼成一个长文件。</p>
<h2 id="格式约定"><a href="#格式约定" class="headerlink" title="格式约定"></a>格式约定</h2><p>结构很薄，一个标题、一段摘要、若干分组链接：</p>
<figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># 站点名称</span></span><br><span class="line"></span><br><span class="line"><span class="quote">&gt; 一两句话说明这个站是做什么的、面向谁。</span></span><br><span class="line"></span><br><span class="line">Details: 可选，补充口径、更新频率等。</span><br><span class="line"></span><br><span class="line"><span class="section">## 关键页面</span></span><br><span class="line"><span class="bullet">-</span> [<span class="string">页面名</span>](<span class="link">https://example.com/services/</span>): 一句话说明这一页讲什么</span><br><span class="line"></span><br><span class="line"><span class="section">## 近期内容</span></span><br><span class="line"><span class="bullet">-</span> [<span class="string">文章标题</span>](<span class="link">https://example.com/2026/10/26/slug/</span>): 摘要一句话</span><br></pre></td></tr></table></figure>

<p>写的时候有两条要注意：摘要与每页说明必须<strong>描述那一页</strong>，不要写成宣传语；链接用绝对地址，别让人再拼一遍域名。</p>
<h2 id="与-robots-txt、sitemap-xml-的分工"><a href="#与-robots-txt、sitemap-xml-的分工" class="headerlink" title="与 robots.txt、sitemap.xml 的分工"></a>与 robots.txt、sitemap.xml 的分工</h2><p>三者不是替代关系，是三道不同的门：</p>
<table>
<thead>
<tr>
<th>文件</th>
<th>回答的问题</th>
<th>缺了会怎样</th>
</tr>
</thead>
<tbody><tr>
<td><code>robots.txt</code></td>
<td>允不允许抓</td>
<td>直接挡在门外，内容再好也进不去</td>
</tr>
<tr>
<td><code>sitemap.xml</code></td>
<td>有哪些 URL、什么时候更新</td>
<td>靠爬链发现，新页面与冷门页面容易漏</td>
</tr>
<tr>
<td><code>llms.txt</code></td>
<td>这个站是什么、重点在哪</td>
<td>模型自己从 HTML 里猜，容易被模板噪声干扰</td>
</tr>
</tbody></table>
<p>所以顺序是：先确认放行与可达，再给索引，最后才谈”读得懂”。</p>
<h2 id="一个务实的结论"><a href="#一个务实的结论" class="headerlink" title="一个务实的结论"></a>一个务实的结论</h2><p>截至 2026 年 10 月，<strong>主流生成式引擎是否读取 <code>llms.txt</code>，没有官方确认</strong>。它更像一份成本极低的自述文件：写了不会错，但别期待它单独改变引用情况。</p>
<p>真正决定引用的是前面那两件事——内容是否可抽取、站点是否可抓取。把 <code>llms.txt</code> 当成”结构化的入口页”顺手做掉，性价比最高；把它当成 GEO 的全部，就是自我安慰。</p>
<p>另外要维护一致性。这份文件里的业务描述与联系方式如果和页面正文各说一套，反而制造实体歧义——那正是<a href="/about/#%E4%BA%94%E6%AD%A5%E5%81%9A%E6%B3%95">五步做法</a>里”实体一致性”要避免的事。</p>
<h2 id="OneGeo-站是怎么生成的"><a href="#OneGeo-站是怎么生成的" class="headerlink" title="OneGeo 站是怎么生成的"></a>OneGeo 站是怎么生成的</h2><p>本站的 <code>llms.txt</code>（<a href="/llms.txt">直接查看</a>）由 <code>scripts/llms.js</code> 在构建时生成：站点名与描述取自 <code>_config.yml</code>，地址电话取自主题配置的 <code>contact</code> 节点，近期文章取最新 40 篇并带摘要。这样只有一个数据源，不会出现”页面上改了、说明文件没改”的情况。</p>
]]></content>
  </entry>
  <entry>
    <title>GEO 的衡量口径：被引用次数、描述准确率与来源分布</title>
    <id>https://www.onegeo.cn/geo-metrics/</id>
    <link href="https://www.onegeo.cn/geo-metrics/" />
    <published>2026-10-25T04:30:00.000Z</published>
    <updated>2026-10-25T18:53:58.192Z</updated>
    <summary>排名不是 GEO 的结果指标。本文给出三个能自查的口径——被引用次数、被描述准确率、来源分布，说明固定问题集怎么设计、基线与回测为什么必须同口径，以及为什么&quot;提升 N%&quot;这类数字在没有基线时不该出现。</summary>
    <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.onegeo.cn/images/og-cover.png" />
    <category term="衡量口径" />
    <category term="基线" />
    <category term="监测" />
    <content type="html"><![CDATA[<h2 id="为什么”排名”不算数"><a href="#为什么”排名”不算数" class="headerlink" title="为什么”排名”不算数"></a>为什么”排名”不算数</h2><p>搜索排名是别人家的表，而 GEO 关心的是模型给出的那段回答里有没有你、说的是不是对的。同一个问题在不同模型上引用来源重叠度并不高，把某个引擎的”第几名”当指标，既不稳定也不可核对。</p>
<p>我们只用三个口径，全部可以逐条复核。</p>
<h2 id="口径一：被引用次数"><a href="#口径一：被引用次数" class="headerlink" title="口径一：被引用次数"></a>口径一：被引用次数</h2><p>固定问题集下，本站作为来源被列出的次数。取数方式：把问题按类别整理成一张表，逐条在目标模型里提问，记录回答是否附带来源、来源里有没有本站域名。</p>
<p>关键约束是<strong>问题集要固定</strong>。换了问题、换了模型版本、换了提问时间，数字就没有可比性。所以基线报告里要写清楚：哪一天测的、哪些模型、模型版本号、完整问题清单。</p>
<h2 id="口径二：被描述准确率"><a href="#口径二：被描述准确率" class="headerlink" title="口径二：被描述准确率"></a>口径二：被描述准确率</h2><p>被引用不等于被说对。常见的偏差有三种：把产品能力说大（承诺了我们不做的功能）、说小（漏掉核心场景）、张冠李戴（把主体、品牌、产品线混成一家）。</p>
<p>做法是给每条回答打标记：准确 &#x2F; 部分准确 &#x2F; 不准确，并记录不准确的原文。这个指标直接影响转化——模型替你说错话，比你不在场更糟。</p>
<h2 id="口径三：来源分布"><a href="#口径三：来源分布" class="headerlink" title="口径三：来源分布"></a>口径三：来源分布</h2><p>引用来自站内哪个页面，还是来自第三方信源（媒体、社区、百科、问答）。分布决定了下一步动作：</p>
<ul>
<li>站内页面被引：说明抓取与结构化没问题，继续扩大可抽取的事实密度。</li>
<li>只有第三方信源被引：说明模型对本站的信任来自外部，站内可达性或内容结构还有缺口。</li>
<li>完全没有来源：先回到<a href="!--swig%EF%BF%BC1--">可达性自查</a>，这一步不通过，后面都白做。</li>
</ul>
<h2 id="基线与回测必须同口径"><a href="#基线与回测必须同口径" class="headerlink" title="基线与回测必须同口径"></a>基线与回测必须同口径</h2><p>这是唯一一条不能妥协的方法要求：<strong>优化前后用同一组问题、同一批模型测</strong>。差值只在同口径下有意义。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">基线（T0）  →  改造动作清单  →  回测（T1，同问题集同模型）  →  差值与结论</span><br></pre></td></tr></table></figure>

<p>模型侧还有滞后：抓取与索引更新不是即时的，公开资料里 OpenAI 提到调整搜索爬虫规则可能需要约 24 小时生效，而信源积累通常按季度看趋势。所以监测周期建议按月，不要按天。</p>
<h2 id="哪些数字不该出现"><a href="#哪些数字不该出现" class="headerlink" title="哪些数字不该出现"></a>哪些数字不该出现</h2><ul>
<li>没有基线就没有提升百分比。任何”引用量提升 300%”在缺基线时都不可信，包括我们自己写的。</li>
<li>不承诺”一定被某模型引用”。引用与否由模型决定，能承诺的只有动作与口径。</li>
<li>客户名称、案例数据、效果截图需要客户授权与可核对的原始记录，本站目前不公布。</li>
</ul>
]]></content>
  </entry>
  <entry>
    <title>AI 爬虫可达性自查：robots.txt 里该放行哪些 User-agent</title>
    <id>https://www.onegeo.cn/ai-crawler-robots-checklist/</id>
    <link href="https://www.onegeo.cn/ai-crawler-robots-checklist/" />
    <published>2026-10-25T04:00:00.000Z</published>
    <updated>2026-10-25T18:53:58.192Z</updated>
    <summary>GEO 的第一步不是写内容，是确认模型根本抓得到你。本文按&quot;训练 / 检索 / 用户取页&quot;三类拆开主流 AI 爬虫的用途与放行策略，给出四步自查方法与一个常见误判：改 User-Agent 的 curl 测试通过，不代表真实爬虫能进来。</summary>
    <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.onegeo.cn/images/og-cover.png" />
    <category term="robots.txt" />
    <category term="AI 爬虫" />
    <category term="抓取可达性" />
    <content type="html"><![CDATA[<h2 id="先分清三类爬虫"><a href="#先分清三类爬虫" class="headerlink" title="先分清三类爬虫"></a>先分清三类爬虫</h2><p>同一家公司往往不止一只爬虫，用途完全不同，挡错的代价也不一样。</p>
<table>
<thead>
<tr>
<th>User-agent</th>
<th>归属</th>
<th>类型</th>
<th>挡掉会失去什么</th>
</tr>
</thead>
<tbody><tr>
<td><code>OAI-SearchBot</code></td>
<td>OpenAI</td>
<td>检索</td>
<td>不出现在 ChatGPT 的搜索答案里</td>
</tr>
<tr>
<td><code>GPTBot</code></td>
<td>OpenAI</td>
<td>训练</td>
<td>内容不进训练集；对当下的引用影响有限</td>
</tr>
<tr>
<td><code>ChatGPT-User</code></td>
<td>OpenAI</td>
<td>用户取页</td>
<td>用户在对话里点名你的页面时取不到内容</td>
</tr>
<tr>
<td><code>Claude-SearchBot</code></td>
<td>Anthropic</td>
<td>检索</td>
<td>Claude 检索时的可见性下降</td>
</tr>
<tr>
<td><code>ClaudeBot</code></td>
<td>Anthropic</td>
<td>训练</td>
<td>内容不进 Claude 训练集</td>
</tr>
<tr>
<td><code>Claude-User</code></td>
<td>Anthropic</td>
<td>用户取页</td>
<td>用户点名访问时取不到内容</td>
</tr>
<tr>
<td><code>PerplexityBot</code></td>
<td>Perplexity</td>
<td>检索</td>
<td>答案卡片里不再出现你的链接</td>
</tr>
<tr>
<td><code>Perplexity-User</code></td>
<td>Perplexity</td>
<td>用户取页</td>
<td>用户实时读取时取不到内容</td>
</tr>
<tr>
<td><code>Bytespider</code></td>
<td>字节跳动</td>
<td>训练 + 检索</td>
<td>豆包侧的可见性与语料覆盖</td>
</tr>
<tr>
<td><code>CCBot</code></td>
<td>Common Crawl</td>
<td>训练语料</td>
<td>大量开源模型的共同语料来源</td>
</tr>
<tr>
<td><code>Google-Extended</code></td>
<td>Google</td>
<td>用途控制项</td>
<td>见下方说明，它不是独立爬虫</td>
</tr>
</tbody></table>
<p>两个容易写错的地方：</p>
<ul>
<li><strong><code>Google-Extended</code> 是用途控制项，不是独立爬虫</strong>。它控制的是”被抓到的内容能否用于 Gemini 训练”，服务器日志里通常不会出现这个名字。想影响 Google 的 AI 概览，实际起作用的是 Googlebot 与 GoogleOther。</li>
<li><strong>训练爬虫与检索爬虫要分开决策</strong>。允许被引用而不允许被训练，是一种常见且合理的策略：放行 <code>OAI-SearchBot</code>、<code>Claude-SearchBot</code>，对 <code>GPTBot</code>、<code>ClaudeBot</code> 另做选择。</li>
</ul>
<h2 id="四步自查"><a href="#四步自查" class="headerlink" title="四步自查"></a>四步自查</h2><p><strong>第一步：读自己的规则。</strong> 打开 <code>https://你的域名/robots.txt</code>，确认没有一条 <code>Disallow: /</code> 命中上面这些名字。很多站是被上一版模板或 SEO 插件顺手挡掉的。</p>
<p><strong>第二步：用对应 UA 请求关键页面。</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">curl -I -A <span class="string">&quot;OAI-SearchBot&quot;</span> https://example.com/services/</span><br><span class="line">curl -I -A <span class="string">&quot;PerplexityBot&quot;</span> https://example.com/</span><br></pre></td></tr></table></figure>

<p>看返回码：<code>200</code> 正常；<code>301/308</code> 要确认跳转后的地址同样可达；<code>403</code> 大概率是 WAF 或 CDN 规则；<code>429</code> 是限流，爬虫拿不到完整内容；<code>5xx</code> 服务端问题。</p>
<p><strong>第三步：看真实日志。</strong> 统计谁真的来过，比猜更准：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">grep -oE <span class="string">&quot;GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-SearchBot|PerplexityBot|Bytespider|CCBot&quot;</span> \</span><br><span class="line">  /var/log/nginx/access.log | <span class="built_in">sort</span> | <span class="built_in">uniq</span> -c | <span class="built_in">sort</span> -rn</span><br></pre></td></tr></table></figure>

<p><strong>第四步：核对 IP 与 CDN 设置。</strong> 改 User-Agent 的 curl 测试<strong>不能证明真实爬虫可以访问</strong>——UA 是客户端自报的，而 CDN&#x2F;WAF 按源 IP 过滤。各家会公布爬虫的 IP 范围（OpenAI 提供 <code>gptbot.json</code>、<code>searchbot.json</code>、<code>chatgpt-user.json</code> 三个清单），在 CDN 侧按这些网段放行，比改规则更可靠。</p>
<h2 id="改完多久生效"><a href="#改完多久生效" class="headerlink" title="改完多久生效"></a>改完多久生效</h2><p>各家节奏不同。OpenAI 的说明里提到调整 <code>OAI-SearchBot</code> 相关规则后，系统可能需要约 24 小时才反映出来。所以改完不要立刻用”有没有被引用”来判断成败，至少留一个观察周期，并用固定问题集回测。</p>
<h2 id="本站的做法"><a href="#本站的做法" class="headerlink" title="本站的做法"></a>本站的做法</h2><p>OneGeo 自己的 <a href="/robots.txt">robots.txt</a> 明确放行上面这些抓取器，并指向 <code>sitemap.xml</code>。理由很直接：GEO 的前提是模型能抓到并读懂内容，先把门打开，再谈内容质量。</p>
<p>一个补充：<code>ChatGPT-User</code> 这类用户触发取页是否严格遵循 robots.txt，公开资料的说法有过变化。<strong>不要把它当成访问控制的兜底</strong>——真正敏感的内容应该靠鉴权与不可猜测的 URL 保护，而不是靠一条 robots 规则。</p>
]]></content>
  </entry>
</feed>
