xxsj-fs-ob · git:20261102.a11d179 · 2026-11-02 · sha256 0a5fbc3a58b18544

xxsj-fs-ob git:20261102.a11d179A

Immutable. This exact content never changes and is served at /api/v1/blob/0a5fbc3a58b18544.

---
name: xxsj-fs-ob
description: "通过飞书多维表格任务队列运行本地信息收集 Worker:从抖音、B站、微信公众号、X、YouTube 采集内容,转写并做 AI 分析,归档到 Obsidian。"
---

# xxsj-fs-ob

适用于 Claude Code 与 Codex。用于安装、检查、启动、停止和排错;正式处理由本地 Worker 完成。

## 适用场景

- 安装或检查 xxsj-fs-ob;
- 启动、停止、查看 Worker 状态;
- 单次处理队列或指定飞书 Record ID;
- 查看失败任务并决定是否重试;
- 排查飞书、ASR、模型分析或 Obsidian 写入问题;
- 清理缓存预演。

## 项目定位

- 项目根目录:包含 `package.json`、`src/`、`scripts/` 的完整源码目录。
- Skill 目录可以只是包装层;Worker 必须从项目根启动。
- 运行根优先级:`-ProjectRoot` → `XXSJ_FS_OB_PROJECT_ROOT` → 启动器所在目录(须是完整项目根)。
- Worker 启动后不依赖 Agent 会话保持在线。

## 平台与写法

`来源平台` 统一写下列标准值:

| 标准写法 | 能力 |
|---|---|
| 抖音 | 视频、图文 `/note/`;文章 `/article/` 未验证;不支持 v.douyin.com 短链 |
| B站 | BV/av、b23.tv 短链、视频转写 |
| 微信公众号 | `/s/` 文章、图片归档 |
| X | status 链接、t.co 短链、纯数字 ID;图片、视频 |
| YouTube | `watch?v=`、`youtu.be`;官方字幕优先,无字幕转音频 ASR |

小红书、其他:未实现,Worker 不会领取。来源平台留空按「抖音」处理。

## 处理流程

```text
飞书机器人收到链接
→ 多维表格新建 pending 记录
→ Worker 领取并锁定
→ 解析、下载(图片/音视频)
→ 官方字幕优先,否则 Qwen-ASR;失败回退 faster-whisper large-v3
→ 模型生成摘要、要点、分类
→ 生成 Markdown
→ 原子写入 Obsidian
→ 回写 处理状态=done 与 知识库路径
```

## 常用命令

```powershell
# 环境检查
.\scripts\doctor.ps1

# 单轮处理(默认最多 4 条,处理完退出)
.\scripts\run-once.ps1

# 指定飞书 Record ID(不是平台作品 ID)
.\scripts\run-once.ps1 -RecordIds "recxxxxxxxx"

# 后台长期 Worker / 单次指定记录
.\scripts\start-worker.ps1
.\scripts\start-worker.ps1 -RecordIds "recxxxxxxxx"

# 状态、监控、停止
.\scripts\status-worker.ps1
.\scripts\monitor-worker.ps1
.\scripts\stop-worker.ps1

# 缓存清理预演(默认只读;-Execute 才删除)
.\scripts\cleanup-dry-run.ps1
```

普通用户也可双击 `start-xxsj-fs-ob-worker.cmd`。重复双击会复用已运行的 Worker。

## 查失败任务(必须先向用户确认)

1. 读取多维表格中 `处理状态=failed` 的记录,汇报 `最近错误`。
2. 说明是否可自动重试:最多 3 次,退避 60/300/900 秒,计数在本地 `stage.json`。
3. **等待用户确认**要重试哪些。
4. 把确认的记录改为 `处理状态=pending`、清空 `最近错误`。
5. 运行 `run-once.ps1` 或等待 Worker 下一轮。

不要擅自重置失败记录。

## 配置

- 复制 `.env.example` 为 `.env`,填入自己的值。
- 必填:`FEISHU_BASE_TOKEN`、`FEISHU_TABLE_ID`、`LARK_PROFILE`、`OBSIDIAN_VAULT_PATH`、`LLM_API_KEY`(`SUMMARY_MODE=openai` 时)。
- 可选:`DASHSCOPE_API_KEY`(不填走本地 Whisper)。
- 代理:`XXSJ_HTTPS_PROXY` / `XXSJ_HTTP_PROXY`,留空表示不使用;X、YouTube 通常需要。
- 完整说明见 `README.md` 与 `.env.example` 注释。

## 安装位置

Skill 目录因客户端而异,不要写死:

- Codex:通常为 `%USERPROFILE%\.codex\skills\xxsj-fs-ob`
- Claude Code:通常为 `%USERPROFILE%\.claude\skills\xxsj-fs-ob`

只保留一份;安装后重启客户端并在 Skill 选择器中确认出现。

## 安全边界

- 不输出或提交 API Key、App Secret、Token、Cookie、Base 标识、本机绝对路径。
- 不打印签名媒体 URL。
- 不覆盖用户修改过的 Obsidian 笔记。
- 不把失败任务标为 done。
- 不同时启动多个 Worker。
- 不把未支持平台伪装成已支持。