Content Collector - 个人内容收藏系统
收藏好内容 → 结构化整理 → 关键词检索 → 二次创作
数据位置
- 主存储:
<WORKSPACE>/collections/(articles/ tweets/ videos/ wechat/ ideas/) - Obsidian 同步:
<YOUR_OBSIDIAN_VAULT>/收藏/(每次收藏同时写入) - 索引:
collections/index.md+collections/tags.md(自动维护)
收藏工作流
Step 0: 去重(每次必做)
有 URL 时: obsidian search query="<domain/path>" total(去掉 https:// 前缀)或 grep -rl "<url>" collections/
返回 > 0 → 已收藏,终止。返回 0 → 继续。
Step 1: URL 路由
按 URL 匹配处理路径。详见 references/url-routing-and-site-specs.md。
| URL 模式 | category | 处理方式 |
|---|---|---|
| 内网域名 | articles | Chrome Relay,不调 web_fetch |
arxiv.org/abs/* | articles | 提取 abstract/authors |
github.com/*/* | articles | README + stars/language |
mp.weixin.qq.com | 优先 browser | |
youtube.com/watch* | videos | Supadata transcript |
| B站 | videos | video_transcribe.sh 本地转录 |
| 小红书/抖音(视频) | videos | video_transcribe.sh 本地转录 |
x.com/*/status/* | tweets | 提取互动数据,thread 展开 |
| 其他 | articles | 默认流程 |
Step 2: 内容提取
文章/网页:
supadata_fetch.py web <url>(降级:web_fetch)- Schema.org 提取 — 详见
references/schema-extraction-spec.md - 插图提取+下载(必做)— 详见
references/image-extraction-spec.md - 主题关键词提取 — 详见
references/theme-extraction-spec.md
视频:
- 元数据:
supadata_fetch.py metadata <url>或bilibili_extract.py <url> - 转录:
bash scripts/video_transcribe.sh <url>(自动检测平台和字幕源) - 精彩片段提取(≥10min) — 详见
references/highlight-extraction-spec.md - 主题关键词提取
推文/短内容: 直接提取文本+互动数据
Step 3: 写文件
- 生成
collections/{category}/YYYY-MM-DD-slug.md(格式见下方 Schema) - 内容概览图(>1000字文章) — 详见
references/content-overview-spec.md - 同步到 Obsidian — 详见
references/obsidian-integration.md obsidian daily:append content="- 📌 收藏了 [[{标题}]]({source})| {一句话摘要}"- 更新
index.md+tags.md
Step 3.5: 微信图片缓存(wechat 类必做)
如果 URL 是微信公众号(mp.weixin.qq.com),写完收藏文件后运行:
bash scripts/cache-wechat-images.sh <刚写入的收藏文件>
下载微信 CDN 图片到本地 collections/images/<slug>/,防止图片过期 404。
Step 4: 关联匹配
运行 bash scripts/post-collect.sh <刚写入的收藏文件>
脚本自动匹配活跃项目和相关收藏,更新 frontmatter 的 related_projects。
如有相关收藏,在回复中附带提及。
仍需手动匹配 collections/topics/topic-pool.md → 追加到 temp/handoffs/collector-to-writing.md
写文件前自检
每次写 collections/ 文件前,确认以下步骤已完成。缺项标注 incomplete: true,不允许静默跳过。
- 去重 ✓ → 内容提取 ✓ → 插图(文章类,必做) ✓ → 主题关键词 ✓ → 写文件 ✓ → Obsidian同步 ✓ → Daily Note ✓
- 写 tags 前运行
bash scripts/normalize-tags.sh <tag1> <tag2> ...检查是否有已有近似 tag,优先复用已有 tag 名称
存储 Schema
文件命名: YYYY-MM-DD-slug.md
---
title: ""
source: ""
url: ""
author: ""
date_published: ""
date_collected: ""
tags: []
category: "articles|tweets|videos|wechat|ideas"
language: "zh|en"
summary: ""
themes: [] # 5-7 个概念切面
schema_type: "" # Schema.org @type(可选)
schema_data: {} # ≤10 key-value(可选)
incomplete: false
# 视频专属
duration: ""
platform: ""
bvid: ""
stats: {}
subtitle_source: "" # native_cc|whisper
highlights: [] # 精彩片段
related_projects: []
---
内容结构
- 内容概览(Mermaid,>1000字触发)
- 核心观点(3-7个要点)
- 精彩片段(视频≥10min)
- 要点摘录(blockquote 金句)
- 热门评论精选(视频类)
- 我的笔记
- 原文摘要(200-500字)
英文内容
默认 storytelling 翻译风格。术语参照 <WORKSPACE>/references/glossary-ai-zh.md,首次出现 中文(English) 格式。
检索
- 标签:
tags.md - 全文:
grep -ril "keyword" collections/ - 返回匹配列表 + 摘要
二创
按选题从收藏库筛选素材,交给 xiaohongshu-ops 或 wemp-ops 处理。本 skill 只负责供料。
工具脚本
| 脚本 | 用途 |
|---|---|
scripts/supadata_fetch.py web|transcript|metadata <url> | Supadata API 抓取 |
scripts/bilibili_extract.py <url> | B站元数据 |
scripts/video_transcribe.sh <url> | 视频转录(自动检测平台) |
scripts/sync_to_obsidian.py | 批量同步到 Obsidian |
scripts/cache-wechat-images.sh <file> | 微信 CDN 图片本地缓存 |
scripts/normalize-tags.sh <tag1> <tag2> ... | 标签归一化去重 |
scripts/post-collect.sh <file> | 收藏后自动关联分析 |
🔴 Final: 机械验证(不可跳过)
通知用户前运行:
bash scripts/skill-verify.sh content-collector <collections-file-path>
# 例: bash scripts/skill-verify.sh content-collector collections/wechat/2026-04-23-xxx.md
- ✅ ALL PASSED → 回复用户收藏结果
- ❌ FAILED → 按输出补齐缺失项(Obsidian 同步/插图/index.md 等),重新验证直到通过
绝不在验证未通过时回复用户"已完成"。
收藏结果通知
- 成功:
📌 已收藏:<标题>\n核心:<一句话摘要>\n标签:<3-5个标签> - 重复:
📌 已存在:<标题>(之前已收藏过) - 失败:
❌ 收藏失败:<URL>\n原因:<失败原因>
下一步建议(条件触发)
| 触发条件 | 推荐 |
|---|---|
| 与公众号选题方向高度相关 | 用 wemp-ops 写 |
| 适合小红书短图文 | 用 xiaohongshu-ops 改写 |
| 某博主收藏 ≥3 条 | 用 x-profile-deep-dive 画像 |
| 涉及技术方案/架构决策 | 存到 memory 做长期参考 |