返回顶部
f

fetch-archive-to-lexiang通用文章抓取归档

通用文章抓取与归档工具。抓取任意 URL(免费/付费/登录墙)的文章全文,转换为结构化 Markdown,并可选转存到乐享知识库。支持 Substack、Medium、知识星球等付费平台的登录态管理。支持 YouTube 视频下载(yt-dlp)、播客音频下载(小宇宙FM等)、音频转录(Whisper)、翻译(中英对照格式),并将音视频和文字稿上传乐享知识库(文字稿使用在线文档格式,支持按块编辑)。关键词触发:抓取文章、获取全文、付费文章、转存知识库、乐享、保存原文、fetch article、归档、YouTube、视频转录、字幕提取、视频下载、播客、podcast、小宇宙、xiaoyuzhou。

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 0.1.2
安全检测
已通过
188
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

fetch-archive-to-lexiang

抓取链接内容 & 转存知识库

概述

将文章 URL(免费/付费/登录墙)抓取为结构化 Markdown,并自动转存到乐享知识库,实现素材归档和可追溯。

最终产出物

  1. 1. <项目子目录>/<原文标题>.md — 完整文章 Markdown(含图片引用)
  2. <项目子目录>/<原文标题>_meta.json — 结构化元信息(原文链接、作者、发布时间、抓取时间等)
  3. <项目子目录>/images/ — 所有文章配图
  4. 乐享知识库中的文档副本(按天维度归档)

文件命名规则(重要)

  • - 必须使用原文标题命名,不要用 article.md 等通用名称
  • 文件名格式:<原文标题>.md、<原文标题>meta.json
  • 示例:How Notion uses Custom Agents.md、How Notion uses Custom Agentsmeta.json
  • 如果标题中包含文件名不合法字符(/、\、:等),替换为 -
  • 乐享知识库转存时也使用原文标题作为文档标题

工作流程

Step 1:素材收集

抓取方式决策树

根据 URL 类型选择抓取方式(按优先级排列):

  1. 1. 微信公众号文章(mp.weixin.qq.com)→ 必须用 fetcharticle.py(webfetch 无法获取图片)
  2. YouTube 视频 → 使用 ytdownloadtranscribe.py(yt-dlp 下载 + Whisper 转录 + AI 翻译),详见下方「YouTube 视频处理」章节
  3. 播客音频(小宇宙 xiaoyuzhoufm.com、Apple Podcasts 等)→ yt-dlp 下载音频 + Whisper 转录,详见下方「播客音频处理」章节
  4. 付费/登录墙文章 → 用 fetcharticle.py(Cookie 注入或 CDP 模式)
  5. 免费图文文章(正文含图片/截图/图表)→ 必须用 fetcharticle.py(webfetch 只能返回文本,无法提取和下载页面中的图片)
  6. 免费纯文字文章(正文无配图)→ 可用 webfetch,内容不完整时切换 fetch_article.py
  7. 文字观点 → 直接整理
  8. 图片素材 → 分析图片内容

⚠️ 关键原则:webfetch 工具只能返回文本内容,无法提取和下载页面中的图片。任何包含图片、截图、图表的文章,都必须使用 fetcharticle.py 抓取,否则图片信息会完全丢失。当不确定文章是否含图时,默认用 fetch_article.py

付费/登录墙文章获取

适用于所有需要登录态才能查看全文的网站(Substack 付费订阅、Medium 会员、知识星球、财新网、The Information 等),使用 fetch_article.py 脚本:

bash

Cookie 注入模式(默认,适用于大部分站点)


python scripts/fetch_article.py fetch --output-dir <项目子目录>

CDP 模式(适用于 Cloudflare 保护站点、需要 Google 账号登录的站点)

python scripts/fetch_article.py fetch --output-dir <项目子目录> --cdp

两种浏览器模式

模式参数原理适用场景
Cookie 注入(默认)从 Chrome Cookie DB 提取 cookies → 注入 Playwright 浏览器Substack、Medium 等大部分站点
CDP
--cdp | 通过 Chrome DevTools Protocol 连接用户真实 Chrome(port 9222),复用完整登录态 | OpenAI、Cloudflare 保护站点、LinkedIn、Google 系网站等会检测自动化浏览器或有反爬的站点 |

何时必须用 CDP 模式

  1. 1. Cloudflare 保护站点(如 openai.com):Cloudflare 的 JS challenge 会阻拦 Playwright 自动化浏览器。CDP 模式连接用户真实 Chrome 可以绕过。脚本会自动检测 Cloudflare challenge 页面(Just a moment... 等)并等待验证通过。
  2. Google 登录页面(如 LinkedIn 通过 Google 登录):Google 登录页面会检测 Playwright 并拒绝登录。CDP 模式完全绕过此检测。

