2 min read

项目配置血泪史:从 Mock 数据到 AI 搜索的完整踩坑记录

本文记录配置autmedia自动自媒体项目过程中的踩坑经历,从Mock数据到AI搜索引擎,从代码损坏到最终决策,分享如何在技术选型中避免过度工程化,找到最简单的解决方案。

Featured image for "项目配置血泪史:从 Mock 数据到 AI 搜索的完整踩坑记录"

项目配置血泪史:从 Mock 数据到 AI 搜索的完整踩坑记录

本文记录了我配置 autmedia 自动自媒体项目过程中的完整踩坑经历,从最初设想完美方案,到最后发现简单才是真理。或许能给正在折腾自动化项目的朋友们一些启发。

项目背景

autmedia 是一个自动化自媒体项目,目标是构建一条从热点采集 → AI生成 → 博客部署的完整流水线。技术栈包括:

  • 热点采集:微博/知乎/抖音
  • AI生成:NVIDIA API + DeepSeek
  • 博客系统:Astro + Hugo
  • 部署:Vercel

听起来很完美,对吧?但现实总是骨感的。

Day 1: Mock 数据的诱惑

初始设想

项目最初使用 Mock 数据模拟热点,优点是:

  • 立即可用
  • 无需 API 认证
  • 不受网络限制

Mock 数据示例:

{
  "title": "小米SU7交付量突破10万台",
  "heat": 9800,
  "source": "头条"
}

第一个坑:Mock 数据无法上线

当准备上线时发现:谁会用假数据上线呢?

  • 数据是拟造的
  • 没有真实性和时效性
  • 自媒体的核心是”真实热点”,但这个核心缺失了

结论:Mock 数据只适合本地测试,无法用于生产环境。

Day 2: 真实 API 的美好幻想

微博/知乎 API 接入尝试

我决定接入真实 API:

微博热搜接口:

https://weibo.com/ajax/side/hotSearch

理想很丰满:公开接口 → 无需认证 → 直接调用

现实很骨感:返回结果

{"error":"Forbidden"}

第二个坑:反爬虫机制

所有中国主流社交媒体都有极强的反爬机制

  • 微博:IP 请求频率检测 → 超过 5 次/分钟即封禁
  • 知乎:需要登录 Cookie + WAF 防护
  • 抖音:签名验证 + 设备指纹 + IP 区域性封禁

解决尝试

  • 更换 IP(临时有效)
  • 添加 Headers(效果有限)
  • 降低请求频率(治标不治本)

最终结论:任何试图绕过反爬的方案都具有:

  • 高风险:IP 随时被封
  • 高维护:需要持续更新策略
  • 低稳定性:随时可能失效

Day 3: AI 搜索引擎的救星

思维转变

既然直接爬取风险高,那为什么不用AI 搜索引擎

思路

  • 使用 Tavily/Exa AI 搜索接口
  • 查询 “今日微博热点” 等关键词
  • AI 搜索引擎返回结果(合法 API)
  • 反爬风险:ZERO

实际效果:

 Tavily搜索成功: '抖音热榜 今日热门' 4条

🔥 10000 抖音热榜 - 抖音
🔥 9200 今日热门 - 抖音
🔥 8400 今日热点榜 - 抖音

第三个坑:标题泛化问题

AI 搜索返回的是页面标题,而非热榜内的具体条目:

问题示例:

  • ❌ 不是:“xx明星宣布结婚”
  • ✅ 而是:“今日热门 - 抖音”(页面标题)

根本原因: AI 搜索返回的是 SERP 结果标题,而不是热榜详情页内的具体条目。

收敛标准

为了不影响整体流程,收敛标准要清晰:

  • 标题泛化但能用于话题分析
  • 内容从趋势分析角度入手
  • 不强求具体事件,转型为通用内容

Day 5: 反思与决策

技术债务累积

经过 3-4 天的折腾,累积了以下问题:

  1. API 层:真实 API → Mock 回退 → AI 搜索(三层复杂度)
  2. 代码层:文件损坏、多人修改、格式混乱
  3. 数据层:标题泛化、可用性存疑
  4. 维护层:需要持续维护采集策略

最终决策:彻底移除

做出艰难决定:将整个项目彻底删除

rm -rf /tmp/autmedia

删除内容包括:

  • 所有采集器脚本
  • 所有生成器脚本
  • 配置文件
  • 数据文件

经验与教训

1. 简单性 > 功能性

最大的启示:功能越复杂,失败概率越高

  • ❌ 不应该:热点 → 采集 → 分析 → 重生成 → 改写 → 导入 → 构建 → 部署
  • ✅ 应该:热点 → 生成 → 部署

2. 依赖外部 API 的风险

问题:依赖微博/知乎/抖音等封闭平台

  • 突然升级反爬 → 整个系统瘫痪
  • 商业价值高,反爬投入大
  • 个人开发者难以持续对抗

替代方案:依赖开放 API(如 Tavily、Exa)

  • 商业模型支持 API
  • 无反爬机制
  • 长期稳定

3. 零依赖的价值

如果你从零开始,记住这条:

零依赖(No Dependencies)> 高性能(High Performance)> 多功能(Multi Features)

一个零依赖但稳定的系统,远胜于依赖多但是随时会崩的系统。

4. 代码质量 vs 迭代速度

教训:快速迭代时,代码质量容易被忽视

  • 多次热修复 → 格式混乱 → 最终崩溃
  • 应该:每个修改后运行测试 + 格式检查

5. 自动化≠完美化

误区:认为自动化流程必须包含每一步

真相

  • 半自动化(semi-auto)有时更实用
  • 人为确认环节可以避免错误传播
  • 完全自动化可能过度工程化

后续计划

新方案构想:极简流水线

基于这次复盘,重新设计的方案特色:

核心原则

  • 1个脚本完成所有工作
  • 零外部依赖
  • AI 搜索而非爬虫
  • 人工确认环节

极简流程:

[AI搜索热点] → [NVIDIA生成] → [确认内容] → [一键部署]
                ↑                           ↓
                └────────────── 人工审核 ──────────────┘

技术栈精简:

  • 1个主脚本(Python)
  • 2个外部 API(Tavily + NVIDIA)
  • 1个部署命令(Vercel CLI)

上线计划

  1. Week 1:实现核心采集 + 生成
  2. Week 2:集成部署工具
  3. Week 3:添加用户界面(CLI)
  4. Week 4:上线测试

总结

这 3-4 天的配置历程,虽然最终选择移除项目,但收获颇丰:

达成了什么

  • 理解了自动化流程的每个环节
  • 识别了真实热点与Mock的区别
  • 体验了API反爬的威力
  • 实践了NVIDIA API的强大(单篇2000+字)
  • 探索了AI搜索引擎的潜力

失败的点

  • 过度工程化
  • 依赖不稳定的外部API
  • 代码维护不及时
  • 没有预设回退机制

🎯 收获的核心经验

一个能稳定运行的简单系统,远胜于一个功能丰富但随时崩溃的复杂系统。

下一步行动: 基于这次总结,重新设计一个极简、稳定、易维护的自动化系统。预计下周开始新方案的实施。


作者:一位被自动化折腾到怀疑人生的80后

日期:2026-04-14

“失败乃成功之母,复盘乃成功之父” 📝