在线文档本地化
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3aa1c1ff/online-doc-convert 技能。
技能介绍
解决的问题
抓取在线内容的真正麻烦不在"下载",而在三层失真:
- 登录墙与 JS 渲染:沙箱里
curl拿到的常常是空壳 HTML,正文藏在window.__INITIAL_STATE__或需要交互后才注入的 DOM 里。 - 签名与时效:抖音类站点的视频直链带签名且限时失效;飞书图片链接的 authcode 过期后全部变成死链。
- 结构塌陷:直接把网页转 Markdown,导航栏、引用卡、评论区会一起涌进来,原本的 H1 层级被打散,表格和代码块对齐丢失。
这个技能要做的是系统化转换,而不是简单的格式另存。
核心能力
管道固定为四段:输入适配 → 结构化解析 → 格式转换 → 质量校验。前半段由 agent 按源类型路由,后半段由 scripts/convert.py 统一处理,输出到 stdout,校验报告走 stderr。
输入侧覆盖了常见的"难抓"场景:
- 飞书:
feishu_fetch.py走 lark-cli 连接器取单篇或整空间正文;feishu_img_localize.py重抓全文抽取file_token把图片落到本地,配合build_static_html.py --embed-images生成图片永不失效的单文件。 - 小红书 / X:混合策略——先零依赖解析 SSR 状态,遇登录墙回退 Playwright 渲染;X 长文靠 browser-skill 驱动已登录浏览器,只保留 article 主节点,剔除嵌套引用卡与评论区,并把
pbs.twimg.com图片真实下载后 base64 内嵌。 - 视频:
video_to_md.py串联渲染截流直链 → curl 下载 → ffmpeg 抽音频 → faster-whisper 转写 → opencc 繁转简 → 按章节分组生成 MD,预留「观点 / 论述 / 建议」占位由 agent 提炼。 - 知识库整库导出:
lark_kb_crawl / download / receiver / build四件套,内容驱动 BFS 递归全量页面,附件绕过drive:file:downloadscope 缺失走浏览器转发落盘到files/。
转换后统一过校验:标题层级连续性、代码围栏奇偶、表格列数、链接图片计数,结论写进 validation 块。
适用边界
- 引擎
convert.py仅依赖 Python 标准库;装了trafilatura只提升 HTML 抽取质量,不是必需项。 - X 与知识库附件的下载环节必须有 browser-skill 和已登录会话,这是整条流程里唯一的联网依赖。
- 视频转写是机器识别,同音错别字难免,交付物须标注"仅供参考"。
- MD 是中间产物而非终点:两段式设计的意义就在于一旦 MD 落地,转 HTML 可反复重跑、不再触碰浏览器。
使用场景
- 飞书知识库含附件需要整库导出为可离线浏览的HTML
- 小红书笔记需要转成Markdown并把图片落地到本地
- 抖音视频需要转成按章节分组的中文Markdown
- 已有抓取好的X长文MD需要重新生成离线HTML
适合人员
- 内容运营,需要把飞书空间里的全部文档和附件打包成离线资料
- 技术作者,要把网页文章结构化清洗后沉淀进自己的知识库
- 课程编辑,需要把在线视频整理成带章节的图文讲义
- 爬虫工程师,需要绕过登录墙批量抓取小红书和X的正文与图片