前两天想看看 WayToAGI 最近收录了啥,打开知识库才发现——我那个飞书监控脚本,已经停更快二十天了。
它是我自己写的,本来每天自动把 WayToAGI 的每日收录搬进 Obsidian。结果悄无声息挂了,我一直没察觉。
修的时候顺手把整套流程理了一遍。这篇就讲清楚一件事:怎么用 WorkBuddy 监控、采集一个飞书文档——怎么盯它更新、怎么把内容读出来、怎么存进自己的知识库。
先垫一句背景:飞书文档没有 RSS,也不提供「有更新就通知我」。想自动追一个飞书文档,只能自己搭一套。
01 怎么盯着它有没有更新
飞书文档每改一次,都会涨一个 revision 号。监控,就是盯这个号。
脚本 check_updates.py 每天跑一次,记下上次的 revision,跟现在的比。
current = get_revision(DOC_URL) # 问飞书:现在到第几版了
if current != last_revision: # 号变了,说明有人更新
for day in missing_days: # 把断更的日期补上
pull_day(day)号没变就不动,变了就往下走去抓。
02 怎么把飞书文档的内容读出来
读飞书,靠的是 WorkBuddy 的飞书连接器。装好之后,本地会多一个命令行工具 lark-cli。
它用你自己的飞书账号权限,一条命令就能读文档、抓内容、下图片:
lark-cli docs +fetch --doc "文档链接" --scope keyword \
--keyword "7月21日收录" --doc-format markdown --as userWayToAGI 的收录有个固定格式:每天一个 # 7月21日收录 的标题,下面每条是「一句话描述 + 原文链接」。
所以读某一天,就是拿这个日期标题去定位区块,把里面的条目全捞出来。
def fetch_day(day_label):
content = lark_fetch(keyword=day_label) # 定位到这一天的区块
return parse_entries(content) # 逐条解析:描述 + 链接捞出来之后有个关键动作:过滤。几百条里大部分对我没用。
我写了个 assess_value,按标题和描述打分。「实战」「出海」「保姆级教程」这种留,「早安打卡」「心灵鸡汤」这种直接扔。命中的才往下走。
03 怎么存进我自己的知识库
命中的条目,再用 lark-cli 把原文拉成 Markdown,图片一并下到本地。
落地长这样:
01_Sources/waytoagi/
├── 2026-07-21_文章标题.md ← 每篇一个 Markdown
└── images/
└── 2026-07-21_文章标题/ ← 图片按文章分目录有两个细节值得说。
一是文件名带完整年月日。飞书收录只写「7月21日」,不带年份,翻多了容易翻到去年的旧内容,所以我在存的时候把年份补上。
二是图片全下到本地,不挂外链。哪天飞书链接失效,我库里还留着一份。
存完就进了 Obsidian,跟我其他笔记一样能搜、能双链、也能被 AI 读。
04 踩的坑:它挂了二十天我没发现
前面这三块,逻辑都不复杂。真正的坑在别处。
我这几个脚本最早在 Windows 上写的,lark-cli 的路径直接写死成了 C:\Users\...\lark-cli.cmd。
后来换到 Mac 上跑,这路径根本不存在,脚本一启动就报错退出。
但它是后台定时跑的,输出我平时看不见。就这么安安静静地失败了二十天。
修起来是一行的事——把路径改成自动找:
import shutil
LARK_CLI = shutil.which("lark-cli") or find_lark_cli()麻烦的是后半句:自动化挂了,你常常是最后一个知道的。所以我现在给这类脚本都加了一句——跑完往日志写一行,哪天没新行,就是挂了。
修完顺手写了个回填脚本,把断更的十九天补了回来,九十八条收录里命中三十九条有价值的,正一篇篇转进库里。
这套东西不复杂,几个 Python 脚本加一个 lark-cli。你要是也有个天天翻的飞书文档,可以照这个思路搭,先把「能抓今天的新内容」跑通就行。