mcpbeat

Online Content Collector

cafe3310/online-content-collector

对 Obsidian 仓库进行自动素材媒体剪藏,本地化特定 tag 标注的网页、视频及附件

7k tokens
context cost
the whole folder, loaded on every use
19
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
249
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/cafe3310/public-agent-skills --skill online-content-collector

The instruction itself

5 sections, as written by the author

技能:线上素材收集器 (Online Content Collector)

概述

此技能旨在实现从“发现链接”到“本地化存档”的完全自动化。它扫描 Obsidian 仓库中带有特定标签的链接,将其汇总并下载为包含文本、图片、视频及附件的完整本地 Markdown 存档。

核心配置解析

此技能依赖用户 Vault 根目录下的 AGENTS.mdAgent 在执行脚本前,必须首先读取此文件,并解析出以下路径:

  • 下载列表目录位于: 用于传递给 --list-dir
  • 下载内容目录位于: 用于传递给 --archive-dir

核心工作流

第一阶段:扫描与汇总 (Discovery & Aggregation)

  • 配置读取: Agent 读取 AGENTS.md,确定目标路径。
  • 执行脚本: 调用 scripts/collect_links.py,传入 --vault-path--list-dir
  • 元数据提取与更新: 脚本扫描包含 #Marker-待下载 的文件,提取 timesource,生成 YAML 格式的任务列表 [yyyy-mm-dd-hh 下载列表整理.md],并将原始文件标签更新为 #Marker-下载中-YYYYMMDD

第二阶段:用户确认 (User Confirmation)

  • 停止并检查: Agent 输出 YAML 列表文件路径,等待用户确认。

第三阶段:执行下载与剪藏 (Execution & Archival)

  • 执行脚本: 调用 scripts/process_downloads.py,传入 --list-file--archive-dir
  • 任务处理与分发:
  • YouTube / X (Twitter): 使用 yt-dlp 下载。请求最高画质,必须下载并保留全量 JSON 元数据(--write-info-json)。
  • 未知站点: 如果无法识别域名或未配置下载方式,则直接标记为“下载失败(未识别站点)”,不进行尝试。
  • 隔离目录创建: 为每个下载任务创建独立目录,命名规范:[YYYY-MM-DD-HH] {分类} {描述/ID}
  • 内容本地化:
  • 主文档: 在目录下创建一个同名的 .md 文件。
  • 资产存放: 所有的 .mp4, .json, .jpg 等资产全部存放在该任务目录下
  • 引用关联: Markdown 文件中使用本地相对路径链接同目录下的视频。

第四阶段:状态汇报与闭环 (Reporting & Closing)

  • 列表回写: 脚本在 YAML 列表中更新状态为“下载完成”或“下载失败”。
  • 标签同步: Agent 根据脚本输出,将原始文件中的链接标签更新为 #Marker-已下载-YYYYMMDD

依赖工具

  • yt-dlp: 视频抓取。
  • MarkItDown / Pandoc: 网页转 Markdown。
  • ffmpeg: 视频合并。

最佳实践

  • 路径对齐: 始终从 agents.md 读取路径,不要硬编码。
  • 元数据保留: 在剪藏的 Markdown 头部记录原始 URL 和收集时间。
  • 异常容错: 下载失败时记录错误原因,不中断后续任务。

How to use it

Copy the folder

Take cafe3310/online-content-collector from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.