Vercel Cloudflare 迁移 + 管理仪表板 + AI 新闻自动化
Source: Dev.to
Vercel → Cloudflare 迁移
Vercel 的 cron 需要 Pro 计划。需要每天两次生成 AI 新闻,但免费套餐无法使用 cron,于是将站点迁移到 Cloudflare Pages,并把 cron 任务拆分为 GitHub Actions。
迁移检查清单
- 将适配器改为
@astrojs/cloudflare,在astro.config.mjs中配置 - 添加
wrangler.toml - 在 Cloudflare 仪表盘中注册环境变量
- 禁用预览构建(仅部署 main 分支)
- 设置三个 GitHub Actions cron 任务
# .github/workflows/cron-ai-news.yml
on:
schedule:
- cron: '0 0,12 * * *' # UTC 0,12 = KST 9 AM, 9 PMCloudflare Pages 提供快速构建和慷慨的免费层,但依赖 Node.js 内置模块(例如 node:)的 SDK 将无法运行。
AI 新闻自动生成
每天两次(KST 9 AM、9 PM)自动生成 AI 新闻。
来源收集
爬取五个与 AI 相关的来源:
- Google Custom Search – “AI” 关键词搜索
- Hacker News –
/topstoriesAPI - Reddit –
/r/artificial、/r/MachineLearning的热门帖子 - X(Twitter) – AI 热门话题
- GitHub Trending – 当日热门仓库
使用 Claude 生成帖子
收集到的新闻会发送给 Claude Haiku,由其为每个主题生成单独的深度文章。最初的工作流是按模型(Claude、GPT、Gemini)分组帖子,后改为 按主题的单独帖子。
模型从 Sonnet 4 更换为 Haiku 4.5;每日生成 20+ 篇帖子导致成本担忧,尽管质量差异几乎可以忽略。
管理仪表盘
构建了一个 /admin 页面,用于一目了然地监控站点运营。
标签页
- 概览:访客热力图、统计卡片、项目构建日志、最高互动内容
- 快捷操作:AI 新闻生成、站点重建、Dev.to 同步
- 内容:完整内容列表并可按类型过滤
- 评论:评论管理及删除功能
访客热力图
类似 GitHub 贡献日历的热力图,从 Upstash Redis 获取最近 90 天的数据。包括月份标签、日期标签和悬停提示。
Dev.to 跨站发布
一个 GitHub Actions 工作流会自动把新内容发布到 Dev.to。
工作原理
- 检测
src/content/子目录的变更。 - 调用 Dev.to API 查询已有文章(通过
canonical_url去重)。 - 仅通过
POST /api/articles发布新帖子。 - 带有
devto-migration标签的帖子会被排除(它们来源于 Dev.to)。 - 通过 3 秒间隔实现限流。
注意事项:Cloudflare Workers 上的 SDK
在 Cloudflare Workers 中导入 @anthropic-ai/sdk 会触发 node:events 模块错误,因为 Workers 运行在 V8 isolate 上,而非 Node.js 环境。
解决方案: 直接使用 fetch,而不是 SDK。
总结
- Cloudflare Pages + GitHub Actions cron 实现了无需 Vercel Pro 计划的调度。
- AI 新闻自动化:5 源爬取 → Claude Haiku 生成帖子 → 每天两次发布。
- 管理仪表盘:SSR API + 客户端渲染,快速搭建。
- 在 Cloudflare Workers 上使用
fetch替代 SDK;带有 Node.js 依赖的库无法工作。
📌 最初发布于 Jidong Lab
更多 AI 新闻和开发日志 → jidonglab.com