飞书视频下载器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_920d8936/feishu-video-downloader
技能介绍
为什么不能直接下载
飞书文档中的视频并非普通的静态资源。它们托管在 internal-api-drive-stream.feishu.cn,每个请求都需要携带当前会话的认证信息。服务端会校验 data_version token 和会话状态,这意味着直接用 curl 或 wget 抓取视频 URL 必然返回 401 或 403。导出 cookie 再请求的方案同样行不通,因为飞书的鉴权逻辑不仅依赖 cookie,还绑定了浏览器内部的运行时状态。
核心思路:在浏览器上下文中执行 fetch
该技能选择了一条更可靠的路径——通过 Chrome DevTools Protocol 连接到已经打开并登录飞书的浏览器实例,然后在飞书页面的上下文中直接执行 fetch()。这样做能完整保留浏览器的 cookie、请求头和会话状态,下载行为与用户正常播放视频完全一致。
具体工作流分为几个步骤:
- 检测 CDP 连接:运行
check_cdp.py确认浏览器已开启--remote-debugging-port=9222,并列出所有飞书标签页。 - 定位页面并触发懒加载:脚本会找到当前飞书文档对应的标签页,模拟滚动操作以触发那些延迟加载的视频块。
- 三重策略发现视频:依次尝试 DOM 扫描(
document.querySelectorAll('video'))、Performance API 资源追踪、以及解析__SSR_DOC_INFO__等 SSR 数据存储来提取视频地址。 - 浏览器内下载:对发现的视频 URL 执行去重后,在浏览器上下文中发起
fetch()请求,最终将文件保存到指定目录。
适用边界与注意事项
这种方法并非万能。首先,它要求浏览器保持开启且飞书页面处于加载状态,无头模式无法工作,因为认证信息存在于浏览器的运行时环境中。其次,只能处理文档中直接嵌入的视频,外链视频不在支持范围内。此外,超过 500MB 的大文件可能触发 CDP 的 fetch 超时限制,建议拆分或使用其他方式处理。
使用场景
- 团队项目归档时,需要把飞书文档里嵌入的培训视频逐个下载成 .mp4 保存到本地
- 出差途中没有网络,需要提前把飞书知识库文档中的视频教程批量下载到本地观看
- 合规审查需要留存飞书 Wiki 中嵌入的宣讲视频作为凭证,要求导出原始 .mp4 文件
- 把飞书文档迁移到其他平台时,内嵌视频无法随文档导出,需要先下载再重新上传
适合人员
- 团队文档管理员,需要定期归档飞书知识库中内嵌的培训视频
- 内容合规人员,需要留存飞书 Wiki 里嵌入的宣讲视频作为审查凭证
- 经常出差的培训讲师,想在离线前批量下载飞书文档中的教学视频
- 负责平台迁移的工程师,需要把飞书文档中的内嵌视频导出后重新部署