{"id":"2db9ece1-b18f-429e-925e-78f23bcc79d3","slug":"clawhub-ajayhao-article-fetcher","name":"Article Fetcher（文章抓取+Notion/Obsidian知识库存档）","description":"抓取微信公众号、小红书、豆瓣、知乎文章，自动上传 OSS 图片，LLM 智能提取关键词，一键存档到 Obsidian 本地知识库（可选 Notion）","canonicalUrl":"https://www.xpersona.co/agent/clawhub-ajayhao-article-fetcher","sourceUrl":"https://clawhub.ai/ajayhao/article-fetcher","homepage":"https://clawhub.ai/ajayhao/skills/article-fetcher","source":"CLAWHUB","vendor":{"slug":"clawhub","label":"Clawhub","url":"https://clawhub.ai/ajayhao/skills/article-fetcher"},"protocols":["OPENCLEW"],"capabilities":[],"trustScore":null,"trustConfidence":"unknown","artifactCount":0,"benchmarkCount":0,"lastRelease":"1.3.6","freshnessAt":"2026-10-10T06:35:15.327Z","freshnessLabel":"Oct 10, 2026","securityReviewed":true,"openapiReady":false,"stats":[{"label":"Trust score","value":"Unknown"},{"label":"Compatibility","value":"OpenClaw"},{"label":"Freshness","value":"Oct 10, 2026"},{"label":"Vendor","value":"Clawhub"},{"label":"Artifacts","value":"0"},{"label":"Benchmarks","value":"0"},{"label":"Last release","value":"1.3.6"}],"factsPreview":[{"factKey":"vendor","category":"vendor","label":"Vendor","value":"Clawhub","href":"https://clawhub.ai/ajayhao/skills/article-fetcher","sourceUrl":"https://clawhub.ai/ajayhao/skills/article-fetcher","sourceType":"profile","confidence":"medium","observedAt":"2026-10-10T06:35:15.362Z","isPublic":true},{"factKey":"protocols","category":"compatibility","label":"Protocol compatibility","value":"OpenClaw","href":"https://www.xpersona.co/api/v1/agents/clawhub-ajayhao-article-fetcher/contract","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ajayhao-article-fetcher/contract","sourceType":"contract","confidence":"medium","observedAt":"2026-10-10T06:35:15.362Z","isPublic":true},{"factKey":"traction","category":"adoption","label":"Adoption signal","value":"1.6K downloads","href":"https://clawhub.ai/ajayhao/article-fetcher","sourceUrl":"https://clawhub.ai/ajayhao/article-fetcher","sourceType":"profile","confidence":"medium","observedAt":"2026-10-10T06:35:15.362Z","isPublic":true},{"factKey":"latest_release","category":"release","label":"Latest release","value":"1.3.6","href":"https://clawhub.ai/ajayhao/article-fetcher","sourceUrl":"https://clawhub.ai/ajayhao/article-fetcher","sourceType":"release","confidence":"medium","observedAt":"2026-08-08T13:16:14.670Z","isPublic":true},{"factKey":"handshake_status","category":"security","label":"Handshake status","value":"UNKNOWN","href":"https://www.xpersona.co/api/v1/agents/clawhub-ajayhao-article-fetcher/trust","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ajayhao-article-fetcher/trust","sourceType":"trust","confidence":"medium","observedAt":null,"isPublic":true}],"highlights":["1.6K downloads","Trust evidence available"],"agentCard":{"name":"Article Fetcher（文章抓取+Notion/Obsidian知识库存档）","description":"抓取微信公众号、小红书、豆瓣、知乎文章，自动上传 OSS 图片，LLM 智能提取关键词，一键存档到 Obsidian 本地知识库（可选 Notion）","source":"CLAWHUB","sourceId":"clawhub:s17145mdmb9rthykrxn51j1yrx849jek:article-fetcher","homepage":"https://clawhub.ai/ajayhao/skills/article-fetcher","repository":"https://clawhub.ai/ajayhao/article-fetcher","documentation":"https://www.xpersona.co/agent/clawhub-ajayhao-article-fetcher","protocols":["OPENCLEW"],"examples":[{"kind":"example","language":"text","snippet":"File v1.3.6:_meta.json\n\n{\n  \"ownerId\": \"kn73qb7xbge03wr1vsyg56snts837gqq\",\n  \"slug\": \"article-fetcher\",\n  \"version\": \"1.3.6\",\n  \"publishedAt\": 1786194974670\n}\n\nFile v1.3.6:CHANGELOG.md\n\n# Changelog\r\n\r\n## v1.3.6 (2026-08-08)\r\n\r\n### 🔒 安全修复（基于 ClawHub SkillSpector 审计）\r\n\r\n- **P0 — lxml XXE 漏洞（High）**：`requirements.txt` 中 `lxml==6.0.4` → `lxml==6.1.0`，修复 CVE-2026-41066（`iterparse` / `ETCompatXMLParser` 默认配置 XXE）。经核查代码未使用 lxml 解析不可信 XML（MHTML 走 `email` 库、HTML 走 `BeautifulSoup('html.parser')`），升级即消除风险面。\r\n- **P1 — 校正误导性「零网络外发」声明（Medium, Intent-Code Divergence）**：删除 README / SKILL 中「Obsidian 数据完全本地 / 零网络外发 / 不经过网络」等绝对化表述，统一为「Obsidian `.md` 本地落盘 + 文章图片上传阿里云 OSS（必需）」的准确描述。\r\n- **P2 — LLM 外发声明补强（Medium, External Transmission）**：在 `utils/tag_extractor.py` 的 LLM 调用处补充安全注释（可选触发 / endpoint 来自 `LLM_BASE_URL` 配置 / 仅外发前 12000 字符）；README 安全说明新增 LLM 文本外发条目，SKILL `securityNote` 同步声明。\r\n- **P3 — 删除「绕过安全拦截」笔记**：移除 `references/tirith-blocking.md`（审计报告指出的 bypass-prior-blocking 笔记），并确认无其它文件引用。\r\n\r\n## v1.3.5 (2026-08-08)\r\n\r\n### ✨ 离线输入（HTML / MHTML）\r\n\r\n- **新增 `fetchers/offline_parser.py`**：将 HTML 文本 / `.mhtml` 文件解析为标准 `article_data`，复用既有后半段管线（OSS 上传 → 替换 URL → 打标 → 字数 → Obsidian/Notion 归档）\r\n- **`main.py` 抽出 `process_and_archive(article_data, platform, url, tags)`**：URL 抓取与离线输入共用同一归档流程，行为零变化\r\n- **新增离线入口**：`archive_from_html()` / `archive_from_mhtml()`\r\n- **CLI 扩展（`sys.argv` 手动解析，不使用 argparse，遵循安全合规约定）**：`--html`（支持 `-` 读 stdin）/`--mhtml`/`--platform`（默认 wechat）/`--url`（可选）\r\n- **三陷阱修复（源自 wechat-article-capture 技能沉淀）**：\r\n  - 微信懒加载：`data-src`→`src` 并 `del data-src`，根治 markdownify 读占位符\r\n  - MHTML 编码：`get_payload(decode=True)` 取 bytes 后按 `get_content_charset()` 或 `utf-8` 解码，避免乱码\r\n  - `data:image/svg+xml` 占位符过滤，图片列表归一化（去 query、去重）确保 URL 替换可命中\r\n\r\n### 🔧 本地适配\r\n\r\n- **Vault 去序号**：存档目录从 `1-收件箱/` 改为 `收件箱/`（知衍库 2026-07 架构调整）\r\n- **移除 `distilled: false`**：蒸馏状态判定已改为文件存在性模型，不再依赖 frontmatter 标记\r\n- **裁撤 `wechat-article-capture` 技能**：v1.3.5 的 MHTML/HTML 离线模式已覆盖其全部功能，无需单独维护\r\n\r\n### 🐛 已知问题\r\n\r\n- ~~**Notion 转换**：`### | t"},{"kind":"example","language":"text","snippet":"File v1.3.5:_meta.json\n\n{\n  \"ownerId\": \"kn73qb7xbge03wr1vsyg56snts837gqq\",\n  \"slug\": \"article-fetcher\",\n  \"version\": \"1.3.5\",\n  \"publishedAt\": 1786192142791\n}\n\nFile v1.3.5:references/tirith-blocking.md\n\n# Tirith 安全扫描阻塞：ClawHub 安装限制\r\n\r\n## 问题\r\n\r\narticle-fetcher（Trust: community）通过 ClawHub 安装时被 Tirith 硬阻止："}]}}