-
Step 1 · 选接口 + 搞清数据来源
用现成的 AI 资讯公开接口,先弄清 latest / 按日期 / 列表三个端点
做聚合站第一步不是写代码,是先搞清楚数据从哪来。本项目用的 AI 资讯接口是公开接口,不用申请 key,直接 curl 就能拿到 JSON。
三个端点要分清:
- 最新一期:拿最近一条 AI 日报
- 按日期:拿指定某天的日报(没更新返回空)
- 条目列表:分页拉历史条目,做归档用
注意这是公开接口,有调用频率限制,别在前端页面里每次刷新都去打它——后面会讲怎么缓存到本地 JSON。
也别把聚合站当成原创内容站。你做的是筛选 + 排版 + 导流,版权和来源链接必须保留,点标题跳原站。
自查清单
- 能 curl 到接口并返回合法 JSON
- 分得清 latest、按日期、列表三个端点的用途
- 知道聚合站是导流页而非原创站
-
Step 2 · 拉取数据 + 落盘成 JSON
写个定时拉取脚本,把接口数据存成本地 daily.json
核心原则:接口数据落盘成 JSON,前端只 fetch 本地文件,不直接打第三方接口。
最简单的拉取(存最新一期):
curl -s 接口地址 -o data/daily.json再写个 node 小脚本做清洗:只保留标题、链接、日期、摘要字段,去掉用不上的,顺手生成 archive.json 做历史归档。
为什么要落盘?一是绕开频率限制,二是第三方接口挂了你站还能看上次缓存,三是纯静态站根本不该在浏览器里直连第三方。
落盘后一定要用 jsonlint 校验一遍,字段不对前端会白屏。
自查清单
- 本地生成了 data/daily.json
- 文件里是合法 JSON 且含标题/链接/日期字段
- 用 jsonlint 校验通过
-
Step 3 · 前端渲染列表(仿 AI 日报页)
fetch 本地 JSON,渲染成卡片列表 + 日期筛选
前端逻辑很简单:页面加载时 fetch('data/daily.json'),拿到数组后 map 成卡片。每张卡显示标题、摘要、日期,点标题跳原链接。
几个体验细节:
- 顶部放日期选择器或上一天 / 下一天按钮,翻历史
- 加载失败要有兜底文案,别白屏
- 卡片网格 + 深色模式,和本站风格统一
- 标题链接加 target=_blank rel=noopener,把读者留在自己站
如果你懒得从零写,直接参考本项目 ai-daily.html 的 daily.js,改改字段名就能用。
自查清单
- 页面能 fetch daily.json 渲染出列表
- 点击标题能跳原链接且新窗口打开
- 接口失败时显示兜底文案而非白屏
-
Step 4 · 定时更新 + 多源聚合
宝塔计划任务或 crontab 每天拉一次,必要时再聚合自己的 RSS
数据要自动更新,不能每次手动跑。
宝塔用户:计划任务 → 添加 Shell 脚本任务 → 周期选每天 → 填拉取脚本绝对路径。
命令党直接 crontab -e 加一行:
0 6 * * * /bin/bash /root/agg/fetch.sh >/dev/null 2>&1想多源?除了 AI 资讯接口,你自己的博客 RSS 也能并进同一个 archive.json,做成 AI 资讯 + 我的文章混合流。增量更新,用日期去重,别重复塞。
最后重启一次服务器,确认拉取任务还在自动跑。
自查清单
- 计划任务列表里能看到拉取任务
- 每天 data/daily.json 更新时间会变化
- 重启服务器后拉取自动恢复
-
Step 5 · 上线 + SEO + 引流变现
传服务器、上 HTTPS、做 sitemap,把聚合站当引流页接返利
聚合站本质是引流页:用户来看 AI 资讯,你在顶部和侧边放云服务器、AI 工具的联盟返利链接,转化很高——因为来看 AI 资讯的人本就有这些需求。
上线动作:传文件到服务器(宝塔或纯 Nginx)、申请 HTTPS 证书、写 sitemap 提交百度。
合规提醒:推广位必须可识别,页脚放免责声明,说明哪些是推广链接。别把资讯伪装成广告。
长期看,聚合站是入口,真正赚钱的是它导过去的返利和你的其他产品。
自查清单
- https 访问无证书警告
- 百度搜索资源平台已提交 sitemap
- 推广位已标注且页脚有声明