用途:归档单篇微信公众号文章到 Obsidian vault。技能抓取公众号静态 HTML,提取正文(#js_content)、标题、署名作者、公众号名与发布时间,图片以 data-src 远程链接保留,当前脚本不下载图片。
主要能力:脚本 scripts/archive_wechat.py 为纯 Python 标准库实现,支持 --dry-run、--json、URL 去重与正文质量门、原子写。URL 去重已归一化,跟踪参数不影响同一文章识别。找不到正文、正文异常短或命中验证码等拦截时默认拒绝写入,并给出 block_reason。
使用方式:配置 OBSIDIAN_VAULT 与 OBSIDIAN_ARTICLES,或使用 CLI --vault / --articles-dir(优先于环境变量);都未提供时向上寻找 .obsidian/,缺失 articles 目录会兜底 Articles/ 并警告。安装可用插件方式:claude plugin marketplace add soia-team/soia-open-skills 与 claude plugin install soia-pkm-vault@soia,或用 npx skills add 只装该技能。先 dry-run 核对标题、作者、发布时间、body_chars、图片数与 content_complete,再写入。
落地规范:路径为 <vault-articles-dir>/<年>/<月>/YYYY-MM-DD-公众号-<作者>-<标题>.md,frontmatter 含 tags、source、url、author、publisher、published_at、captured_at、topics、content_complete,正文分段为摘要、原文、我的看法、关联。单篇归档默认继续调用 soia-pkm-organize-article-moc,用 rebuild_moc.py --article 增量同步,不做 full-rebuild。
适用场景:需要把公众号文章沉淀进个人知识库,并保留来源信息与后续整理链路。
限制:当前 stdlib 脚本不解析 YAML config.yml,也不需要 API key、cookie 等凭据;不下载图片离线化由后续流程处理;PDF 导出应在 Markdown 归档、整理与月份归位完成后,优先使用 Obsidian 自带导出。回执必须报告 captured、organized、moc_synced、map_synced、base_verified,未核实元数据标注“未核实”。