一个基于 follow-builders feed 的每日 Founder Radar。
当前版本的定位很明确:
- 用仓库脚本抓取
follow-builders全量信号,并按可配置策略裁剪 - 生成一份中文、长篇、判断型的 Founder Radar 深度日报
- 把日报分成 3–5 条飞书富文本消息发送出去
- 由阿里云服务器上的
OpenClaw负责定时调度,不再让OpenClaw直接转发原始 Markdown 正文
生产环境的标准运行方式是:
OpenClaw cron定时触发本仓库- 仓库执行
node src/cli.js deliver - 脚本抓取
follow-buildersfeed - 仓库内的摘要生成逻辑产出深度日报;如果配置了模型接口,则进一步用模型增强中文长摘要
- 仓库直接调用 Lark 官方 API,把日报作为 3–5 条
post富文本消息发送到飞书私聊 OpenClaw只负责回报成功或失败状态
- 默认使用
follow-builders的全量输入(X / blogs / podcasts) - 支持按环境变量裁剪来源:X 账号 include/exclude、博客/播客来源 include/exclude、每类 TopN 上限
- 默认输出结构:
今日结论、核心论证、反论点与不确定性、创始人行动建议、延伸阅读 - 支持
OpenAI兼容接口,默认可接DeepSeek Reasoner - 默认发送飞书富文本,不再把 Markdown 当纯文本硬发
- 如果没有配置
FOUNDER_RADAR_LLM_API_KEY,会回退到仓库内置的确定性长摘要生成逻辑
npm test
npm run radar:smoke
npm run radar:run
npm run radar:deliver对应入口:
node src/cli.js smoke:用 fixture 生成一份 smoke 版深度日报node src/cli.js run:抓取真实 feed,输出中文长版预览稿node src/cli.js deliver:抓取 feed、生成摘要并直接发送到飞书node src/send-lark.js:底层飞书发送脚本,主要用于单独调试发送能力,不是标准生产入口
推荐在阿里云服务器使用一条命令完成更新、环境检查、crontab 配置和试跑投递:
cd /home/admin/apps/founder-radar-lite
bash scripts/setup-server-cron.sh也可以通过 npm 别名执行:
npm run server:setup-cron脚本会自动完成:
git fetch/pull同步到main- 依赖安装(优先
npm ci,失败或无 lockfile 回退npm install) .env缺失时从.env.example自动生成- 校验关键环境变量是否为空
- 写入唯一 crontab:每天 09:00(Asia/Shanghai)执行
scripts/run-and-send.sh - 快速试跑一次
deliver并输出结果摘要
FOLLOW_BUILDERS_FEED_BASE_URL=https://raw.githubusercontent.com/zarazhangrui/follow-builders/main
FOUNDER_RADAR_LANGUAGE=zh-CN
FOUNDER_RADAR_LLM_BASE_URL=https://api.deepseek.com/v1
FOUNDER_RADAR_LLM_API_KEY=your_api_key
FOUNDER_RADAR_LLM_MODEL=deepseek-reasoner
LARK_APP_ID=cli_your_app_id
LARK_APP_SECRET=your_app_secret
LARK_RECIPIENT_OPEN_ID=ou_your_open_id可选:
LARK_BASE_URL=https://open.larksuite.com可选(裁剪策略):
# 逗号分隔;include 为空表示不过滤;exclude 优先级更高
FOUNDER_RADAR_PRUNE_X_INCLUDE_HANDLES=
FOUNDER_RADAR_PRUNE_X_EXCLUDE_HANDLES=
FOUNDER_RADAR_PRUNE_BLOG_INCLUDE_SOURCES=
FOUNDER_RADAR_PRUNE_BLOG_EXCLUDE_SOURCES=
FOUNDER_RADAR_PRUNE_PODCAST_INCLUDE_SOURCES=
FOUNDER_RADAR_PRUNE_PODCAST_EXCLUDE_SOURCES=
# 未设置或 <=0 表示不限;非整数会直接报错退出
FOUNDER_RADAR_PRUNE_MAX_X_CANDIDATES=
FOUNDER_RADAR_PRUNE_MAX_BLOG_CANDIDATES=
FOUNDER_RADAR_PRUNE_MAX_PODCAST_CANDIDATES=手动验证顺序:
npm test
node src/cli.js smoke
node src/cli.js run
node src/cli.js deliver如果你是在服务器上走标准链路,优先再补一次 OpenClaw cron 手动触发,确认飞书里收到的是精排后的多条中文消息。
OpenClaw 调度是可选方案。生产默认建议优先使用上面的 crontab 一键部署路径。
如果继续使用 OpenClaw,职责收敛成:
OpenClaw:调度 + 状态回报- 本仓库:内容生成 + 飞书发送
OpenClaw 相关配置见 docs/openclaw-lark-setup.md。
docs/openclaw-lark-setup.md:OpenClaw 调度方式docs/direct-lark-api-setup.md:仓库内飞书发送链路docs/learnt/initial_setup.md:历史踩坑记录
仓库包含最小 Docker smoke deployment,用于验证:
docker compose config能通过- smoke 容器能启动
- 关键环境变量在容器内可见
入口:
deploy/docker-compose.ymldeploy/deploy-main.ps1