Intelligent routing layer that automatically invokes the corresponding content ingestion skill based on the URL type, and returns standardized content.
Positioning and Responsibilities
Content Bridge is general-purpose content ingestion infrastructure, and is not bound to any downstream application.
- Core responsibility: identify the content source type → route to the corresponding ingestion skill → return standardized content
- Reusability: any skill (deep-learning, knowledge-sync, research, etc.) can depend on it
- Not responsible for: it does not directly implement the scraping logic for specific platforms, and does not handle downstream application logic (such as NotebookLM upload)
- Clear boundaries: focuses on the "content acquisition" layer; how downstream uses it is decided by the caller
Architecture Description
Content Bridge is arouting layer, not an implementation layer:
调用方 (deep-learning, etc.)
↓
content-bridge (路由判断)
↓
独立摄取 skills (weixin-extractor, bilibili-subtitle, etc.)
↓
标准化输出 (Markdown + metadata)
Dependent Ingestion Skills
| Content Source | Ingestion Skill | Status |
|---|---|---|
| WeChat Official Account | weixin-extractor |
✅ Created |
| Bilibili Video | bilibili-subtitle |
✅ Exists |
| YouTube | youtube-transcript |
✅ Created |
| General Web Page | web-reader |
✅ Created |
| PDF/DOCX | document-parser |
✅ Created |
Supported Content Sources
1. WeChat Official Account Articles
Automatically scrape WeChat Official Account article content via the MCP server (bypassing anti-scraping)
2. Any Web Page Link
Supports any publicly accessible web page (news, blogs, documents, etc.)
3. YouTube Videos
Automatically extract subtitles and metadata from YouTube videos
4. Office Documents
- Word (DOCX) - Preserves tables and formatting
- PowerPoint (PPTX) - Extracts slides and notes
- Excel (XLSX) - Tabular data
5. E-books and Documents
- PDF - Full-text extraction
- EPUB - Full-text extraction of e-books
- Markdown (.md) - Native support
6. Images and Scanned Documents
- Images (JPEG, PNG, GIF, WebP) - OCR text recognition
- Scanned PDF documents - OCR text extraction
7. Audio Files
- Audio (WAV, MP3) - Speech-to-text
8. Structured Data
- CSV - Comma-separated data
- JSON - JSON data
- XML - XML documents
9. Archives
- ZIP - Automatically decompresses and processes all supported files
10. Plain Text
Text content entered or pasted directly
11. Search Keywords
Searches keywords via Web Search and aggregates information from multiple sources
12. Bilibili Videos
Extracts subtitles or transcribes audio via the bilibili-subtitle tool to generate a text transcript
Prerequisites
1. Install wexin-read-mcp
The MCP server is already installed at:~/.claude/skills/anything-to-notebooklm/wexin-read-mcp/
Configure MCP(needs to be manually added to the Claude configuration file):
macOS: Edit ~/.claude/config.json
{
"primaryApiKey": "any",
"mcpServers": {
"weixin-reader": {
"command": "python",
"args": [
"/Users/joe/.claude/skills/anything-to-notebooklm/wexin-read-mcp/src/server.py"
]
}
}
}
After configuration, Claude Code needs to be restarted.
2. NotebookLM Authentication
Before first use, delegate to the notebooklm Skill to execute the authentication process:
- Run authentication check (auth check)
- If not logged in or expired, execute login (login)
- Return authentication status to this Skill, and continue upload/generation only after confirmation
Trigger Methods
WeChat Official Account Article
/anything-to-notebooklm [微信文章链接]- "Upload this WeChat article to NotebookLM"
- "Generate a podcast from this WeChat article"
Web Link
- "Make this webpage into a podcast [URL]"
- "Make this article into a PPT for me [URL]"
- "Help me analyze this webpage [URL]"
YouTube Video
- "Make this YouTube video into a podcast [YouTube URL]"
- "Generate a mind map for this video [YouTube URL]"
Bilibili Video
- "Make this Bilibili video into a podcast [Bilibili URL]"
- "Generate a PPT for this Bilibili video [BV number]"
Local File
- "Upload this PDF to NotebookLM /path/to/file.pdf"
- "Generate a PPT from this Markdown file /path/to/file.md"
- "Generate a podcast from this EPUB ebook /path/to/book.epub"
- "Make this Word document into a mind map /path/to/doc.docx"
- "Generate a Quiz from this PowerPoint /path/to/slides.pptx"
- "Make this scanned PDF into a report /path/to/scan.pdf" (automatic OCR)
Search Keywords
- "Search for 'AI development trends' and generate a report"
- "Search for materials about 'quantum computing' and make a podcast"
Mixed Use
- "Upload this article, this video, and this PDF together, and generate a report"
Natural Language → Delegated Action Mapping
| What the user says | Recognized intent | Delegated action (executed by the notebooklm Skill) |
|---|---|---|
| "Generate a podcast" / "make it into audio" / "convert to speech" | audio | generate-audio |
| "Make a PPT" / "generate slides" / "make a presentation" | slide-deck | generate-slide-deck |
| "Draw a mind map" / "generate a mind map" / "make a map" | mind-map | generate-mind-map |
| "Generate a Quiz" / "create questions" / "make a quiz" | quiz | generate-quiz |
| "Make a video" / "generate a video" | video | generate-video |
| "Generate a report" / "write a summary" / "organize into a document" | report | generate-report |
| "Make an infographic" / "visualize" | infographic | generate-infographic |
| "Generate a data table" / "make a table" | data-table | generate-data-table |
| "Make flashcards" / "generate memory cards" | flashcards | generate-flashcards |
If there is no explicit instruction, by default only upload without generating any content, and wait for the user's follow-up instructions.
Progress Updates
Provide clear status updates during execution:
⏳ 识别内容源类型...
✅ 检测到微信公众号文章
⏳ 抓取文章内容...
✅ 文章抓取成功:《深度学习的未来趋势》
⏳ 保存为临时文件...
✅ 已保存:/tmp/weixin_深度学习_1706234567.txt
⏳ 创建 NotebookLM 笔记本...
✅ 笔记本已创建:ID abc-123-def
⏳ 上传文件到笔记本...
✅ 上传完成,等待处理...
✅ 处理完成!
⏳ 生成播客...
✅ 播客生成完成!
⏳ 下载文件...
✅ Done!
Output Summary
After the task is completed, output in the following format:
Upload only (no generation):
✅ 内容已上传到 NotebookLM!
📓 笔记本:[标题]
ID: abc-123-def
📄 来源:filename.txt
ID: source-xyz-789
💡 后续操作:
- 默认继续使用本 Skill:直接说"基于这个 notebook 生成播客/PPT/Quiz"
- 高级模式:切换 `notebooklm` Skill,对该 notebook 进行精细控制
Upload and generate:
✅ [内容类型]已转换为[输出格式]!
📄 来源:[标题/文件名]
👤 作者:[作者](如有)
📅 日期:[日期](如有)
🎙️ [输出格式]已生成:
📁 文件:/tmp/output_file.mp3
⏱️ 时长/页数:约 X 分钟/页
📊 大小:X MB
Workflow
Step 1: Identify the content source type
Claude automatically identifies the input type:
| Input feature | Identified as | Processing method |
|---|---|---|
https://mp.weixin.qq.com/s/ |
WeChat Official Account | MCP tool scraping |
https://youtube.com/... or https://youtu.be/... |
YouTube | Pass directly to NotebookLM |
https://bilibili.com/... or BV1xxx |
Bilibili video | bilibili-subtitle extract → TXT |
https:// or http:// |
Web page | Directly pass to NotebookLM |
/path/to/file.pdf |
PDF file | markitdown convert to Markdown → TXT |
/path/to/file.epub |
EPUB ebook | markitdown convert to Markdown → TXT |
/path/to/file.docx |
Word document | markitdown convert to Markdown → TXT |
/path/to/file.pptx |
PowerPoint | markitdown convert to Markdown → TXT |
/path/to/file.xlsx |
Excel | markitdown convert to Markdown → TXT |
/path/to/file.md |
Markdown | Direct upload |
/path/to/image.jpg |
Image (OCR) | markitdown OCR → TXT |
/path/to/audio.mp3 |
Audio | markitdown transcribe → TXT |
/path/to/file.zip |
ZIP archive | Extract → markitdown batch conversion |
| Keyword (no URL, no path) | Search query | WebSearch → Summarize → TXT |
Step 2: Get content
WeChat official account:
- Use MCP tool
read_weixin_article - Returns: title, author, publish_time, content
- Save as TXT:
/tmp/weixin_{title}_{timestamp}.txt
Web page/YouTube:
- Keep the original URL as the source input
- NotebookLM automatically extracts content
Bilibili video:
- Use bilibili-subtitle to extract subtitles/transcript
- Command:
python -m bilibili_subtitle "URL" -o /tmp --skip-summary - Save as TXT:
/tmp/{video_id}.transcript.md
Office document/ebook/PDF:
- Use markitdown to convert to Markdown
- Command:
markitdown /path/to/file.docx -o /tmp/converted.md - Save as TXT:
/tmp/{filename}_converted_{timestamp}.txt
Local Markdown:
- Hand it to the delegation layer as a local file source for upload
Image (OCR):
- markitdown automatically performs OCR to recognize text
- Extract EXIF metadata
- Save as TXT
Audio file:
- markitdown automatically transcribes speech to text
- Extract audio metadata
- Save as TXT
ZIP archive:
- Automatically extract to a temporary directory
- Traverse all supported files
- Batch convert using markitdown
- Merge into a single TXT or multiple Sources
Search keyword:
- Use the WebSearch tool to search the keyword
- Summarize the first 3-5 results
- Save as TXT:
/tmp/search_{keyword}_{timestamp}.txt
Step 3: Upload to NotebookLM
Delegate notebooklm Skill execution:
- Create notebook (returns notebook_id)
- Add source (file or URL)
- Wait for the source to enter READY status
- Pass notebook_id/source_id back to the subsequent steps of this Skill
Waiting for source READY is very important, otherwise subsequent generation may fail.
Step 5: Generate content based on intent (optional)
If the user has specified a processing intent, automatically delegate notebooklm Skill:
| Intent | Delegated action | Artifact type |
|---|---|---|
| audio | generate-audio | mp3 |
| slide-deck | generate-slide-deck | |
| mind-map | generate-mind-map | json |
| quiz | generate-quiz | markdown/json/html |
| video | generate-video | mp4 |
| report | generate-report | md |
| infographic | generate-infographic | png |
| flashcards | generate-flashcards | markdown/json/html |
Generation process:
- Delegate generation initiation (returns task/artifact ID)
- Delegate waiting for completion
- Delegate download to local
- Inform the user of the final file path and size
Complete examples
Example 1: WeChat Official Account article → Podcast
User input:
把这篇文章生成播客 https://mp.weixin.qq.com/s/abc123xyz
Execution flow:
- Recognized as a WeChat Official Account link
- MCP tool fetches the article content
- Create a TXT file
- Upload to NotebookLM
- Generate podcast (
generate audio) - Download the podcast locally
Output:
✅ 微信文章已转换为播客!
📄 文章:深度学习的未来趋势
👤 作者:张三
📅 发布:2026-01-20
🎙️ 播客已生成:
📁 文件:/tmp/weixin_深度学习的未来趋势_podcast.mp3
⏱️ 时长:约 8 分钟
📊 大小:12.3 MB
Example 2: YouTube video → Mind map
User input:
这个视频帮我画个思维导图 https://www.youtube.com/watch?v=abc123
Execution flow:
- Recognized as a YouTube link
- Pass directly to NotebookLM (automatic subtitle extraction)
- Generate mind map (
generate mind-map) - Download the mind map
Output:
✅ YouTube 视频已转换为思维导图!
🎬 视频:Understanding Quantum Computing
⏱️ 时长:23 分钟
🗺️ 思维导图已生成:
📁 文件:/tmp/youtube_quantum_computing_mindmap.json
📊 节点数:45 个
Example 3: Search keyword → Report
User input:
搜索 'AI发展趋势 2026' 并生成报告
Execution flow:
- Recognized as a search query
- WebSearch searches the keyword
- Summarize the top 5 results
- Create a TXT file
- Upload to NotebookLM
- Generate report (
generate report)
Output:
✅ 搜索结果已生成报告!
🔍 关键词:AI发展趋势 2026
📊 来源:5 篇文章
📄 报告已生成:
📁 文件:/tmp/search_AI发展趋势2026_report.md
📝 章节:7 个
📊 大小:15.2 KB
Example 4: Mixed multiple sources → PPT
User input:
把这篇文章、这个视频和这个PDF一起做成PPT:
- https://example.com/article
- https://youtube.com/watch?v=xyz
- /Users/joe/Documents/research.pdf
Execution flow:
- Create a new Notebook
- Add 3 Sources in sequence
- Generate PPT based on all Sources
Output:
✅ 多源内容已整合为PPT!
📚 内容源:
1. 网页文章:AI in 2026
2. YouTube:Future of AI
3. PDF:Research Notes (12 页)
📊 PPT 已生成:
📁 文件:/tmp/multi_source_slides.pdf
📄 页数:25 页
📦 大小:3.8 MB
Example 5: EPUB e-book → Podcast
User input:
把这本电子书做成播客 /Users/joe/Books/sapiens.epub
Execution flow:
- Recognized as an EPUB file
- markitdown converts to Markdown
- Save as TXT
- Upload to NotebookLM
- Generate podcast
Output:
✅ EPUB 电子书已转换为播客!
📚 电子书:Sapiens: A Brief History of Humankind
📄 页数:约 450 页
📊 字数:约 15 万字
🎙️ 播客已生成:
📁 文件:/tmp/sapiens_podcast.mp3
⏱️ 时长:约 45 分钟(精华版)
📊 大小:48.2 MB
Example 6: Word document → Quiz
User input:
这个Markdown生成Quiz /Users/joe/notes/machine_learning.md
Execution flow:
- Recognized as a local Markdown file
- Upload directly to NotebookLM
- Generate Quiz (
generate quiz)
Output:
✅ Markdown 已转换为Quiz!
📄 文件:machine_learning.md
📊 大小:8.5 KB
📝 Quiz 已生成:
📁 文件:/tmp/machine_learning_quiz.md
❓ 题目:15 道(10选择 + 5简答)
Error handling
1. Failed to fetch WeChat article
- Error: unable to fetch article content
- Cause: article deleted, login required, network issue, anti-scraping block
- Solution: check whether the link is correct, wait 2-3 seconds and retry
- Fallback: manually copy the article content
2. NotebookLM authentication failed
- Error:Auth/cookie error
- Cause: authentication expired or not logged in
- Solution: switch to the
notebooklmSkill to run the authentication repair process (auth check/login) - Verify: authentication status is returned by the
notebooklmSkill
3. File upload failed
- Error:Invalid file or upload error
- Cause: incorrect file path, permission issue, file too large
- Solution: this Skill first checks the path/permissions/conversion result, then delegates to the
notebooklmSkill to retry the upload - Fallback: try converting to a smaller file
4. Generation task failed
- Error:Generation failed
- Cause: Content is too short (<100 characters), too long (>500,000 characters), or the service is abnormal
- Solution: By
notebooklmSkill, perform task status diagnosis and retry - Alternative: Try other formats (e.g., a report instead of a podcast)
5. MCP tool not found
- Error:Tool not found: read_weixin_article
- Cause: The MCP server is not configured or not started
- Solution: Check
~/.claude/config.jsonconfiguration, restart Claude Code - Verify:
python ~/.agents/skills/anything-to-notebooklm/wexin-read-mcp/src/server.py
Advanced Features
1. Multi-intent processing
Users can specify multiple processing tasks at once:
这篇文章帮我生成播客和PPT https://mp.weixin.qq.com/s/abc123
The Skill will execute in sequence:
- Generate podcast
- Generate PPT
2. Custom Notebook
By default, a new Notebook is created for each article, but an existing Notebook can also be specified:
把这篇文章加到我的【AI研究】笔记本 https://mp.weixin.qq.com/s/abc123
The Skill will:
- Search for a Notebook named "AI Research"
- Add the article as a new Source
- Generate content based on all Sources
3. Custom generation instructions
Add specific requirements for generation tasks:
这篇文章生成播客,要求:轻松幽默的风格,时长控制在5分钟
The Skill will pass the requirements as instructions to NotebookLM.
Notes
-
Rate limits:
- Interval between requests > 2 seconds to avoid being banned by WeChat
- NotebookLM generation tasks have concurrency limits (at most 3 running simultaneously)
-
Content length:
- WeChat articles are usually 1,000-5,000 characters, suitable for generating podcasts (3-8 minutes)
- Long articles over 10,000 characters may require longer generation time
- Short articles under 500 characters may produce poor results
-
Copyright compliance:
- For personal study and research only
- Comply with WeChat Official Account copyright regulations
- Generated content must not be used for commercial purposes
-
Generation time:
- Podcast: 2-5 minutes
- Video: 3-8 minutes
- PPT: 1-3 minutes
- Mind map: 1-2 minutes
- Quiz/flashcards: 1-2 minutes
-
File cleanup:
- TXT source files are saved in
/tmp/, automatically cleaned up after a system restart - Generated files (MP3/PDF/MD, etc.) are saved by default in
/tmp/ - A custom save path can be specified
- TXT source files are saved in
Related Skills
notebooklm- NotebookLM execution layer (advanced users can use directly)notebooklm-deep-analyzer- In-depth analysis of NotebookLM contentmarkitdown- Convert documents in other formats
Default strategy:
- By default, externally use
anything-to-notebooklm(unified entry point) - For advanced scenarios, use
notebooklmdirectly (fine-grained control)
Configure MCP (Important)
⚠️ Must be configured before first use
Edit ~/.claude/config.json:
{
"primaryApiKey": "any",
"mcpServers": {
"weixin-reader": {
"command": "python",
"args": [
"/Users/joe/.claude/skills/anything-to-notebooklm/wexin-read-mcp/src/server.py"
]
}
}
}
Restart Claude Code after configuration!
Troubleshooting
# 测试 MCP 服务器
python ~/.agents/skills/anything-to-notebooklm/wexin-read-mcp/src/server.py
Faults on the NotebookLM side (authentication, upload, generation, download) are uniformly delegated to notebooklm Skill to handle; a complete CLI troubleshooting manual is not maintained in this Skill.
Typical Use Cases
Scenario 1: Quick learning
我想学习这篇文章,帮我生成播客,上下班路上听
链接:https://mp.weixin.qq.com/s/abc123
→ Generate an 8-minute podcast to listen to during your commute
Scenario 2: Share with the team
这篇文章不错,做成PPT分享给团队
https://mp.weixin.qq.com/s/abc123
→ Generate a 15-page PPT, ready for team sharing
Scenario 3: Review and reinforce
这篇技术文章帮我出题,想测试一下掌握程度
https://mp.weixin.qq.com/s/abc123
→ Generate 10 multiple-choice questions + 5 short-answer questions
Scenario 4: Visual understanding
这篇文章概念比较多,画个思维导图帮我理清结构
https://mp.weixin.qq.com/s/abc123
→ Generate a mind map, clear at a glance
Example 7: Bilibili video → Podcast
User input:
把这个B站视频做成播客 https://www.bilibili.com/video/BV1234567890/
Execution flow:
- Identified as a Bilibili link
- bilibili-subtitle extracts subtitles/transcript
- Save as TXT
- Upload to NotebookLM
- Generate podcast
Output:
✅ B站视频已转换为播客!
🎬 视频:深度学习入门教程
⏱️ 时长:45 分钟
🎙️ 播客已生成:
📁 文件:/tmp/bilibili_BV1234567890_podcast.mp3
⏱️ 时长:约 12 分钟
📊 大小:18.5 MB
Skill creation time:2026-01-25 Last updated:2026-02-25 Version:v1.2.0