返回顶部
a

article-archiver文章归档器

Automatically archive web articles and Twitter Articles to Feishu documents. ALWAYS trigger when user shares URLs from x.com (Twitter), mp.weixin.qq.com (WeChat articles), or says "保存/记录/收藏 [链接]". Handles long articles (600+ lines), multiple images (20+ images), preserves formatting (bold, code blocks, lists), and sends success notification to user. Use immediately when detecting article URLs, don't ask for confirmation.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
198
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

article-archiver

Article Archiver

自动抓取网页文章和 Twitter Article,完整归档到飞书文档。

⚠️ 关键实现要点(必读)

1. 必须读取配置文件获取归档位置
bash
source ~/.openclaw/workspace/skills/article-archiver/config/feishu-locations.sh

使用 $DEFAULTSPACEID 和 $DEFAULTPARENTNODE

2. 图片处理流程

  • - 使用 agent-browser 打开页面
  • 滚动加载所有图片(懒加载)
  • 用 img.preview 或类似选择器过滤内容图片(排除头像、图标)
  • 分析每张图片在文章中的位置(找到前面最近的段落文本)
  • 下载图片到 /tmp/
  • 使用 feishudoc uploadimage 并指定 afterblockid 插入到正确位置
  • 关键:uploadimage 支持 afterblock_id 参数,可以精确控制图片位置

3. 样式保留

  • - 引用块:使用 > 开头
  • 粗体:使用 text
  • 列表:使用 - 或 1.
  • 代码块:使用

4. 内容传递方式

  • - 使用 OpenClaw 的 read 工具读取文件
  • 不能在 feishu_doc 参数中使用 $(cat file)
  • 大文件分批处理(每批 100 行)

5. 去重检查

  • - 归档前先搜索同名文档
  • 如果存在,返回已有文档链接
  • 不要重复创建

6. 防止乱码和格式问题

  • - UTF-8 编码

- 使用 html-to-markdown-fixed.js(而不是 html-to-markdown-final.js)
- 该脚本使用 Buffer 确保 UTF-8 编码正确,避免中文字符被截断
- 自动移除替换字符 \ufffd 和 ���
  • - 标题格式修复

- 脚本会自动修复 # \n\n内容 格式为 # 内容
- 避免飞书渲染时标题为空、内容在下一行的问题
  • - 验证方法

- 写入飞书前,检查 JSON 输出中是否有 \ufffd 或 ���
- 检查标题格式是否正确(标题标记和内容在同一行)
  • - 如果仍有问题

- 不要手动重写原文内容,必须从原始来源精确提取
- 长文本分段写入时,不要在多字节字符中间截断

7. 避免重复标题

  • - 飞书文档已经有页面标题(Page title),不要在正文开头再写一次标题
  • 从原文提取内容时,跳过第一个 H1 标题(通常就是文章标题)
  • 如果 web_fetch 或 agent-browser 提取的内容以标题开头,删除第一行
  • 正文应该从引言、摘要或第一段正文开始
  • 元数据后直接接正文,不要插入标题

