很多人想做一个 AI 价格对比网站,卡点通常不在前端,而在「价格数据从哪来、怎么保证不写错、怎么让它自己更新」。官方价目页格式各异,中转站口径又五花八门,靠手工抄一遍两个月就过期了。这篇按落地顺序拆成四步:先定对比范围与数据源,再设计能装下不同计费口径的字段结构,然后做采集与定时校验,最后是页面呈现和免责说明。每一步都给可执行的清单。
做价格对比网站,坑基本不在前端。真正熬人的是:价格数字从哪来、怎么保证不抄错、怎么让它自己更新。官方价目页一个厂一个格式,中转站的口径更是五花八门,靠手工抄一遍,过一阵就全过期了。所以下面按落地顺序拆四步:先圈定比什么、数据从哪来;再设计一套能装下不同计费口径的字段结构;然后做采集和定时校验;最后才是页面怎么摆、免责怎么写。
整条链路的顺序别颠倒。很多人一上来就挑模板、调样式,结果字段没设计好,数据一进来发现按次和按 token 没法放同一列,只能推倒重来。先把数据层想清楚,前端反而是最省事的一段。
第一步:先定对比范围和数据源清单
开工前先回答一个问题:你到底在比官方价目,还是中转站的实际到手价?这两者字段完全不是一回事。前者通常有明确的计量单位和公开文档,后者往往夹着倍率、赠送额度、阶梯规则。把两种混进一张表,用户一定会看糊涂,你自己也维护不动。
- 数据源优先级:官方价目页 > 平台方公开文档 > 第三方目录。越靠前越权威,也越值得你花时间对接。
- 站内可以先到 /official-api 摸一遍现有口径类型,再去 /providers 看中转站那套字段长什么样,心里有个底再动手。
- 每个数据源必须记三件事:计量单位、是否含税、更新频率。缺任何一项,先别接入。
- 如果你的目标用户只是想挑一个模型用,别硬做十家横向大表,按使用场景精简成两三栏反而更好用。
第二步:字段结构要能装下不同计费口径
字段设计的目标只有一个:源头怎么变,你都能存下来,而且能回溯。别想着一步到位把所有价格折成一个统一数字,那是最容易出事的地方。
| 字段 | 为什么必须有 |
|---|---|
| 厂商 / 模型标识 | 区分同一家不同模型的定价差异,别用展示名当主键 |
| 计价单位 | 按 token、按次、按秒、按张,单位不同不能直接比 |
| 输入价 / 输出价 | 多数接口输入输出不同价,只存一个数会误导 |
| 缓存读 / 写价 | 有缓存机制的厂商这块能差出一截,漏了就失真 |
| 原始单位 + 归一化单位 | 两列都存,后期换算错了才知道是源头改了还是自己算错 |
| 生效状态 / 抓取时间 | 价格有上下架和调价,不带时间戳的数据没法判断新旧 |
折算这件事放到展示层做,存储层原样保留。口径对齐的术语可以先翻一下站内 /ai-dict/category/basics,把单位、倍率这些概念统一了,字段命名才不会被后来的同事理解成别的意思。特别注意:订阅制产品和按量 API 千万别塞进同一列做排序,用户会直接读成「谁更便宜」,这是个纯误导。
第三步:采集、去重与定时校验
采集频率不要拍脑袋定成每天全量重抓。变动慢的季检就够,变动快的周检。盲目高频只会把维护成本堆起来,收益却很小。
- 先做半自动采集初期用脚本抓关键页面,人工确认字段对应关系。抓取规则和源页面的映射写在配置文件里,别硬编码进脚本。
- 保留历史快照每次抓取存一整版,不覆盖。页面只展示「有变动」的条目,用户才知道该不该重新看。
- 上线前人工抽检随机挑几条,把机器抓到的数字和源页面肉眼对一遍。对不上就整批缓发,别赌概率。
- 设置告警抓取失败、字段缺失、单条价格突变都触发提醒,早发现一版坏数据比晚修便宜得多。
拿不准自己抓的口径和官方差在哪,可以到 /about 看看站点的检测口径和数据来源说明,先把判断标准对齐,再决定自己的归一化规则。
第四步:页面呈现与免责说明
呈现阶段的核心原则是「别让人误读」。同一张表里,默认按口径分组,同一口径内部再排序;跨口径排序出来的名次没有意义,只会制造误解。
- 每个数字旁边挂更新时间和来源链接,用户自己判断时效,你别替他说「最新」。
- 站点没法保证实时,就老实说是快照,抓取周期写清楚。
- 固定放一段说明:价格随官方调整、汇率和活动变化,站内数字仅供参考,以官方页面为准。
- 单一分区的站(比如只比编程套餐)复杂度最低,通常比全品类大而全更扛得住时间。
- 判断类内容要写清楚不适用的场景,比如「这个对比只覆盖纯文本调用,不适用于多模态」。
如果你还想把中转站那部分也纳进来,可以参考站内 /price-watch 的做法,重点看它怎么标注变动和来源,而不是照抄它的数字——数字永远以当时页面为准。
下一步想看看真实的口径类型和字段长什么样,先去官方资料库核对一遍,再回来定自己的表结构。→常见问题
自己做价格对比网站,最难的是哪一步?
通常是数据维护,不是写前端。价格会变,来源格式也常改,抓取脚本要跟着改。真正决定站点能不能活的是你有没有一套稳定的更新和校验流程,比如快照留档、变动标记、定期人工抽检,而不是一次抓了多少家。
能用爬虫直接抓官方价目页吗?
优先用官方公开的文档或接口,抓不到再考虑页面解析。页面解析要接受它会经常坏,所以要留人工兜底。另外只抓公开的价格信息,不要抓需要登录才可见的账户数据,也别把抓来的数字当成实时承诺。
对比表里该放多少家?
按你的目标用户定。给开发者看的,选主流几家、字段做全,比堆二十家每行都残缺更有用。放太多家会带来两个问题:口径无法对齐、更新压力翻倍。先做小范围跑通更新流程,再横向加。