Content Research Pipeline and local Creator Intelligence System
本地运行的内容研究流水线。支持输入 B站、YouTube、抖音、小红书公开视频链接、本地视频文件、B站 UP 主页、YouTube 频道主页、抖音创作者主页,或自然语言研究问题,自动完成字幕获取、Whisper 转录、内容分析、批量画像、知识库检索和 V4 研究报告。
输入公开视频链接
↓
检查是否存在官方字幕
↓
有字幕:只下载字幕 → LLM/本地分析 → 导出
↓
无字幕:下载视频 → FFmpeg 提取音频 → Whisper 识别 → LLM/本地分析 → 导出
抖音已接入单视频和创作者主页批量流水线,小红书已接入单视频流水线:
python main.py "抖音公开视频分享链接" --v3 --build-kb
python main.py "https://www.douyin.com/user/<sec_uid>" --up --limit 10
python main.py "小红书视频笔记分享链接" --v3 --build-kb处理结果会缓存到 cache/videos/DY_<视频ID> 或 cache/videos/XHS_<笔记ID>,重复分析不会重新下载或重复执行 Whisper。
平台限制:
- 支持公开的抖音单视频、抖音创作者主页和小红书视频笔记。
- 小红书纯图文笔记没有音视频流,不能进入 Whisper。
- B站、YouTube 和抖音首次使用时,均可在本地网页的“平台授权状态”中点击登录按钮;程序会打开独立浏览器窗口,并在登录成功后自动保存本机会话。
- B站和 YouTube Cookie 保存在
cache/platform_auth/,抖音 Cookie 保存在cache/douyin/cookies.json;这些目录不会提交到 Git。 - 抖音下载由
integrations/douyin-downloader隔离适配器完成,媒体获取后继续复用本项目的 Whisper、分析和知识库流程。 - 小红书创作者主页批量抓取暂未接入;Discovery 候选人需要保存一个公开视频链接。
- 小红书登录可见内容可配置
XIAOHONGSHU_COOKIES_FROM_BROWSER或XIAOHONGSHU_COOKIE_FILE。 .env中的 Cookie 文件和浏览器读取配置仍可作为网页登录失败时的兼容回退。
支持 B站 UP 主页、YouTube 频道主页和抖音创作者主页批量分析:
python main.py "https://space.bilibili.com/123456/video" --up --limit 20也可以直接输入 UP 的 mid:
python main.py 123456 --up --limit 20YouTube 频道可以直接使用 @频道名 主页:
python main.py "https://www.youtube.com/@veritasium" --up --limit 10输出:
output/up_<mid>/
batch_manifest.json
up_profile.json
up_profile.md
YouTube 频道输出到 output/channel_youtube_<频道缓存键>/,每条视频仍使用统一的 output/YT_<视频ID>/ 目录。
抖音创作者输出到 output/creator_douyin_<主页缓存键>/,每条视频使用统一的 output/DY_<视频ID>/ 目录。
单个视频仍会分别输出到:
output/<视频ID>/
除按 UP 学习外,也可以把一个或多个 B站视频作为同一内容作品学习。 支持综艺、电影、动漫、纪录片和其他内容,原视频作者信息仍会保留。
Web UI 中选择“内容作品”,填写作品名称和类型,并在输入框中每行粘贴 一个视频链接或 BV 号。多期节目或多集动漫会汇总为同一份作品画像。
命令行也可分析单个作品视频:
python main.py "https://www.bilibili.com/video/BVxxxx" --content-work --content-category anime --subject-name "作品名" --build-kb输出:
output/content_bilibili_<作品键>/
content_manifest.json
content_profile.json
content_profile.md
内容分类规则保存在 config/ContentTypeRule.json,后续增加新内容类型或
关键词不需要修改分析管线。知识库会在保留视频和原作者信息的同时记录
作品名称与内容类型。
开启评论、封面、OCR、标题统计增强分析:
python main.py "https://www.bilibili.com/video/BVxxxx" --v3批量 UP 分析时开启 V3:
python main.py "https://space.bilibili.com/123456/video" --up --limit 20 --v3每个视频额外输出:
output/<视频ID>/
v3.json
v3.md
cover.jpg / cover.png
V3 包含:
- 评论区抓取与关键词/情绪分析
- 封面下载与基础视觉分析
- 封面 OCR,优先使用
rapidocr_onnxruntime,其次尝试pytesseract - 标题统计
- 本地 RAG 知识库构建与检索
构建知识库:
python main.py --build-kb分析后顺便构建知识库:
python main.py "https://space.bilibili.com/123456/video" --up --limit 20 --v3 --build-kb检索知识库:
python main.py --search "这个UP为什么播放高" --top-k 5知识库位置:
cache/knowledge_base/index.json
V4 支持输入自然语言研究问题,自动读取本地知识库并生成 Markdown 报告。
python main.py --report "分析这个UP为什么播放高" --top-k 8先重建知识库再生成报告:
python main.py --report "分析这个UP为什么播放高" --top-k 8 --build-kb也可以直接运行 V4 模块:
python -m rag.report "分析这个UP为什么播放高" --top-k 8输出:
output/v4_reports/<时间>_<问题>/
report.md
report.json
报告优先调用配置好的 LLM;如果没有 LLM_API_KEY,会使用本地规则基于知识库证据生成兜底报告。
高级栈在保留原有回退路径的基础上增加以下能力:
yt-dlp:抓取视频、字幕和 UP 视频列表。faster-whisper:没有平台字幕时执行本地语音转录。spaCy:中文分句、实体和文本统计,写入 V3 分析。Sentence Transformers + ChromaDB:构建持久化语义向量索引,并与原 TF-IDF 结果做混合检索。PySceneDetect + OpenCV:检测镜头切点、平均镜头时长和视觉节奏,写入 V3 分析。LangGraph:按词法索引、向量索引、Creator KB、模板和项目报告的顺序编排完整知识库更新。
构建语义向量库:
python main.py --build-vector-kb只使用语义向量检索:
python main.py --semantic-search "如何用镜头变化提升解释节奏" --top-k 8普通 --search 默认使用混合检索;向量库尚未构建或模型不可用时会自动回退 TF-IDF:
python main.py --search "人物动机与世界观如何衔接" --top-k 8运行 LangGraph 高级知识库更新:
python main.py --advanced-kb镜头和 spaCy 分析随 --v3 自动执行。没有本地视频文件时镜头分析会标记为跳过,不影响其余结果。
构建创作者能力知识库、可调用模板库、三级规则知识库和项目总整合报告:
python main.py --build-creator-kb
python main.py --build-template-library
python main.py --project-report检索创作者能力与模板:
python main.py --creator-search "怎么设计一个问题式开头" --top-k 8
python main.py --creator-search "转场模板" --top-k 8
python main.py --creator-search "反差信息缺口的观察、模式、效果证据和限制" --top-k 8规则知识库采用三层结构:
Observation:单条视频里检测到的抽象功能信号和时间位置。Pattern:多个 Observation 的频率、分布和相关性汇总。Rule:基于 Pattern 形成的条件性创作假设,明确区分观察、推断和系统建议。
规则会分别计算模式置信度、效果置信度和证据质量。播放、点赞和评论只作为结果代理变量;缺少留存、完播或受控对照时,不会写成因果结论。人工复核登记保存在 rules/rule_reviews.json,生成流程不会覆盖该文件。
完整字段和生命周期说明见 docs/creator_knowledge_schema.md。
UP 定位和别名维护在:
tools/creator_specs.json
在 Web UI 的“UP选择”中输入目标方向,可以让配置好的 LLM 结合当前知识库缺口判断是否继续抓取、优先寻找哪些创作者类型以及候选筛选标准。模型调用失败或未配置 LLM_API_KEY 时,页面会明确显示原因,并继续提供本地规则建议。
命令行也可以生成同一份决策报告:
python main.py --up-advisor "自动化视频制作器下一批应该抓哪些系列UP"输出:
output/integrated/up_advisor_report.md
output/integrated/up_advisor_report.json
主要输出:
output/creator_knowledge_base/
manifest.json
creator_knowledge_base.md / creator_knowledge_base.json
cross_creator_analysis.md / cross_creator_analysis.json
creators/<作者>/creator_profile.md / creator_profile.json / style_summary.json
videos/<视频ID>/video.md / analysis.json / structure.json / keywords.json / summary.json
templates/template_library.md / template_library.json / template_index.json
rules/rule_library.md / rule_library.json / rule_index.json
rules/R-<编号>.md
rules/observations/<视频ID>.md / observation_library.json
rules/patterns/P-<规则编号>.md / pattern_library.md / pattern_library.json
rules/rule_reviews.json
main.py
config.py
pipeline/
downloader/
processor/
analyzer/
exporter/
models/
cache/
output/
logs/
- 安装 Python 依赖:
pip install -r requirements.txt-
FFmpeg 可以通过系统 PATH、
.env里的FFMPEG_PATH,或imageio-ffmpeg自动提供。 -
可选:复制
.env.example为.env,配置 Whisper、LLM 和平台登录超时;Cookie 通常可直接通过 Web UI 登录获取。
copy .env.example .envWindows 安装 requirements.txt 后会同时安装 CTranslate2 所需的 CUDA 12/cuDNN 9 运行库,不需要单独安装完整 CUDA Toolkit。默认配置会:
- 检测 NVIDIA GPU、CUDA DLL、空闲显存和 GPU 占用率。
- 资源充足时使用
float16GPU 批量识别;否则自动使用int8CPU。 - GPU 显存不足时依次降低批量大小,仍失败则自动回退 CPU。
- 同一批任务复用模型,并在任务结束后释放模型显存。
- 串行执行 Whisper,避免多个分析任务同时争抢 GPU。
- Web UI 在模型加载和分段尚未产出时显示动态心跳,产出后显示真实音频时间进度、设备和运行时长。
常用配置:
WHISPER_DEVICE=auto
WHISPER_COMPUTE_TYPE=auto
WHISPER_BATCH_SIZE=8
WHISPER_MIN_FREE_VRAM_MB=4096
WHISPER_GPU_MAX_UTILIZATION=60
WHISPER_GPU_FALLBACK=true
WHISPER_RELEASE_AFTER_JOB=true
YOUTUBE_WHISPER_LANGUAGE=auto
DOUYIN_WHISPER_LANGUAGE=zh运行状态可在程序控制台查看,也可以执行:
python -m processor.whisper --statuspython main.py "https://www.bilibili.com/video/BVxxxx"启动本地界面:
python web_ui.py浏览器打开:
http://127.0.0.1:7860
界面支持输入:
- B站视频链接
- YouTube 视频链接
- YouTube 频道主页链接
- 抖音公开视频分享链接
- 抖音创作者主页链接
- 小红书视频笔记分享链接
- BV号
- UP主页链接
- UP mid
- UP 名
界面功能:
- 自动判断多平台单视频、B站 UP、YouTube 频道或抖音创作者批量
- 将一个或多条 B站视频按综艺、电影、动漫、纪录片或其他内容作品聚合蒸馏
- 可开启 V3 增强
- V3 使用 spaCy、RapidOCR、OpenCV 和 PySceneDetect 分析字幕、封面与镜头节奏
- 可快速更新词法索引,或用 LangGraph 完整更新知识系统
- 完整更新包括 ChromaDB 语义向量库、创作者库、模板库、能力缺口和发现候选池
- 查看任务状态、日志和输出文件
- 使用关键词、语义向量或混合策略检索本地知识库
- 生成 V4 AI研究报告
- 在“创作者发现”中查看能力搜索计划、添加候选、人工批准并启动分析;抖音候选可分析创作者主页或公开视频,小红书候选可分析公开视频样本
- 在“UP抓取决策”中结合当前知识库判断下一批抓取方向
向量模型默认只读取本地缓存,避免 Hugging Face 网络不可用时长时间重试:
SENTENCE_TRANSFORMER_LOCAL_ONLY=true
需要首次联网下载模型时可临时改为 false,下载完成后恢复为 true。
强制忽略缓存:
python main.py "https://www.bilibili.com/video/BVxxxx" --overwrite输出位置:
output/<视频ID>/
video.md
subtitle.txt
subtitle.srt
analysis.json
缓存位置:
cache/videos/<视频ID>/ # 视频文件或官方字幕缓存
cache/transcripts/<视频ID>/ # 统一后的 txt/srt/json 字幕缓存
cache/analysis/<视频ID>/ # 分析缓存
cache/comments/<视频ID>/ # 评论缓存
cache/covers/<视频ID>/ # 封面缓存
cache/knowledge_base/ # 本地知识库
如果配置 LLM_API_KEY,分析阶段会调用 OpenAI 兼容接口。未配置时会使用本地启发式分析,仍会生成完整的 Markdown 和 JSON。
每个主要模块都带有命令行入口,例如:
python -m pipeline.acquire "https://www.bilibili.com/video/BVxxxx"
python -m processor.subtitle path/to/subtitle.srt --video-id demo
python -m analyzer.analyze cache/transcripts/demo/subtitle.txt --video-id demo --title demo
python -m exporter.markdown output/demo/analysis.json --video-id demo --title demo
python -m downloader.bilibili_up "https://space.bilibili.com/123456/video" --limit 10
python -m rag.knowledge_base build
python -m rag.knowledge_base search "开头方式"
python -m rag.report "分析这个UP为什么播放高"- Pipeline 和批量结果包含新增的
schema_version,原有字段保持不变。 - 视频来源与创作者主页通过
SourceRegistry注册;新增平台可以注册 Handler,无需修改主流程函数。 - 字幕、分析缓存、批量清单、知识库索引和发现状态采用同目录临时文件加原子替换写入。
Settings()在创建时读取当前环境变量;load_settings(reload_env=True)可显式重新加载.env。- 旧的
acquire_video()、run_video_pipeline_details()、run_up_pipeline()和 Web API 路径保持兼容。
本仓库提供流水线、平台适配器、分析模块、能力本体、缺口分析、Creator Discovery、知识库接口、Web UI、配置模板和测试。运行时生成的数据不属于源码, 不会提交到 Git:
.env、API Key、Cookie 和浏览器登录状态- 下载的视频、音频、字幕、封面和评论
cache/中的模型、转录缓存、向量索引和数据库output/中的分析报告、Creator Profile 和知识库内容logs/中的运行日志
公开仓库不附带任何平台账号,也不绕过平台访问控制。使用者需要自行遵守平台条款、 内容版权和所在地法律。
本项目自有代码使用 Apache License 2.0。第三方组件及其许可证见 THIRD_PARTY_NOTICES.md。