OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  x-bookmark-archiver:将 X (Twitter) 的书签内容分类存档管理

x-bookmark-archiver:将 X (Twitter) 的书签内容分类存档管理

 
  authorization ·  2026-02-27 03:20:38 · 2 次点击  · 0 条评论  

X 书签归档器

使用 AI 生成的摘要,将你的 X(Twitter)书签归档到分类的 Markdown 文件中。

概述

本技能使用 bird CLI 获取你的 X 书签,根据 URL 模式进行分类,利用 OpenAI 生成 AI 摘要,并将它们保存为组织有序的 Markdown 文件。

先决条件

  1. bird CLI - 从 steipete/bird 安装。
  2. OpenAI API 密钥(可选) - 设置 OPENAI_API_KEY 环境变量以启用 AI 摘要生成。
  3. Node.js 18+

安装

# 确保 bird CLI 已安装并完成身份验证
bird --version

# 设置 OpenAI API 密钥(可选,用于 AI 摘要)
export OPENAI_API_KEY="sk-..."

命令

run - 完整流程

获取并处理新书签:

node skills/x-bookmark-archiver/scripts/run.cjs

run --force - 仅处理现有书签

跳过获取步骤,仅处理待处理的书签:

node skills/x-bookmark-archiver/scripts/run.cjs --force

fetch - 仅下载书签

node skills/x-bookmark-archiver/scripts/fetch.cjs

process - 仅归档待处理书签

node skills/x-bookmark-archiver/scripts/process.cjs

分类映射

书签根据 URL 模式自动分类:

分类 域名
工具 github.com, gitlab.com, github.io, huggingface.co, replicate.com, vercel.com, npmjs.com, pypi.org
文章 medium.com, substack.com, dev.to, hashnode.dev, x.com/i/article, blog.*, towardsdatascience.com
视频 youtube.com, youtu.be, vimeo.com, twitch.tv
研究 arxiv.org, paperswithcode.com, semanticscholar.org, researchgate.net, dl.acm.org, ieee.org
新闻 techcrunch.com, theverge.com, hn.algolia.com, news.ycombinator.com, wired.com, arstechnica.com
书签 未匹配 URL 的默认分类

输出位置

Markdown 文件创建在 OpenClaw 工作空间 的以下路径:

旧版安装(旧名称):

~/clawd/X-knowledge/

新版安装:

~/.openclaw/workspace/X-knowledge/

使用配置文件时(OPENCLAW_PROFILE=prod):

~/.openclaw/workspace-prod/X-knowledge/

使用环境变量覆盖:

export OPENCLAW_WORKSPACE=/custom/path
node skills/x-bookmark-archiver/scripts/run.cjs
# 创建路径:/custom/path/X-knowledge/

输出结构

~/.openclaw/workspace/X-knowledge/
├── tools/
│   ├── awesome-ai-project.md
│   └── useful-cli-tool.md
├── articles/
│   ├── how-to-build-x.md
│   └── ml-best-practices.md
├── videos/
│   └── conference-talk.md
├── research/
│   └── attention-is-all-you-need.md
├── news/
│   └── latest-tech-announcement.md
└── bookmarks/
    └── misc-link.md

Markdown 模板

每个归档的书签都会生成一个包含 Frontmatter 的 Markdown 文件:

---
title: "Awesome AI Project"
type: tool
date_archived: 2026-01-31
source_tweet: https://x.com/i/web/status/1234567890
link: https://github.com/user/repo
**标签:** ["ai", "machine-learning", "github"]
---

该项目实现了一种新颖的...(AI 生成的摘要)

状态管理

状态文件用于跟踪处理进度:

/root/clawd/.state/
├── x-bookmark-pending.json     # 等待处理的书签
└── x-bookmark-processed.json   # 已归档书签的 ID

环境变量

变量 是否必需 描述
OPENAI_API_KEY 用于 AI 生成摘要的 API 密钥

工作流程

  1. 获取:从 X 下载最新的 50 个书签。
  2. 过滤:移除已处理的书签。
  3. 展开:解析 t.co 短链接。
  4. 分类:根据 URL 域名分配分类。
  5. 丰富信息:生成标题、摘要、标签(使用 AI 或备用方案)。
  6. 写入:保存为 Markdown 文件到 X-knowledge/{category}/
  7. 跟踪:更新已处理的 ID,清空待处理列表。

自定义

添加分类

编辑 scripts/lib/categorize.cjs

const CATEGORIES = {
  tools: ['github.com', '...'],
  your_category: ['example.com', '...'],
  // ...
};

更改输出目录

编辑 scripts/process.cjs

const KNOWLEDGE_DIR = 'your-directory-name';

使用不同的 AI 提供商

修改 scripts/process.cjs 中的 generateMetadata() 函数以使用你偏好的 API。

测试

运行测试套件:

# 运行所有测试
cd skills/x-bookmark-archiver/tests
node test-all.cjs

# 运行单独的测试套件
node lib/categorize.test.cjs
node lib/state.test.cjs
node integration.test.cjs

测试覆盖

  • 单元测试categorize.js(21 个测试)- URL 模式匹配。
  • 单元测试state.js(9 个测试)- JSON 读写操作。
  • 集成测试(12 个测试)- 使用模拟数据的完整流程。

手动测试

在没有 bird CLI 的情况下,可以使用模拟数据进行测试:

# 创建模拟待处理数据
cat > /tmp/test-pending.json << 'EOF'
[
  {
    "id": "test123",
    "url": "https://github.com/test/repo",
    "text": "Test bookmark"
  }
]
EOF

# 复制到状态目录并处理
mkdir -p /root/clawd/.state
cp /tmp/test-pending.json /root/clawd/.state/x-bookmark-pending.json
node skills/x-bookmark-archiver/scripts/process.cjs

故障排除

问题 解决方案
bird: command not found 从 GitHub releases 安装 bird CLI
没有获取到书签 确保已使用 bird 登录 X
AI 摘要未生成 检查 OPENAI_API_KEY 是否已设置
t.co 链接未展开 可能是网络/超时问题;将使用原始 URL

文件结构

skills/x-bookmark-archiver/
├── SKILL.md
├── scripts/
│   ├── fetch.cjs          # 从 X 下载书签 (CommonJS)
│   ├── process.cjs        # 生成 Markdown 文件 (CommonJS)
│   ├── run.cjs            # 编排 fetch → process 流程 (CommonJS)
│   └── lib/
│       ├── categorize.cjs # URL → 分类映射 (CommonJS)
│       └── state.cjs      # JSON 状态管理 (CommonJS)
└── tests/
    ├── test-all.cjs
    ├── lib/
    │   ├── categorize.test.cjs
    │   └── state.test.cjs
    ├── integration.test.cjs
    └── fixtures/
        └── sample-bookmarks.json

许可证

MIT

2 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor