This repository has been archived on 2026-08-07. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
kb-skills/.planning/phases/12-srt-simplifier/12-02-PLAN.md
T

9.7 KiB
Raw Blame History

phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
phase plan type wave depends_on files_modified autonomous requirements must_haves
12-srt-simplifier 02 execute 2
12-01
kb_workflow/pipeline/pipeline.py
kb_workflow/pipeline/schemas.py
kb_workflow/cli.py
kb_workflow/deep_analyzer/__init__.py
tests/test_bilibili_pipeline.py
false
OUT-03
SCOPE-01
SCOPE-02
truths artifacts key_links
B 站视频处理流程使用 SRTProcessor 替代 AnalyzeProcessor
知乎等其他平台处理器保持不变
DeepAnalyzer 不再被 B 站视频处理调用
kb-workflow process 命令正常工作
path provides contains
kb_workflow/pipeline/pipeline.py Pipeline 编排 bilibili pipeline steps
path provides contains
kb_workflow/cli.py CLI 入口 process_command
from to via pattern
kb_workflow/cli.py kb_workflow/pipeline/pipeline.py Pipeline class Pipeline
from to via pattern
kb_workflow/pipeline/pipeline.py kb_workflow/pipeline/processors/srt.py platform check SRTProcessor
将 SRTProcessor 集成到 Pipeline,修改 B 站处理流程使用简化处理,移除 DeepAnalyzer 调用,同时保持知乎等其他平台处理不变。

Purpose: 实现需求 SCOPE-01(移除深度分析)和 SCOPE-02(仅针对 B 站),确保 B 站视频生成简化的 Markdown 文档。 Output: 修改后的 Pipeline 和 CLI,集成测试通过。

<execution_context> @/home/starmen1265/.claude/get-shit-done/workflows/execute-plan.md @/home/starmen1265/.claude/get-shit-done/templates/summary.md </execution_context>

@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.md

现有 Pipeline 流程(from cli.py)

processors = [
    ParseProcessor(),
    DownloadProcessor(),
    ASRProcessor(),
    AnalyzeProcessor(),  # B 站视频:深度分析(需移除)
    ArchiveProcessor(),
]

config = PipelineConfig(
    steps=["parse", "download", "asr", "analyze", "archive"],
)

Pipeline 条件逻辑(from pipeline.py)

# 现有平台相关逻辑示例
text_content_types = {"article", "answer", "zhuanlan", "question"}
if step_name == "asr" and parsed.content_type in text_content_types:
    logger.info(f"Skipping ASR for text content type: {parsed.content_type}")
    continue

B 站 vs 知乎处理差异

平台 内容类型 ASR 分析
bilibili video 需要 简化(SRTProcessor)
bilibili article 跳过 AnalyzeProcessor(保留)
zhihu answer 跳过 AnalyzeProcessor(保留)
zhihu zhuanlan 跳过 AnalyzeProcessor(保留)

需要修改的文件

  1. pipeline.py: 根据平台类型选择处理器
  2. cli.py: 更新处理器列表
  3. schemas.py: 添加必要的 Input/Output Schema
Task 1: 修改 Pipeline 支持平台特定处理流程 kb_workflow/pipeline/pipeline.py, kb_workflow/pipeline/schemas.py 修改 Pipeline 支持平台特定处理流程:
1. 更新 `kb_workflow/pipeline/schemas.py`:
   - 确认 `SRTInput` 和 `SRTOutput` 已在 12-01 中添加
   - 添加 `SRTInput` 到 imports

2. 修改 `kb_workflow/pipeline/pipeline.py` 的 `run` 方法:
   - 在 step 处理循环中,检测 B 站视频 + analyze 步骤的情况
   - B 站视频(platform="bilibili", content_type="video")时:
     - 跳过 "analyze" 步骤
     - 执行 "srt" 步骤(使用 SRTProcessor)
   - 其他情况保持原有逻辑

3. 修改 `run` 方法中的步骤输入创建逻辑:
   - 添加 `elif step_name == "srt":` 分支
   - SRTInput 需要: srt_file(从 ASR 结果获取), metadata_file, output_file

4. 修改 `_populate_skipped_step_results` 方法:
   - 添加 "srt" 步骤的现有文件扫描逻辑

关键代码位置: pipeline.py 约 170-250 行
python -c "from kb_workflow.pipeline.pipeline import Pipeline; print('Pipeline imports OK') - Pipeline 能根据平台类型选择处理器 - B 站视频使用 SRTProcessor - 其他平台保持 AnalyzeProcessor Task 2: 更新 CLI 处理器注册 kb_workflow/cli.py 更新 CLI 处理器注册:
1. 修改 `kb_workflow/cli.py` 的 `process_command` 函数:
   - 导入 SRTProcessor: `from .pipeline.processors import SRTProcessor`
   - 将 SRTProcessor 添加到 processors 列表
   - 更新 PipelineConfig.steps: `["parse", "download", "asr", "srt", "analyze", "archive"]`
     (Pipeline 会根据平台条件跳过不需要的步骤)

