SuperAPI AI 工具集

soia-pkm-clip-wechat-article

办公与效率

查看项目

更新于 10-16 08:52

技能介绍

用途

soia-pkm-clip-wechat-article 是 clip 家族的公众号成员,用于把单篇微信公众号文章沉淀进 Obsidian vault。它面向个人知识管理(PKM)场景,将公众号文章归档为结构化 Markdown 文件,便于后续整理、提炼、创作与发布。

主要能力

  • 抓取微信公众号文章静态 HTML(比 X 等平台更易抓取,无需 API)。
  • 解析正文(#js_content)、标题(#activity-name / og:title)、署名作者(author meta)、公众号名(#js_name)、发布时间(createTime / oriCreateTime fallback)。
  • 提取图片 data-src 并保留为远程链接;当前脚本不下载图片,离线化由后续流程处理。
  • 按 clip 家族统一规范落地 Markdown,路径为 <vault-articles-dir>/<年>/<月>/YYYY-MM-DD-公众号-<作者>-<标题>.md。
  • frontmatter 包含 tags:[文章摘抄]、source: 公众号、url、author、publisher、published_at、captured_at、topics:[]、content_complete。
  • 正文段包含 ## 摘要(AI 补)、## 原文、## 我的看法(留空)、## 关联。
  • 归档后由 AI 补摘要与 topics;脚本已按发布月份归位。
  • 支持 dry-run 预览、JSON 输出、URL 去重、正文质量门和原子写。
  • 用户同时要求「转 PDF / 导出 PDF」时,先完成 Markdown 归档、摘要、topics 与月份归位,再读取并执行 references/obsidian-pdf-export.md;只要目标文件位于 Obsidian vault 内,优先调用 Obsidian 自带「导出 PDF」,外部 PDF 引擎仅作为明确降级方案。

使用方式

安装本技能(单个技能):

npx skills add soia-team/soia-open-skills -g -a '*' -s soia-pkm-clip-wechat-article -y

配置入口:

OBSIDIAN_VAULT=<vault-path>
OBSIDIAN_ARTICLES=<vault-relative-articles-dir>

CLI --vault / --articles-dir 优先于环境变量;都未提供时,仅从当前目录向上寻找真实 .obsidian/ 标志。若 --articles-dir、OBSIDIAN_ARTICLES 都缺失,脚本仍保留 Articles/ 兜底以兼容既有流程,但会向 stderr 打印明确警告;回执必须包含实际落盘目录,并在走兜底时建议配置正式 articles 目录后归位。当前 stdlib 脚本不解析 YAML config.yml,也不需要 API key、cookie 或其他凭据;不要创建一个不会生效的配置文件。

抓取脚本:

python3 scripts/archive_wechat.py <url> \
  --vault <vault-path> \
  --articles-dir <vault-relative-articles-dir> \
  --dry-run --json

先 dry-run 核对标题、作者、发布时间、body_chars、图片数与 content_complete,再去掉 --dry-run 写入。找不到 #js_content、正文异常短或命中拦截页关键词时默认拒绝写入;只有客户明确接受不完整归档时才使用 --allow-incomplete。

验证命令:

python3 -m unittest discover -s tests -p 'test_*.py'
python3 -m py_compile scripts/archive_wechat.py

仓库维护者从 repo 根运行时,把路径替换为 skills/soia-pkm-clip-wechat-article/tests 与 skills/soia-pkm-clip-wechat-article/scripts/archive_wechat.py。

适用场景

  • 用户希望把某篇微信公众号文章保存到 Obsidian vault 时。
  • 需要按统一规范归档公众号文章,并保留标题、作者、发布时间、配图等元数据时。
  • 需要在归档后由 AI 补充摘要与 topics,并衔接后续 organize → distill → compose → publish 流程时。
  • 用户同时要求导出 PDF,且目标文件位于 Obsidian vault 内时。

限制

  • 当前脚本不下载图片,仅保留远程链接;离线化由后续流程处理。
  • 当前 stdlib 脚本不解析 YAML config.yml,也不需要 API key、cookie 或其他凭据。
  • 找不到 #js_content、正文异常短或命中拦截页关键词时默认拒绝写入,除非使用 --allow-incomplete。
  • 若未配置 --articles-dir 或 OBSIDIAN_ARTICLES 而走了 Articles/ 兜底,必须显式标注警告,并建议配置正式 articles 目录后归位。
  • 不确定的元数据(如作者、发布时间解析失败)在回执里显式标注「未核实」,不编造。
  • 第三方 skill 只能声明依赖和安装方式,不直接修改第三方 skill 文件。
  • 强依赖、可选依赖和第三方 skill 关系以 SKILL.md 后续的「依赖 / 前置 / 资源 / 边界」说明为准;没有写清楚时,先补说明或询问客户,不要猜。

闭环位置

★clip-wechat(收) → organize → distill → compose → publish。与 clip-x/web/drive 共享落地规范,仅源不同。