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/02-platform-skills/02-CONTEXT.md
T

103 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 2: Platform Skills - Context
**Gathered:** 2026-03-13
**Status:** Ready for planning
<domain>
## Phase Boundary
集成B站和知乎平台的内容获取能力,形成从链接到原始内容的完整流程。包括:
- 链接解析(平台识别、内容类型判断、ID提取)
- 元数据提取(标题、作者、时间等结构化信息)
- 内容下载(视频/专栏/问答的正文内容)
此阶段不涉及 ASR/OCR 处理(Phase 3),也不涉及深度分析(Phase 4)。
</domain>
<decisions>
## Implementation Decisions
### 链接解析策略
- **解析器结构**: 统一 LinkParser 类 — 一个模块处理所有平台,通过正则/模式匹配区分
- **支持 URL 类型**:
- B站视频: bilibili.com/video/BVxxx, b23.tv/xxx(短链解析)
- B站专栏: bilibili.com/read/cvxxx
- 知乎问答: zhihu.com/question/xxx/answer/xxx
- 知乎专栏: zhuanlan.zhihu.com/p/xxx
- **ID 提取**: BV号 + AV号(同时支持,自动转换)
- **短链支持**: 支持 b23.tv 短链解析,获取真实 URL
- **错误处理**: 无法识别的 URL 返回 None + 错误信息(不抛异常)
### 元数据输出格式
- **B站视频字段**: 标题、作者、时长、发布时间、描述、封面、链接、ID(BV号)
- **知乎字段**: 标题、作者、发布时间、内容摘要、链接、ID
- **文件命名**: 平台_ID.json(如 bilibili_BV1xx.json, zhihu_12345.json)
- **存储位置**: 内容目录下(与内容文件同目录)
### 内容输出格式
- **Markdown 结构**: YAML Frontmatter + 正文内容
- **Frontmatter 字段**: title, author, source_url, platform, content_type, fetched_at
- **图片处理**: 保留原始链接(不下载到本地)
- **格式保留**: 基础格式(标题、段落、列表、代码块)
- **不保留**: 表格、数学公式、LaTeX(Phase 2 不处理)
### 幂等检查机制
- **检查时机**: 链接解析后 — 解析成功后立即检查目录是否存在
- **判断依据**: 检查输出文件是否存在(元数据 JSON + 内容 Markdown)
- **重复处理**: 询问用户 — 发现已存在文件时询问是否重新下载
### Claude's Discretion
- LinkParser 的正则表达式具体实现
- 文件名清理规则(特殊字符处理)
- 网络请求超时时间和重试次数(复用 Phase 1 的 retry 机制)
</decisions>
<code_context>
## Existing Code Insights
### Reusable Assets
- `kb_workflow.py`: 子技能映射 (METADATA_AGENTS, CONTENT_AGENTS)、内容类型判断函数 — 可直接复用
- `kb-bilibili-metadata/bilibili_extractor.py`: B站 API 调用、元数据提取 — 已有完整实现
- `kb-bilibili-metadata/bilibili_metadata.py`: CLI 入口 — 可作为集成参考
- `kb-zhihu-metadata/zhihu_extractor.py`: 知乎 API 调用 — 已有完整实现
- `kb_pipeline/schemas.py`: StepInput, StepOutput, WorkflowState — Phase 1 已定义
### Established Patterns
- 子技能调用模式: `METADATA_AGENTS[platform]` → 执行对应 CLI
- 内容类型分类: VIDEO_CONTENT_TYPES, TEXT_CONTENT_TYPES
- 错误处理: 使用 Phase 1 的 KBError 体系
- 配置管理: 使用 Phase 1 的 KBSettings
### Integration Points
- LinkParser 输出 → WorkflowState.content_id
- 元数据提取 → 使用 StepInput/StepOutput 模式
- 内容下载 → 更新 WorkflowState 步骤状态
- 错误 → 使用 Phase 1 的 retry_on_network_error 装饰器
</code_context>
<specifics>
## Specific Ideas
- 短链解析: HTTP HEAD 请求获取 Location 头,或使用 requests 库的 allow_redirects
- 幂等检查提示: "内容已存在: {path}。是否重新下载?[y/N]"
- 文件命名示例: `bilibili_BV1GJ411x7Qw_metadata.json`, `bilibili_BV1GJ411x7Qw_content.md`
</specifics>
<deferred>
## Deferred Ideas
- B站/知乎用户主页跟踪 — 未来功能
- 批量链接处理 — 当前只处理单个链接
- 进度显示 — v2 考虑
</deferred>
---
*Phase: 02-platform-skills*
*Context gathered: 2026-03-13*