8. 元数据格式(重要)

  • - 必须使用引用块格式(灰色背景,有样式,好看)
  • 标准格式(参考 https://qingzhao.feishu.cn/wiki/ZVCFwN7bci1uyhknLpucA18FnSe):

markdown
> 原始链接: https://example.com/article
> 归档时间: 2026-03-12 22:16:00
> 来源: example.com
> 作者: 张三 (@username)


  • - 关键点

- 每行以 > 开头(引用块)
- 字段名用 粗体 + 冒号
- 字段值用普通文本
- 元数据和正文之间用分隔线 --- 分开
  • - ❌ 不要使用

- Markdown 表格(会被渲染成飞书表格,不美观)
- 普通文本(没有样式,不好看)
- Emoji(📄、📅、✍️)在引用块中显示不好

9. 图片位置精确控制

  • - 图片必须插入到正确的段落之后,不能随意放置
  • 使用 feishudoc uploadimage 时,必须指定 afterblockid
  • 步骤:

1. 先写入全部正文内容
2. 使用 feishudoc listblocks 获取所有 block_id
3. 根据图片前面的文本内容,找到对应的 block_id
4. 用 afterblockid 参数将图片插入到正确位置
  • - 不要在写入正文时就尝试插入图片(会导致位置错乱)

核心功能

  • - ✅ 支持长文章(600+ 行)
  • ✅ 支持多图片(20+ 张),图片插入到正确位置
  • ✅ 保留完整格式(粗体、代码块、列表)
  • ✅ 按月份自动组织
  • ✅ 自动去重(检测重复 URL)

使用方法

触发条件

自动触发(无需用户明确说归档):

  • - 用户发送 Twitter/X 链接:https://x.com/... 或 https://twitter.com/...
  • 用户发送微信公众号链接:https://mp.weixin.qq.com/...
  • 用户说保存 [链接]、记录 [链接]、收藏 [链接]

手动触发

  • - 用户明确说归档这篇文章、保存到飞书
  • 用户发送其他网页链接并询问是否归档

触发后的行为

  1. 1. 立即开始归档,不要询问确认
  2. 归档过程中可以简短提示正在归档...
  3. 归档成功后发送通知消息(包含文档链接)
  4. 归档失败时说明原因,提供解决建议

归档流程

0. 去重检查(必须先执行)

在开始归档前,必须先检查文档是否已存在

bash

1. 提取文章标题(使用修复版脚本)


TITLE=$(node scripts/html-to-markdown-fixed.js $URL $(cat config/twitter-cookies.txt) | jq -r .title)

2. 在知识库中搜索同名文档

feishu_wiki nodes --space-id 7527734827164909572 --parent-node NqZvwBqMTiTEtkkMsRoc76rznce | \ jq -r .nodes[] | select(.title == $TITLE) | .node_token

3. 如果找到同名文档,跳过归档

if [ -n $EXISTING_NODE ]; then echo ⚠️ 文档已存在,跳过归档 echo 已存在的文档:https://qingzhao.feishu.cn/wiki/$EXISTING_NODE exit 0 fi

去重规则

  • - 标题完全一样 → 视为已存在
  • 跳过归档,返回已存在文档的链接
  • 不要重复创建相同标题的文档

实现方式

  1. 1. 先提取文章标题(不需要完整内容)
  2. 在目标位置搜索同名文档
  3. 如果存在,直接返回链接并跳过
  4. 如果不存在,继续正常归档流程

1. 识别文章类型

javascript
if (url.includes(x.com) && url.includes(/status/)) {
// Twitter Article - 需要特殊处理
return twitter-article;
} else {
// 普通网页
return web-page;
}

2. 抓取内容

Twitter Article(长文章 + 多图片):
bash

使用修复版脚本(解决乱码和格式问题)


cd ~/.openclaw/workspace/skills/article-archiver
node scripts/html-to-markdown-fixed.js $URL $(cat config/twitter-cookies.txt) > /tmp/article.json

普通网页
bash

使用 web_fetch


web_fetch --url --extract-mode markdown

3. 分段写入(核心方法)

⚠️ 重要:正确的文件内容传递方式

在 OpenClaw 会话中,不能使用 bash 命令替换 $(cat file) 直接传给 feishu_doc,因为会被当成字面字符串。

正确方法

方法 1:使用 OpenClaw 的 read 工具(推荐)
javascript
// 1. 先用 read 工具读取文件
const content = await read({ path: /tmp/content.txt });

// 2. 然后传给 feishu_doc
await feishu_doc({
action: append,
doctoken: DOCTOKEN,
content: content
});

方法 2:分批读取和上传(适合大文件)
javascript
// 读取文件总行数
const totalLines = parseInt(await exec({
command

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 article-archiver-1776077476 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 article-archiver-1776077476 技能

通过命令行安装

skillhub install article-archiver-1776077476

下载

⬇ 下载 article-archiver v1.0.0(免费)

文件大小: 76.25 KB | 发布时间: 2026-4-15 11:44

v1.0.0 最新 2026-4-15 11:44
- Initial release of article-archiver.
- Automatically archives shared web and Twitter (X) articles to Feishu documents, triggered by links or specific user phrases.
- Supports long articles (600+ lines), multiple images (20+), and preserves formatting (bold, code blocks, lists).
- Ensures precise image placement and complete metadata with stylish citation block.
- Includes robust duplicate detection by article title, and notifies user on success.
- Fully automatic: archives as soon as a supported URL is detected—no extra confirmation needed.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部