8.7 KiB
1
由于skill-vault和CCPE来做skill和Agent,你可以阅读C:\Users\wangq\Documents\Codex\video-workbench\requirements\下的readme了解其他库如何向这两库提需求。
我现在的目标是下载文章,将下载后的文章放到C:\Users\wangq\Documents\Codex\knowledge-vault\sources\web-archives\下面。
一般我会给URL,可能是知乎、公众号或者x上的URL,需要你下载后,最好能做个分类,放到web-archives,做个简单分类。
我之前在别的机器上做了这个skill,参见D:\article-download\。
我的计划是,你作为需求方,提出需求单,我让skill-vault参考D:\article-download\完成skill的开发,然后在这里做试运行下载。
那么你提需求的话,
- 参考
D:\article-download\的功能能力 - 向我提问
由于D:\article-download\做的比较早,比较麻烦的是,我得提供cookie;现在Codex本身有browser或者Chromeskill,这个之前也做了调研:C:\Users\wangq\Documents\Codex\knowledge-vault\discussions\technology\Codex\3.Codex Browser与Chrome技能调研.md
或者本身有其他skill也行。这是我和ChatGPT交流,它给的建议:C:\Users\wangq\Documents\Codex\knowledge-vault\discussions\agents\GitHub助手GPT\2026-06-27-知乎、x文章.md
总之,你作为需求方,和我讨论完具体需求后,写skill的需求单,不用太关注实现细节。 我拿着skill需求单到skills-vault中打造这个skill。 你更关心的应该是如何存到哪里,怎么命名,考虑到md+图片,应该建立一个文件夹;分类划分这些。
现在提出问题,谈谈你的建议。
我建议这个需求不要叫“文章下载爬虫”,而叫“网页文章归档 Skill”。核心不是重写各平台抓取器,而是:给定 URL,识别平台,选择合适采集方式,把结果稳定落到 knowledge-vault/sources/web-archives/,并保留来源、图片、失败记录和可追溯元数据。
我的建议
目录结构用“平台优先”,不要一开始按主题建深目录。主题分类容易误判,平台和日期是稳定事实;主题可以写进 metadata/frontmatter,后面再整理。
建议默认结构:
C:\Users\wangq\Documents\Codex\knowledge-vault\sources\web-archives\
zhihu\
2026\
2026-06-27--文章标题slug--urlhash\
article.md
images\
img-001.jpg
metadata.json
capture-log.md
wechat\
x\
xiaohongshu\
general\
inbox\
article.md 固定命名,比“文章标题.md”更稳,避免 Windows 路径过长和图片链接迁移问题。标题放在 frontmatter 和正文 H1。文件夹名用 发布日期或抓取日期 + 标题slug + URL短hash,可以天然防重复。
每篇至少保留:
article.md # 正文 Markdown,图片链接改成本地相对路径
images/ # 本地图片
metadata.json # url、canonical_url、platform、title、author、published_at、captured_at、tool、login_surface、image_count、failed_assets、topics
capture-log.md # 本次抓取过程、失败项、是否用了登录态、是否有人工确认
raw.html 和截图我建议作为可选项:公众号、知乎长文可以留 raw.html;X、小红书这类动态平台至少留截图或 capture-log,方便以后知道当时看到的是什么。
旧 D:\article-download\ 值得继承的能力是:URL 路由、微信/知乎/X 平台适配、标题/作者/日期抽取、图片本地化、成功后报告路径和图片数。不要继承的是硬编码路径、cookie 文件依赖、输出到 temp/downloads、以及覆盖旧目录的习惯。
浏览器能力上,我建议需求单这样写:默认优先公开页面/干净 browser;需要真实登录态时才用 Chrome/Edge profile;不读取或保存 cookie/token/localStorage;遇到 CAPTCHA、风控、付费墙、私密内容、批量下载媒体时暂停确认。X 和小红书尤其应该先做“低频、用户可见页面归档”,不要把需求写成反爬工具。
我需要先确认的关键问题
- 你希望“简单分类”主要按什么来分?
我建议默认选 A:
A. 平台 / 年份 / 单篇文件夹,主题只进 metadata
B. 主题 / 平台 / 单篇文件夹,更像知识管理但需要更多人工判断
C. 平台 / 主题 / 年份 / 单篇文件夹,折中但目录会更复杂
后续还需要确认几个点:是否默认保存 raw.html,是否保存页面截图,X/小红书是否只归档图文不下载视频,遇到已存在 URL 是跳过、覆盖还是新建版本,以及是否需要维护一个 web-archives/index.md。我建议先把第 1 个目录原则定下来,再写正式 skills-vault 需求单。
2
其实,对我来说,我不关心平台。
C:\Users\wangq\Documents\Codex\knowledge-vault\sources\clipped-articles\文章参考是从旧的知识库移植过来的,没有分类,那就日期加标题简称也行。
这个是个轻量的,我不希望有抓取的文章内容之外的,log,json这些。 这些抓取的文章,是我之后要进行讨论的素材;讨论后,就失去了它的意义。 讨论,沉淀观点;沉淀的观点,有可能会进入后续的写作。对我来说,核心是沉淀的观点。 而抓取的文章,讨论后,甚至可以删掉了;这个只是省我一些复制粘贴的工作,而有些网站会防止复制粘贴,我会麻烦一些,F12,看源码来复制粘贴。
了解了这些后,你对这个有什么想法?
我会把需求明显收轻:
这不是“网页归档系统”,而是“临时文章剪藏器”。平台只作为内部路由,不进入目录分类;也不需要 metadata.json、capture-log.md、raw.html、截图、审计记录。成功标准就是:给 URL,生成一个文章文件夹,里面有一篇 .md 和本地图片,能用于后续讨论。
我建议输出结构直接模仿旧的 sources\clipped-articles\文章参考:
sources\web-archives\
20260627-标题简称\
标题.md
img_1.jpg
img_2.jpg
或者如果你想延续旧知识库语义,也可以直接放到:
sources\clipped-articles\文章参考\
这点我现在反而倾向于后者:它的含义更接近“抓取的文章原文素材”。web-archives 听起来更长期、更可追溯,而你现在明确说这些素材讨论后可以失去意义,甚至可删。
需求单里我会这样定边界:
- 不做平台分类目录。
- 不生成 log/json。
- 不做长期索引。
- 不做主题分类。
- 不保留 cookie/token。
- 不追求完整网页存证。
- 不批量采集。
- 只做“URL -> Markdown + 图片本地化”。
- 文件夹命名:优先
发布日期-标题简称;拿不到发布日期就用抓取日期。 - 图片命名:
img_1.jpg这种简单序号即可。 - 重复 URL 或重名时,只追加
-2或短 hash,别引入复杂版本系统。
唯一还需要你拍板的是:.md 里要不要额外加一行原文链接。我的建议是加,因为以后讨论时还能回源;但如果你坚持“只要文章内容”,那就连这行也不加。
3
可以,还是放到clipped-articles\文章参考
.md不需要原文链接。
我用于讨论,大部分讨论是批判性讨论,这些文章的作用,就是当个靶子。
因为,自媒体平台的帖子,大部分质量不高,一篇里面漏洞很多,能借用的,就一两个观点。
现在可以准备这个需求单了吧。
已准备好需求单:lightweight-web-article-clipper.md。
我把它写成轻量“文章剪藏器”需求,而不是归档系统:输出到 sources/clipped-articles/文章参考,不按平台分类,不生成 json/log/raw.html/screenshot/index,.md 里默认不放原文链接,只保留标题、正文和本地图片。也写清楚了边界:不保存 cookie/token,不绕 CAPTCHA/付费墙/风控,不做批量爬取,不把这些自媒体文章提升成长期知识资产。
检查过内容和 git 状态;当前除了这个新 requirements/ 目录外,仓库里还有一些原本已存在的未跟踪/修改文件,我没有碰它们。未运行测试,因为这次只新增需求文档。
4
这个clipped-articles技能已经做好了。
你了解下这个技能,它也支持批处理。所以我给你本次需要下载的URL就好。
https://www.zhihu.com/question/1998112125915267964/answer/2052741315209831340https://www.zhihu.com/pin/2042210955053065858https://x.com/dotey/status/2069632132431929651https://mp.weixin.qq.com/s/TApHplXcBONvmVXgDKUUOg
我以后说“下载文章”,然后给你链接,或者一组链接。你就调用这个技能。