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