beyondx123 ced9c7bdb3 优化文档采集工具
- 输出文件名添加 YYMMDD_ 日期前缀,便于按时间排序
- 改用 storageState 完整保存登录态(cookies + localStorage),大幅减少重复扫码
- 增加 TOKEN 轮询宽限期,避免 SPA 异步加载时误判未登录
- 更新 README 文档记录
2026-09-13 14:37:13 +08:00
2026-09-13 14:37:13 +08:00
2026-07-05 13:22:25 +08:00
2026-07-05 13:22:25 +08:00
2026-09-13 14:37:13 +08:00
2026-07-05 13:22:25 +08:00
2026-09-13 14:37:13 +08:00
2026-09-13 14:37:13 +08:00

一堂文档采集工具

采集一堂创业课飞书文档,转换为带本地图片的 Markdown 文件。

工具说明

工具 适用场景
feishu-to-md.mjs 飞书 wiki 链接(feishu.cn/wiki/...
auto-scrape.mjs 一堂课平台链接(yitang.top/fs-doc/...

环境准备

1. 安装 Node.js 依赖

npm install

2. 安装飞书 CLI

npm install -g @larksuite/cli

3. 配置飞书 CLI(首次)

# 初始化 App ID 和 Secret
echo "<your_app_secret>" | lark-cli config init \
  --app-id <your_app_id> \
  --app-secret-stdin \
  --brand feishu

# 发起个人授权(wiki + docs + drive 权限)
lark-cli auth login --domain wiki,docs,drive --no-wait --json
# → 复制输出中的 verification_url,在浏览器中完成扫码授权
# → 授权完成后执行:
lark-cli auth login --device-code <上一步输出的 device_code>

采集飞书 wiki 文档

node feishu-to-md.mjs <wiki_url>

示例:

node feishu-to-md.mjs https://your-tenant.feishu.cn/wiki/WikiNodeTokenExample

输出:

  • output/<文档标题>.md — Markdown 正文
  • output/<文档标题>_files/ — 本地图片目录(PNG 格式)

图片以相对路径引用,可在 Obsidian、Typora 等编辑器中离线展示。

自定义输出目录:

node feishu-to-md.mjs <wiki_url> ./my-docs

采集一堂课平台文档

node auto-scrape.mjs <url>

示例:

node auto-scrape.mjs https://yitang.top/fs-doc/abc123/docId

首次运行会弹出浏览器,完成微信扫码或手机验证码登录后,Cookie 自动保存,后续无需重复登录。

输出: output/<文档标题>.md


文件结构

scraper/
├── feishu-to-md.mjs       # 飞书 wiki 采集工具
├── auto-scrape.mjs        # 一堂课平台采集工具
├── cookies.json           # yitang.top 登录 cookie(自动生成)
├── feishu-cookies.json    # 飞书 cookie(自动生成)
├── package.json
└── output/                # 所有输出文档
    ├── 文档标题.md
    └── 文档标题_files/
        ├── image_1.png
        └── ...

常见问题

Q: 飞书采集提示未登录或 401

重新授权:

lark-cli auth login --domain wiki,docs,drive --no-wait --json

Q: 一堂课平台 Cookie 失效?

删除 cookies.json 后重新运行,会自动弹出浏览器重新登录:

rm cookies.json
node auto-scrape.mjs <url>

Q: 图片下载失败?

飞书图片需要有效的个人授权。确认 lark-cli auth status 显示已登录,且包含 docs:document.media:download 权限。


更新记录

2024-09-13

文件名优化

  • 自动生成的 Markdown 文件名现在带有 YYMMDD_ 日期前缀
  • 输出示例:output/260913_《战略笃定》探索营1.md
  • 便于按采集时间排序,同一文档的多次采集版本可区分

登录态持久化优化(大幅减少重复扫码)

  • 改用 Playwright storageState 完整保存登录态(cookies + localStorage
  • 修复了原先只存 cookie 导致每次都要重新扫码的问题(一堂平台的 API 鉴权 TOKEN 存在 localStorage 中)
  • 首次登录后,后续运行基本无需再扫码,直到服务端会话过期(通常数天)
  • cookies.json 从旧格式自动升级为新格式(兼容已有文件)

登录判定改进

  • 增加 5 秒轮询宽限期,避免 SPA 异步写入 TOKEN 时误判为未登录
  • 减少因页面加载时序导致的不必要登录提示
S
Description
No description provided
Readme 315 MiB
Languages
JavaScript 100%