YouTube播客分析工具

一个本地化的YouTube播客分析工具,结合了本地LLM服务器和Docker MCP网关,用于搜索、获取YouTube转录本并生成摘要。

  • by EASS-HIT-PART-A-2025-CLASS-VIII
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 EASS-HIT-PART-A-2025-CLASS-VIII/mcp-docker-llamacpp-demo

使用说明

MCP YouTube播客分析器

这个仓库将三件事粘在一起,这样你就可以从笔记本电脑上总结YouTube播客:

  1. 本地llama.cpp服务器(运行LLM,不需要API密钥)
  2. Docker的MCP网关(为您提供DuckDuckGo搜索+剧作家浏览+YouTube转录)
  3. 一个Python脚本(script.py)它搜索人员,抓取成绩单,并打印一个漂亮的Rich表

如果你能遵循一个食谱,你就可以运行这个项目。


快速入门(按顺序操作)

提示:所有命令都从repo根目录运行。

  1. 安装一次所需的工具
    • Docker桌面4.29+ 使用MCP扩展: docker extension install docker/mcp
    • 紫外线 (或者Python 3.12+,如果你坚持的话)
    • 在继续之前,请确保Docker Desktop正在运行;如果守护进程停止,助手脚本现在会很快失败。
  2. 启动本地LLM(一个终端选项卡)
    scripts/start_llm_server.sh
    
    等待,直到您看到服务器在端口1234上侦听。
  3. 启动MCP网关(第二个终端选项卡)
    scripts/start_mcp_gateway.sh
    
    此命令启用DuckDuckGo、Playwright和YouTube Transcript MCP服务器(如果尚未启用)。
  4. 烟雾测试连接(第三个选项卡)
    uv run python script.py --smoke-test
    
    您应该看到两个绿色复选标记(LLM+MCP)。在继续之前,先把红色的东西修好。
  5. 实际运行分析仪
    uv run python script.py \
      --people "Lex Fridman" "Andrew Huberman" \
      --per-person 2
    
    该脚本打印了一个表格,其中包含它设法总结的每个视频的主题+见解。

就是这样。改名字或撞 --per-person 只要你愿意。


万物如何连接(图片!)

flowchart LR
    User[[You in a terminal]] -->|run scripts/run_analyzer.sh| Client["Python analyzer (script.py + uv)"]
    subgraph DockerContainers
      LLM["llama.cpp server on port 1234"]:::box -->|summaries back| Client
      Gateway["MCP gateway on port 8080"]:::box --> Client
      Gateway --> Tools
      Tools["DuckDuckGo + Playwright + YouTube Transcript"]:::box
    end

    classDef box fill:#e6f3ff,stroke:#0077cc,color:#111,rx:6,ry:6;
  • 分析器只是您在本地运行的Python脚本;它通过简单的HTTP请求与两个Docker容器进行通信(想想“发送文本→ 取回文本”)。
  • 容器#1是llama.cpp服务器(您的本地LLM)。容器#2是Docker的MCP网关,它捆绑了搜索/浏览/转录工具。
  • 当脚本运行时,它会向工具请求YouTube成绩单,然后将该文本交给本地LLM进行摘要,最后打印一个友好的表格。

不需要花哨的网络知识:上面的每个箭头都是“用文本在本地主机上交谈”。


回购是如何组织的

.
├── script.py                # Rich terminal client (now has helpful CLI flags)
├── pyproject.toml / uv.lock # uv metadata; run `uv run ...` and it "just works"
├── scripts/
│   ├── start_llm_server.sh  # llama.cpp Docker wrapper (Gemma 3 270M by default)
│   ├── start_mcp_gateway.sh # Enables DuckDuckGo + Playwright + YouTube MCP tools
│   └── run_analyzer.sh      # Convenience wrapper around `uv run python script.py`
├── docs/                    # Drop diagrams or notes here if you make them
└── README.md                # What you’re reading

提示: scripts/start_llm_server.sh 自动运行 docker pull 对于llama.cpp图像,这样您就可以始终保持最新状态。集 PULL_IMAGE=false 如果你需要跳过它(例如,离线工作)。


重要标志和环境变量

什么 默认值 如何更改
LLM端点 http://127.0.0.1:1234/v1 export LLM_ENDPOINT=... 或 --llm-endpoint URL
MCP端点 http://localhost:8080/mcp export MCP_ENDPOINT=... 或 --mcp-endpoint URL
要搜索的人 Sam Altman Elon Musk Donald Trump --people "Name1" "Name2"
每人视频 2 --per-person 3
搜索广度 15 --max-search-results 20
仅健康检查 关闭 添加 --smoke-test

两个辅助脚本都接受标准环境覆盖(例如。, PORT, MODEL_REPO, SERVERS)如果你想调整它们。


故障排除备忘单

症状 可能修复
✗ LLM connection failed 确保 scripts/start_llm_server.sh 仍在运行;检查Docker桌面日志。
✗ MCP gateway unreachable 重新运行 scripts/start_mcp_gateway.sh;确认 docker mcp server ls 显示了启用的三个服务器。
助手脚本退出,表示Docker未运行 启动Docker桌面(或启动Docker守护进程)并再次运行脚本。
No podcasts were summarized 尝试不同的名字,撞 --max-search-results,或等待DuckDuckGo返回更新的链接。
Docker表示MCP命令未知 安装/启用MCP扩展: docker extension install docker/mcp.

跑 uv run python script.py --smoke-test 每当您不确定这两个服务是否都处于活动状态时。


为什么我们喜欢这种设置

  • 100%本地推理——没有OpenAI密钥,只有一个llama.cpp容器从Hugging Face中提取Gemma 3 270M模型。
  • Docker MCP网关通过一个HTTP端点为您提供现成的工具(搜索、无头浏览器、YouTube转录)。
  • script.py 它故意很小,评论很好,并使用Rich,这样你就可以准确地看到发生了什么。

如果您构建图表,请将其保存在 docs/ 这样以后每个人都能找到它们。