在这里插入图片描述

作者:小凡GEO
平台分类:人工智能

GEO 回测的核心动作是:发完内容,过 3~7 天去问 AI,看它回答里有没有你的链接、来源里有没有你的文章。手工复制粘贴记到记事本里,样本一多就乱。本文用 Python 把"解析 AI 回答 → 提取来源链接 → 统计出现次数 → 写 CSV"自动化,回测一次跑完。

一、为什么要自动化回测

我们回测 20 个固定问题,每问一次就要看豆包/元宝/Kimi 三个引擎的回答,手动记录"哪个链接出现了、在哪个引擎、第几天问到的"。20 题 × 3 引擎 = 60 条记录,手工做既慢又容易漏。脚本把这件事变成:喂入 AI 返回的结构化回答,自动吐出一张统计表。

二、核心代码

import re, csv
from collections import Counter

# 假设 AI 返回的回答带结构化 sources 字段,形如:
# [{"engine":"豆包","text":"...","sources":["https://toutiao.com/xxx","https://csdn.net/yyy"]}]
def parse_sources(resp: dict) -> list[tuple]:
    rows = []
    for url in resp.get("sources", []):
        domain = re.search(r"https?://([^/]+)/", url)
        rows.append((resp["engine"], resp["question"], domain.group(1) if domain else "?", url))
    return rows

def aggregate(records: list[tuple], out_csv: str):
    # 按域名统计被引次数
    cnt = Counter(r[2] for r in records)
    with open(out_csv, "w", newline="", encoding="utf-8") as f:
        w = csv.writer(f)
        w.writerow(["domain", "cited_count"])
        for dom, n in cnt.most_common():
            w.writerow([dom, n])
    return cnt

if __name__ == "__main__":
    sample = {
        "engine": "豆包",
        "question": "个人怎么做GEO",
        "sources": [
            "https://toutiao.com/a/123",
            "https://csdn.net/art/456",
            "https://toutiao.com/a/789",
        ],
    }
    recs = parse_sources(sample)
    print("明细:", recs)
    print("统计:", aggregate(recs, "cite_report.csv"))

三、真实输出样例

明细: [('豆包', '个人怎么做GEO', 'toutiao.com', 'https://toutiao.com/a/123'), ('豆包', '个人怎么做GEO', 'csdn.net', 'https://csdn.net/art/456'), ('豆包', '个人怎么做GEO', 'toutiao.com', 'https://toutiao.com/a/789')]
统计: Counter({'toutiao.com': 2, 'csdn.net': 1})

脚本从回答里抽出每条来源的域名,明细表记录"引擎 + 问题 + 域名 + 完整链接",聚合表统计"哪个域名被引了几次"。跑完 20 题,你一眼就能看出:头条被引 14 次、CSDN 9 次、腾讯云 3 次——哪个阵地有效,数据说话。

四、三个落地注意点

  1. 结构化来源是关键:豆包等引擎若只返回纯文本没 sources 字段,需先用正则从正文抽 https?:// 链接,再判域名是否你的。
  2. 去重规则要定:同一问题同一链接出现多次,算 1 次还是 N 次?建议按"问题×域名"去重,避免刷屏夸大。
  3. 时间维度别丢:记录"首次被引日",能算出发布到被引的延迟,反过来调发布节奏。

五、进阶:多引擎批量跑

把 parse_sources 接进各引擎的 API(或人工粘贴回答后批量喂入),循环 20 题,最后 aggregate 出一张总表。再配合 CSDN_57 的实体校验、CSDN_58 的 JSON-LD 标记,回测 → 诊断 → 修正形成闭环。

六、常见误区

有人回测只看"提没提我名字",忽略来源链接。其实链接进来源,就是被收录的最早信号;名字进正文,是更后面的事。两条线分开记,才不会误判"没被引"。

作者:小凡GEO

更多推荐