e2edce2e29
- Rename kb-workflow to kb_workflow for Python package compatibility - Move bilibili_extractor.py and bilibili_metadata.py to kb_workflow/metadata/ - Create metadata/__init__.py with BilibiliExporter export Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
174 lines
5.6 KiB
Markdown
174 lines
5.6 KiB
Markdown
---
|
||
name: kb-workflow
|
||
description: 当收到"添加到知识库 + 链接" 或"保存到知识库 + 链接"时使用
|
||
---
|
||
|
||
# KB Workflow
|
||
|
||
## 什么时候使用
|
||
|
||
当用户发送包含以下模式的消息时,此技能自动触发:
|
||
|
||
| 触发词 | 行为 | 示例 |
|
||
|--------|------|------|
|
||
| `添加到知识库` + 链接 | 添加到知识库并处理 | "添加到知识库 https://www.bilibili.com/video/BVxxx" |
|
||
| `保存到知识库` + 链接 | 同上 | "保存到知识库 https://www.bilibili.com/video/BVxxx" |
|
||
|
||
## 环境变量
|
||
|
||
### 执行前必须检查
|
||
|
||
在执行 workflow 之前,必须检查环境变量是否已经设置。
|
||
|
||
**必须的环境变量**(缺失则报错退出):
|
||
|
||
配置方式:将变量写入 `~/.kb_env` 文件:
|
||
```bash
|
||
export AI_API_KEY="your-api-key"
|
||
export AI_PROVIDER="zhipu"
|
||
export AI_MODEL="glm-5"
|
||
export AI_BASE_URL="https://open.bigmodel.cn/api/coding/paas/v4"
|
||
```
|
||
|
||
**可选的环境变量**:
|
||
| 变量名 | 用途 | 示例 |
|
||
|--------|------|------|
|
||
| `BILIBILI_COOKIE` | 下载会员视频 | `SESSDATA=xxx; bili_jct=xxx` |
|
||
| `KB_GIT_USER` | Git提交用户名 | `Your Name` |
|
||
| `KB_GIT_EMAIL` | Git提交邮箱 | `your@email.com` |
|
||
| `KB_ARCHIVE_PATH` | 归档目录路径 | `~/work/zq/30.资源/AI分析` |
|
||
| `KB_GIT_ROOT` | Git仓库根目录 | `~/work/zq` |
|
||
| `HF_TOKEN` | HuggingFace Token(说话者分离) | `hf_xxx` |
|
||
|
||
### 检查命令
|
||
|
||
```bash
|
||
# 从 ~/.kb_env 加载环境变量
|
||
if [ -f ~/.kb_env ]; then
|
||
source ~/.kb_env
|
||
fi
|
||
|
||
# 检查必须的环境变量
|
||
if [ -z "$AI_API_KEY" ] || [ -z "$AI_PROVIDER" ] || [ -z "$AI_MODEL" ] || [ -z "$AI_BASE_URL" ]; then
|
||
echo "❌ 错误:必须的环境变量未设置"
|
||
echo "请配置 ~/.kb_env 文件"
|
||
exit 1
|
||
fi
|
||
|
||
echo "✅ 环境变量检查通过"
|
||
```
|
||
|
||
## Workflow 执行方式
|
||
|
||
### 一键处理(推荐)
|
||
|
||
使用管道 CLI 一键完成所有步骤:
|
||
|
||
```bash
|
||
python3 kb-workflow/kb_workflow.py process "https://www.bilibili.com/video/BVxxx"
|
||
```
|
||
|
||
**该命令自动执行:**
|
||
1. URL 解析 → 识别平台和内容 ID
|
||
2. 元数据提取 → 获取标题、作者等信息
|
||
3. 内容下载 → 字幕/视频/文章内容
|
||
4. 语音识别 → Whisper/FunASR(如需要)
|
||
5. 深度分析 → AI 生成分析报告
|
||
6. 归档 → 移动到归档目录
|
||
|
||
**命令参数:**
|
||
```bash
|
||
# 指定输出目录
|
||
python3 kb-workflow/kb_workflow.py process "https://..." -o /path/to/output
|
||
|
||
# 强制重新执行(忽略已完成状态)
|
||
python3 kb-workflow/kb_workflow.py process "https://..." --no-skip
|
||
```
|
||
|
||
## 支持的平台和内容类型
|
||
|
||
| 平台 | 内容类型 | URL 示例 |
|
||
|------|----------|----------|
|
||
| B站 | 视频 | `bilibili.com/video/BVxxx` |
|
||
| B站 | 专栏 | `bilibili.com/read/cvxxx` |
|
||
| 知乎 | 问答 | `zhihu.com/question/xxx` |
|
||
| 知乎 | 专栏 | `zhuanlan.zhihu.com/p/xxx` |
|
||
| 知乎 | 视频 | `zhihu.com/zvideo/xxx` |
|
||
|
||
## 处理流程
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ kb-workflow process │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ 1. Parse → LinkParser 解析 URL │
|
||
│ 2. Download → 平台适配器获取元数据和内容 │
|
||
│ 3. ASR → 语音识别(视频无字幕时) │
|
||
│ 4. Analyze → DeepAnalyzer 生成分析报告 │
|
||
│ 5. Archive → 归档到 KB_ARCHIVE_PATH │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## 目录结构
|
||
|
||
**工作目录(默认 ~/work/knowledge-base/):**
|
||
```
|
||
~/work/knowledge-base/
|
||
├── pending/ # 待处理链接
|
||
├── metadata/ # 元数据 JSON
|
||
├── content/ # 内容文件
|
||
│ └── downloads/ # 下载的视频/字幕
|
||
└── analyzed/ # 分析报告
|
||
```
|
||
|
||
**归档目录(默认 ~/work/zq/30.资源/AI分析/):**
|
||
```
|
||
~/work/zq/30.资源/AI分析/
|
||
└── YYYY-MM-DD/
|
||
└── {platform}_{id}.md # 深度分析报告
|
||
```
|
||
|
||
## ⚠️ 严格失败处理原则
|
||
|
||
> **深度分析步骤必须成功,否则整个流程失败**
|
||
|
||
1. **深度分析不可跳过**:AI 分析是必须成功执行的步骤
|
||
2. **失败即终止**:如果分析返回失败,必须立即停止并汇报
|
||
3. **禁止降级处理**:不能使用预设模板或简单摘要来"假装成功"
|
||
4. **每次执行都要使用 AI**:必须有真实的 AI API 调用记录
|
||
|
||
## 示例
|
||
|
||
```
|
||
用户: 添加到知识库 https://www.bilibili.com/video/BV1xx
|
||
|
||
Claude:
|
||
✅ 环境变量检查通过
|
||
|
||
◆ 处理中...
|
||
→ 解析 URL: bilibili 视频 BV1xx
|
||
→ 获取元数据...
|
||
→ 下载字幕...
|
||
→ 深度分析...
|
||
|
||
✅ 完成!
|
||
|
||
标题: 【教程】如何使用 Python 进行数据分析
|
||
处理阶段: 全部完成
|
||
最终文件: ~/work/zq/30.资源/AI分析/2026-03-15/bilibili_BV1xx.md
|
||
```
|
||
|
||
## 技术架构
|
||
|
||
```
|
||
kb-workflow/kb_workflow.py (CLI)
|
||
└── kb_pipeline/ (核心管道包)
|
||
├── pipeline.py — Pipeline 编排引擎
|
||
├── processors/ — 处理器实现
|
||
│ ├── parse.py — URL 解析
|
||
│ ├── download.py — 内容下载
|
||
│ ├── asr.py — 语音识别
|
||
│ └── analyze.py — 深度分析
|
||
└── schemas.py — 数据模型
|
||
```
|