knowledge-vault/discussions/technology/Codex/2.重构知识库/4.下载文章.md

160 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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的开发然后在这里做试运行下载。
那么你提需求的话,
1. 参考`D:\article-download\`的功能能力
2. 向我提问
由于`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后面再整理。
建议默认结构:
```text
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`,可以天然防重复。
每篇至少保留:
```text
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 和小红书尤其应该先做“低频、用户可见页面归档”,不要把需求写成反爬工具。
**我需要先确认的关键问题**
1. 你希望“简单分类”主要按什么来分?
我建议默认选 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\文章参考`是从旧的知识库移植过来的,没有分类,那就日期加标题简称也行。
这个是个轻量的我不希望有抓取的文章内容之外的logjson这些。
这些抓取的文章,是我之后要进行讨论的素材;讨论后,就失去了它的意义。
讨论,沉淀观点;沉淀的观点,有可能会进入后续的写作。对我来说,核心是沉淀的观点。
而抓取的文章讨论后甚至可以删掉了这个只是省我一些复制粘贴的工作而有些网站会防止复制粘贴我会麻烦一些F12看源码来复制粘贴。
了解了这些后,你对这个有什么想法?
我会把需求明显收轻:
这不是“网页归档系统”,而是“临时文章剪藏器”。平台只作为内部路由,不进入目录分类;也不需要 `metadata.json`、`capture-log.md`、`raw.html`、截图、审计记录。成功标准就是:给 URL生成一个文章文件夹里面有一篇 `.md` 和本地图片,能用于后续讨论。
我建议输出结构直接模仿旧的 `sources\clipped-articles\文章参考`
```text
sources\web-archives\
20260627-标题简称\
标题.md
img_1.jpg
img_2.jpg
```
或者如果你想延续旧知识库语义,也可以直接放到:
```text
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](C:/Users/wangq/Documents/Codex/knowledge-vault/requirements/skills-vault/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/2052741315209831340`
* `https://www.zhihu.com/pin/2042210955053065858`
* `https://x.com/dotey/status/2069632132431929651`
* `https://mp.weixin.qq.com/s/TApHplXcBONvmVXgDKUUOg`
---
我以后说“下载文章”,然后给你链接,或者一组链接。你就调用这个技能。