mit einem Klick
web-collector
// 当用户在聊天窗口发送一个或多个链接,并希望默认进入内部收藏流程时使用。强制通过 web-access 抓取网页内容,保留完整原文,整理为 Markdown,并上传到 OneDrive 个人账号目录。
// 当用户在聊天窗口发送一个或多个链接,并希望默认进入内部收藏流程时使用。强制通过 web-access 抓取网页内容,保留完整原文,整理为 Markdown,并上传到 OneDrive 个人账号目录。
| name | web-collector |
| description | 当用户在聊天窗口发送一个或多个链接,并希望默认进入内部收藏流程时使用。强制通过 web-access 抓取网页内容,保留完整原文,整理为 Markdown,并上传到 OneDrive 个人账号目录。 |
把聊天中的网页链接整理为内部收藏 Markdown 文件,并上传到 OneDrive。
在这些场景使用:
web-access 抓网页内容不适用:
internalweb-access 导出为 Markdown,再补充头部元数据这里需要明确区分两层:
web-collector 的依赖web-accessweb-collector 本身只依赖 web-access 的输出契约,不直接依赖 OpenClaw browser。
它真正要求的是:上游最终要能提供一个 payload,至少包含:
{
"title": "页面标题",
"url": "https://example.com/post",
"source": "来源站点",
"markdown_path": "/tmp/web-collector/raw/example.md",
"route": "internal"
}
如果云端的 web-access 恰好是基于 OpenClaw browser 实现的,那么:
OpenClaw browser 只是运行环境实现细节web-collector 的设计依赖因此,当云端出现 Chrome/CORS/WebSocket 问题时,应判断为:
web-access 运行环境不满足web-collector 依赖错了工具运行前真正需要检查的是:
web-access proxy 是否可用markdown_path用户发送链接
-> 拆分为多个 URL
-> 默认进入 internal 路由
-> 平台检测
-> URL 标准化 + 去重
-> 使用 web-access 抓取页面并导出原始 Markdown
-> 生成标题 / 来源 / 标签
-> 组装最终 Markdown
-> 上传到 OneDrive
-> 写入本地缓存
优先使用总入口脚本,而不是逐个手动调用下游脚本。
当 web-access 已经导出原始 Markdown 后,使用:
python3 scripts/collect_from_web_access.py --payload-file /tmp/web-access-export.json
其中 /tmp/web-access-export.json 至少应包含:
{
"title": "页面标题",
"url": "https://example.com/post",
"source": "站点名",
"markdown_path": "/tmp/web-collector/raw/example.md",
"route": "internal"
}
这个入口会自动完成:
如果只想先本地验证,不上传远端:
python3 scripts/collect_from_web_access.py \
--payload-file /tmp/web-access-export.json \
--skip-upload
运行:
python3 scripts/extract_content.py "https://example.com/post"
只做来源标记,不做抓取器路由切换。输出里的 skill 固定为 web-access。
运行:
python3 scripts/deduplicate.py "https://example.com/post"
规则:
本 skill 不扩展浏览器控制能力,只依赖 web-access 已有能力。
期望上游拿回以下信息:
{
"title": "页面标题",
"url": "https://example.com/post",
"source": "站点名",
"markdown_path": "/tmp/web-collector/raw/example.md"
}
要求:
web-access 必须导出完整正文 Markdown运行:
python3 scripts/tag_rules.py --title "页面标题" --content-file /tmp/web-collector/raw/example.md
标签规范:
示例规范:
AI、人工智能 -> 人工智能LLM、大模型、大语言模型 -> 大语言模型Agent、智能体 -> 智能体workflow、工作流 -> 工作流automation、自动化 -> 自动化knowledge management、PKM、知识管理 -> 知识管理OpenAI、Claude、API、Python、JavaScript 保留标准写法运行:
python3 scripts/build_markdown.py \
--title "页面标题" \
--source "来源站点" \
--url "https://example.com/post" \
--route internal \
--content-file /tmp/web-collector/raw/example.md \
--tags "标签1,标签2,标签3,标签4,标签5"
生成结构:
---
title: 页面标题
source: 来源站点
source_url: https://example.com/post
normalized_url: https://example.com/post
collected_at: 2026-04-04T12:00:00+08:00
route: internal
tags:
- 标签1
- 标签2
- 标签3
- 标签4
- 标签5
---
# 原文
...完整正文 Markdown...
文件名:
标题 - YYYY-MM-DD.md首次授权建议在本地执行:
python3 scripts/onedrive_device_code.py
流程:
refresh_tokenrefresh_token 保存到云端密钥环境中上传运行:
python3 scripts/upload_to_onedrive.py /path/to/final.md
所需环境变量:
ONEDRIVE_CLIENT_IDONEDRIVE_REFRESH_TOKENONEDRIVE_TARGET_PATH目录规则:
ONEDRIVE_TARGET_PATH 作为基准目录/✒️ 文稿项目/剪藏文件/2026-04-04/可选环境变量:
ONEDRIVE_CLIENT_SECRETWEB_COLLECTOR_OUTPUT_DIRscripts/extract_content.pyscripts/deduplicate.pyscripts/tag_rules.pyscripts/build_markdown.pyscripts/collect_from_web_access.pyscripts/onedrive_device_code.pyscripts/upload_to_onedrive.py所有脚本都应尽量输出 JSON 结果。错误格式统一为:
{
"success": false,
"error": {
"code": "CONFIG_MISSING",
"message": "ONEDRIVE_TARGET_PATH is required",
"retryable": false
}
}
常见错误码:
DUPLICATE_URLWEB_ACCESS_FAILEDMARKDOWN_EXPORT_FAILEDTAG_GENERATION_FAILEDONEDRIVE_AUTH_REQUIREDONEDRIVE_TOKEN_REFRESH_FAILEDONEDRIVE_UPLOAD_FAILEDCONFIG_MISSING还需要用户提供或确认:
web-access 在目标运行环境中导出 Markdown 的具体交接方式