2. 处理器列表变为:
   ```python
   processors = [
       ParseProcessor(),
       DownloadProcessor(),
       ASRProcessor(),
       SRTProcessor(),    # 新增:B 站视频使用
       AnalyzeProcessor(), # 保留:知乎/文章使用
       ArchiveProcessor(),
   ]
   ```

注意:Pipeline 步骤顺序保持不变,SRTProcessor 和 AnalyzeProcessor 都注册,
但 Pipeline 会根据平台类型选择执行哪一个。
python -c "from kb_workflow.cli import process_command; print('CLI imports OK') - CLI 正确导入 SRTProcessor - 处理器列表包含所有处理器 - process_command 函数正常工作 Task 3: 添加 B 站视频流程的端到端测试 tests/test_bilibili_pipeline.py 添加 B 站视频流程的端到端测试:
1. 创建 `tests/test_bilibili_pipeline.py`:
   - 使用 mock 模拟 BilibiliAdapter 的 fetch_metadata 和 download_video
   - 使用 mock 模拟 ASRProcessor 的输出(返回 SRT 文件路径)
   - 测试 B 站视频处理流程:
     - 验证 SRTProcessor 被调用
     - 验证 AnalyzeProcessor 被跳过
     - 验证生成的 Markdown 文件格式正确

2. 测试用例:
   - `test_bilibili_video_uses_srt_processor`: 验证 B 站视频使用 SRTProcessor
   - `test_bilibili_article_uses_analyze_processor`: 验证 B 站文章使用 AnalyzeProcessor
   - `test_zhihu_answer_uses_analyze_processor`: 验证知乎回答使用 AnalyzeProcessor

3. 使用 pytest fixtures 创建测试数据:
   - 模拟的 SRT 文件内容
   - 模拟的 metadata.json 内容
pytest tests/test_bilibili_pipeline.py -v - B 站视频流程测试通过 - 平台路由逻辑正确 - 生成的 Markdown 格式正确 Task 4: 更新 DeepAnalyzer 添加弃用警告 kb_workflow/deep_analyzer/__init__.py 更新 DeepAnalyzer 添加弃用警告(但保留功能):
1. 修改 `kb_workflow/deep_analyzer/__init__.py`:
   - 在 `DeepAnalyzer.__init__` 中添加日志警告:
     ```python
     import logging
     logger = logging.getLogger(__name__)
     logger.warning(
         "DeepAnalyzer is deprecated for Bilibili video processing. "
         "Use SRTProcessor instead."
     )
     ```
   - 功能保持不变,以便知乎等其他平台继续使用

2. 不删除任何代码,只是添加警告

注意:DeepAnalyzer 仍被 AnalyzeProcessor 使用,知乎处理需要它。
此任务只是添加警告,提醒开发者 B 站视频应使用 SRTProcessor。
python -c "from kb_workflow.deep_analyzer import DeepAnalyzer; print('DeepAnalyzer imports OK') - DeepAnalyzer 仍可正常导入和使用 - 初始化时输出弃用警告 - 知乎处理流程不受影响 完整的 B 站视频简化处理流程: - SRTProcessor 处理器(解析、分段、纠错、Markdown 生成) - Pipeline 平台路由逻辑(B 站视频用 SRT,其他用 Analyze) - CLI 集成和端到端测试 1. 运行单元测试: `pytest tests/test_srt_processor.py tests/test_bilibili_pipeline.py -v` 2. 测试 B 站视频处理(需要真实 SRT 文件或 mock): ```bash # 使用测试模式运行 python -m kb_workflow process "https://www.bilibili.com/video/BV1test" --no-skip ``` 3. 验证输出文件格式: - 检查生成的 .md 文件包含 YAML frontmatter - 检查时间戳已移除 - 检查文本已分段 4. 验证知乎处理不受影响: ```bash python -m kb_workflow process "https://zhuanlan.zhihu.com/p/123456" --no-skip ``` Type "approved" or describe issues found - 所有单元测试通过 - B 站视频使用 SRTProcessor - 知乎处理使用 AnalyzeProcessor - CLI 命令正常工作 - DeepAnalyzer 弃用警告正常输出

<success_criteria>

  1. 运行 kb-workflow process <bilibili-url> 生成 Markdown 文件(非深度分析报告)
  2. Markdown 文件包含视频元数据(标题、作者、时长)
  3. 元数据处理功能保持不变(BilibiliAdapter 正常工作)
  4. 视频标签正常生成
  5. DeepAnalyzer 对 B 站视频输出弃用警告
  6. 知乎等其他平台处理器不受影响
  7. 所有测试通过 </success_criteria>
After completion, create `.planning/phases/12-srt-simplifier/12-02-SUMMARY.md`