bird-bookmark-folderslisted
Install: claude install-skill codingSamss/all-my-ai-needs
# X Bookmark Folders Skill (Write-Capable)
管理 X/Twitter 的书签收藏夹(bookmark collections)。与只读的 `bird-twitter` 分开,因为本 skill 包含**写操作**。
Bird CLI 没有收藏夹管理命令(只有 `bookmarks --folder-id` 读取),所以这里直接调 X 的 GraphQL 接口。
## 授权要求
**每一次写操作都必须先获得用户对该次操作的明确同意。** 不要因为用户批准过一次移动就自行扩展到其他条目。
- 读操作(`list`、`items`)随时可执行,无需确认
- 写操作(`add`、`remove`、`move`、`create`)必须带 `--yes`,且执行前要向用户说明将改动哪些条目
- 批量操作前先列出完整清单让用户确认,执行时逐条汇报结果
- 脚本内置 1.5 秒写操作节流;批量超过 20 条时进一步放慢或分批
## 前置条件
1. Chrome 中已登录 x.com(脚本从 Chrome cookie 数据库读取 `auth_token` / `ct0`)
2. 已安装 `bird-twitter` skill —— 本脚本复用它的 cookie 提取与 bearer token 常量
3. 网络走本地代理:`HTTP_PROXY=http://127.0.0.1:7897`、`HTTPS_PROXY=http://127.0.0.1:7897`
## 命令
```bash
SKILLS_HOME="$HOME/.codex/skills"
S="$SKILLS_HOME/bird-bookmark-folders/scripts/bookmark_folders.py"
export HTTP_PROXY=http://127.0.0.1:7897 HTTPS_PROXY=http://127.0.0.1:7897
```
### 列出所有收藏夹(只读)
```bash
python3 "$S" list
```
输出 `<folder_id> <名称>`。后续命令的 folder 参数既接受 id 也接受**精确名称**。
### 列出某个夹的内容(只读)
```bash
python3 "$S" items 方法论 -n 100
```
配合 bird 读取推文详情:
```bash
bird --cookie-source chrome --timeout 20000 bookmarks --folder-id <id> --all --json
```
### 移动书签(最常用)
```bash
python3 "$S" --yes move <tweet_id> <源夹> <目标夹>
```
`move` = 先 `add` 到目标夹,确认返回 `Done` 后再从源夹 `remove`。add 失败时不会执行 remove。
### 单步操作
```bash
python3 "$S" --yes add <tweet_id> <目标夹>
python3 "$S" --yes remove <tweet_id> <源夹>
python3 "$S" --yes create "投资"
```
## 关键语义(容易搞错)
- **`bookmarkTweetToFolder` 是"添加",不是"移动"。** 单独调用后推文会同时存在于新旧两个夹