fa85add7c4
- 严禁跳过,必须等待完成 - 定时汇报进度(每2-3分钟) - 超时时间30分钟
6.3 KiB
6.3 KiB
name, description
| name | description |
|---|---|
| kb-workflow | 当收到"添加到知识库 + 链接" 或"保存到知识库 + 链接"时使用 |
KB Workflow
什么时候使用
当用户发送包含以下模式的消息时,此技能自动触发:
| 触发词 | 行为 | 示例 |
|---|---|---|
添加到知识库 + 链接 |
添加到知识库并处理 | "添加到知识库 https://www.bilibili.com/video/BVxxx" |
保存到知识库 + 链接 |
同上 | "保存到知识库 https://www.bilibili.com/video/BVxxx" |
环境变量
检查以下环境变量 KB_BASE_PATH
环境变量默认值
export KB_BASE_PATH="~/work/knowledge-base"
Workflow 执行方式
主代理直接执行以下步骤,无需启动 kb-workflow 子代理:
- 主代理执行
kb_workflow.py --check查重 - 主代理启动子代理调用 kb-link-parser
- 主代理启动子代理调用 kb-平台-metadata
- 主代理启动子代理调用 kb-平台-content
- 主代理启动子代理调用 kb-ocr-processor(如需要)
- 主代理启动子代理调用 kb-deep-analyzer
- 主代理执行
kb_workflow.py --archive-file归档
Workflow 步骤
当触发后,按照以下步骤执行:
步骤 1: 查重
运行查重命令:
python3 kb_workflow.py --check --url "[URL]"
- 如果存在:汇报用户并询问是更新还是跳过
- 如果不存在:继续步骤 2
步骤 2: 链接解析
- 获取目录路径:
python3 kb_workflow.py --pending
- 启动子代理调用 kb-link-parser:
python3 /path/to/link-parser.py --url "[URL]"
- 解析输出 JSON,提取 filename 和 platform
步骤 3: 元数据提取
- 获取元数据目录路径:
python3 kb_workflow.py --metadata
# 返回: {"path": "/home/admin/work/knowledge-base/metadata"}
-
构建输出文件路径:
${metadata_dir}/${platform}_${id}.meta.json -
启动子代理调用对应平台的 metadata 技能(传入
--output):
# Bilibili
python3 /path/to/bilibili_metadata.py --id "[ID]" --type video --output "${metadata_dir}/bilibili_[ID].meta.json"
# Zhihu
python3 /path/to/zhihu_metadata.py --id "[ID]" --type question --output "${metadata_dir}/zhihu_[ID].meta.json"
- 解析输出 JSON,提取 filename
步骤 4: 内容下载
- 获取目录路径:
python3 kb_workflow.py --content_downloads
python3 kb_workflow.py --content_subtitles
- 启动子代理调用对应平台的 content 技能:
# Bilibili 视频
python3 /path/to/bilibili_content.py --id "[ID]" --type video --output [content_dir]
# Bilibili 字幕
python3 /path/to/bilibili_content.py --id "[ID]" --type subtitle --output [subtitles_dir]
- 解析输出 JSON,提取 video_filename 和 subtitle_filename(如有)
步骤 5: OCR 处理(可选,耗时步骤)
⚠️ 重要:此步骤为耗时步骤,视频按帧截取和 OCR 识别需要较长时间。
- 严禁跳过:即使等待时间较长,也必须等待 OCR 完成
- 定时汇报:每2-3分钟向用户汇报进度(处理帧数/预计剩余时间)
- 超时时间:30分钟
- 耐心等待:不要中途启动其他步骤,必须串行执行
如果步骤4没有获取到字幕,需要从视频截帧 OCR:
- 获取目录路径:
python3 kb_workflow.py --content
- 启动子代理调用 kb-ocr-processor(传入完整路径):
# 必须传入 --output 完整路径
python3 /path/to/ocr_processor.py --video [video_path] --output [content_dir]/ocr.json --merge
-
等待 OCR 完成(定时汇报进度)
-
解析输出 JSON,生成 content 文件供步骤6使用
步骤 6: 深度分析
- 获取目录路径:
python3 kb_workflow.py --analyzed
-
准备 content JSON 文件(包含 subtitle/description)
-
启动子代理调用 kb-deep-analyzer:
python3 /path/to/deep_analyzer.py --metadata [meta_path] --content [content_path] --output [analyzed_dir]/[filename].md
- 解析输出 JSON,获取分析结果
步骤 7: 归档
运行归档命令:
python3 kb_workflow.py --archive-file "[分析报告文件路径]"
步骤 8: 汇报完成
向用户汇报:
- 视频标题
- 处理阶段完成情况
- 最终文件路径
- Git commit 信息
子技能清单
| 步骤 | 子技能 | 命令示例 | 输出 |
|---|---|---|---|
| 2 | kb-link-parser | --url "BVxxx" |
{p}_{id}.link.json |
| 3 | kb-bilibili-metadata | --id "BVxxx" --type video |
{p}_{id}.meta.json |
| 3 | kb-zhihu-metadata | --id "xxx" --type question |
{p}_{id}.meta.json |
| 4 | kb-bilibili-content | --id "BVxxx" --type video |
{p}_{id}.{ext} |
| 5 | kb-ocr-processor | --video xxx.flv --output ocr.json |
ocr.json, ocr.txt |
| 6 | kb-deep-analyzer | --metadata x.meta.json --content x.json --output x.md |
{p}_{id}.md |
目录结构
~/work/knowledge-base/
├── archive/
│ └── YYYY-MM-DD/
├── pending/
│ └── {platform}_{id}.link.json
├── metadata/
│ └── {platform}_{id}.meta.json
├── content/
│ ├── downloads/
│ │ └── {platform}_{id}.mp4
│ ├── subtitles/
│ │ └── {platform}_{id}.srt
│ └── {platform}_{id}.txt
└── analyzed/
└── {platform}_{id}.md
辅助命令
# ------------------- 查重与归档 -------------------
# 查重
python3 kb_workflow.py --check --url "[URL]"
# 归档分析报告
python3 kb_workflow.py --archive-file "[分析报告路径]"
# ------------------- 目录路径查询 -------------------
# 获取知识库根目录(默认 ~/work/knowledge-base)
python3 kb_workflow.py --base-path "~/custom/path"
# 获取待处理目录(pending)
python3 kb_workflow.py --pending
# 获取元数据目录
python3 kb_workflow.py --metadata
# 获取内容目录
python3 kb_workflow.py --content
# 获取内容下载目录
python3 kb_workflow.py --content_downloads
# 获取字幕目录
python3 kb_workflow.py --content_subtitles
# 获取深度分析目录
python3 kb_workflow.py --analyzed
# 获取归档目录
python3 kb_workflow.py --archive
# 获取订阅信息目录
python3 kb_workflow.py --archive_subscriptions
# ------------------- 工具函数 -------------------
# 从文件名提取平台名称
python3 kb_workflow.py --extract_platform "bilibili_BVxxx.mp4"