自动升级:对于已知的 Cloudflare 站点(openai.com 等),即使未指定 --cdp,脚本也会自动切换到 CDP 模式。

CDP 模式前置条件:确保 Chrome 浏览器已开启 CDP 远程调试端口:
bash

启动 Chrome(开启 CDP 远程调试端口 9222)


/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 &

验证 CDP 端口可连接

curl -s http://localhost:9222/json/version

如果 Chrome 已在运行但未开启 CDP,脚本会尝试优雅关闭 Chrome 后以 CDP 模式重启。

工作原理

  1. 1. 自动从 Chrome 浏览器的 Cookie 数据库提取目标域名的登录 cookies
  2. 将 cookies 注入 Playwright 浏览器上下文
  3. 加载页面,自动检测并等待 Cloudflare challenge 通过(如有)
  4. 滚动加载懒加载内容、下载所有图片
  5. 自动格式转换:检测下载图片的真实格式(WebP/SVG 伪装成 .png/.jpg 很常见),自动转为真正的 PNG 以确保 PDF 生成和文档嵌入兼容
  6. 将正文转换为 Markdown(article.md),图片保存到 images/ 子目录
  7. 内容提取时自动选择最长的内容容器(避免只抓到免费预览区域)

标题提取增强(多策略回退):

  1. 1. CSS 选择器优先级:h1.post-title > article h1 > [class*=title] h1 > h1
  2. 回退到 → document.title
  3. 自动清理标题中的网站后缀(如 - Cursor、 | Substack)
  4. 正文中与已提取标题相同的第一个

    会被自动去重,避免 MD 中标题重复

作者提取增强

  • - CSS 选择器 + meta[name=author] + [rel=author] + meta[property=article:author] 多策略回退

微信公众号文章(mp.weixin.qq.com)专项优化
脚本对微信公众号文章有专门的检测和处理策略:

  1. 1. 自动检测:识别 mp.weixin.qq.com 域名,自动启用微信模式
  2. 无需登录:微信公众号文章是公开可读的,跳过登录检测和 Cookie 注入流程
  3. 专用内容选择器:使用 #jscontent / .richmediacontent 精准定位正文区域(而非通用选择器可能匹配到页面其他内容)
  4. 标题提取:#activity-name > h1.richmediatitle > 通用 h1 > meta 标签回退
  5. 作者提取:#jsname(公众号名称)> .richmediametanickname > 通用选择器回退
  6. 日期提取:#publishtime > 通用 time/date 选择器回退
  7. 图片懒加载增强
- 微信图片使用 data-src + IntersectionObserver 懒加载 - 滚动速度放慢(300px 步长、200ms 间隔)以确保触发所有 IntersectionObserver - 强制将未触发的 data-src 复制到 src(兜底策略) - 图片下载时优先使用 data-src 的高清原图 URL
  1. 8. 图片格式识别:微信图片 URL 格式特殊(mmbiz.qpic.cn/...?wxfmt=png),从 wxfmt 查询参数推断文件扩展名
  2. Referer 防盗链:通过 Playwright 页面上下文的 page.request.get() 下载图片,自动携带正确的 Referer 头

Substack 站点(如 www.lennysnewsletter.com)专项优化
脚本对 Substack 托管的站点(*.substack.com、lennysnewsletter.com 等)有专门的登录检测和登录态缓存机制:

  1. 1. 登录态缓存:登录成功后自动保存 Playwright storagestate 到 ~/.substack/storagestate.json,后续抓取直接复用,

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 fetch-archive-to-lexiang-1776186783 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 fetch-archive-to-lexiang-1776186783 技能

通过命令行安装

skillhub install fetch-archive-to-lexiang-1776186783

下载

⬇ 下载 fetch-archive-to-lexiang v0.1.2(免费)

文件大小: 51.92 KB | 发布时间: 2026-4-17 14:49

v0.1.2 最新 2026-4-17 14:49
Initial release with major feature set and project scaffolding:

- Initial commit under the new name: fetch-archive-to-lexiang.
- Established the full project structure with 35 versioned files, including extensive documentation in SKILL.md.
- Supports fetching and archiving articles (including paywalled and login-wall content) as Markdown with metadata and images.
- Integrates workflows for Substack, Medium, X (Twitter), 微信公众号, YouTube, and podcasts (including download, transcription, and translation).
- Provides detailed guidance on file naming, login workflows, and storage to 乐享知识库.
- Introduces CDP and cookie-injection browser automation for robust content extraction.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部