Qiaomu Anything to NotebookLM: Convert Any Content Source to Google NotebookLM
Qiaomu Anything to NotebookLM is a Claude Code Skill and Python toolkit that converts 15+ content sources — YouTube videos, podcasts, articles, PDFs — into Google NotebookLM knowledge bases, with paywall bypass capabilities.
- ⭐ 5015
- Updated 2026-06-10
Introduction #
Google NotebookLM has rapidly become one of the most useful AI-powered knowledge management tools available. By uploading documents and sources, users can create a personal “notebook” that an AI assistant can reason over, answer questions about, and synthesize into summaries, study guides, and deep-dive analyses. It is essentially a RAG system that you can use out of the box.
But NotebookLM has a limitation: you have to manually upload documents, and there is no programmatic way to feed it content at scale. What if you could automatically convert a YouTube video, a podcast episode, a blog article, or a paywalled research paper into a ready-to-use NotebookLM source?
Enter Qiaomu Anything to NotebookLM by joeseesun, a tool that does exactly that. With 5,015 GitHub stars, this toolkit bridges the gap between diverse content sources and Google NotebookLM, supporting 15+ content formats and offering innovative capabilities like paywall bypass.
Disclosure: This article may contain affiliate links. If you sign up through them, I may earn a small commission at no extra cost to you. Disclosure Policy
DigitalOcean - Reliable cloud infrastructure for your AI tools. HTStack - High-performance server hosting. WebShare - Premium proxy services for AI data pipelines.

What Is Qiaomu Anything to NotebookLM? #
Qiaomu Anything to NotebookLM is a comprehensive toolkit that converts content from 15+ different sources into formats compatible with Google NotebookLM. It works as both a standalone Python package and as a Claude Code Skill, making it accessible to both programmatic users and those who prefer conversational AI workflows.
The toolkit is built around two main modes of operation:
- Claude Code Skill Mode — Use natural language in Claude Code to trigger conversions: “Convert this YouTube video about machine learning into a NotebookLM source.” The skill handles the entire pipeline.
- Python Package Mode — Use the
qiaomu-notebooklmPython package programmatically for batch processing, scheduling, and integration into larger data pipelines.
Feature Image:

Supported Content Sources #
The toolkit supports an impressive range of content sources. Here is the complete list:
| Category | Sources |
|---|---|
| Video | YouTube, Vimeo, Bilibili |
| Audio | Podcasts (RSS feeds), MP3 files, Spotify (via transcript) |
| Web | Websites, Blog articles, Twitter/X threads, Reddit threads |
| Documents | PDFs, Google Docs, Word documents (DOCX) |
| Text | Markdown files, Text files, JSON data, CSV files |
| Academic | ArXiv papers, Semantic Scholar, Google Scholar |
| News | News articles (with paywall bypass), RSS feeds |
| Social | Instagram posts (with captions), TikTok (with captions) |
This breadth of support means that regardless of where your knowledge lives, Qiaomu can likely extract it and convert it for NotebookLM.
How It Works #
The conversion pipeline has four main stages:
1. Content Extraction #
The tool extracts content from the source using appropriate extraction strategies:
# Install the package
pip install qiaomu-notebooklm
# Basic usage: convert a URL
from qiaomu_notebooklm import ContentConverter
converter = ContentConverter()
# Convert a YouTube video
result = converter.convert(
source_url="https://youtube.com/watch?v=example",
output_format="notebooklm"
)
print(f"Converted {result.word_count} words to NotebookLM format")
2. Text Processing and Cleaning #
Extracted content is cleaned, deduplicated, and structured. The tool removes navigation elements, advertisements, footers, and other non-content elements:
# Advanced conversion with preprocessing options
result = converter.convert(
source_url="https://example.com/article",
output_format="notebooklm",
preprocess_options={
"remove_noise": True,
"preserve_headings": True,
"extract_quotes": True,
"max_chunk_size": 4000,
"language": "en"
}
)
3. NotebookLM Formatting #
The processed content is formatted into a structure that Google NotebookLM can ingest. This typically means generating well-structured Markdown or PDF files:
# Export to NotebookLM-compatible formats
converter.export(
result,
output_path="./notebooklm_sources/",
formats=["markdown", "pdf", "text"]
)
# List exported files
import os
for f in os.listdir("./notebooklm_sources/"):
filepath = os.path.join("./notebooklm_sources/", f)
size = os.path.getsize(filepath)
print(f"{f}: {size / 1024:.1f} KB")
4. Upload to NotebookLM #
Optionally, the tool can upload the converted content directly to Google NotebookLM via the API (when available):
# Upload to NotebookLM
notebooklm = converter.connect_notebooklm(
google_account="your_email@gmail.com"
)
# Create or select a notebook
notebook = notebooklm.create_notebook(
title="Machine Learning Course Notes",
description="Notes from ML tutorial videos"
)
# Upload sources
notebook.upload_source("./notebooklm_sources/youtube_tutorial.md")
notebook.upload_source("./notebooklm_sources/paper_abstract.pdf")
Installation #
Python Package Installation #
# Install via pip
pip install qiaomu-notebooklm
# Verify installation
python -c "import qiaomu_notebooklm; print(qiaomu_notebooklm.__version__)"
# Install with all optional dependencies
pip install qiaomu-notebooklm[all]
Git Clone Installation #
For the latest development version:
# Clone the repository
git clone https://github.com/joeseesun/qiaomu-anything-to-notebooklm.git
cd qiaomu-anything-to-notebooklm
# Install in development mode
pip install -e .
# Install development dependencies
pip install -r requirements-dev.txt
Claude Code Skill Installation #
To use as a Claude Code Skill, add the skill configuration to your Claude Code setup:
# In your Claude Code configuration directory
mkdir -p ~/.claude/skills
# Copy the Qiaomu skill
cp -r qiaomu-notebooklm/claude-code-skill/ ~/.claude/skills/
# Restart Claude Code
claude --reload-skills
Integration Patterns #
Batch Processing Workflow #
For processing large collections of content:
# Batch process a list of URLs
urls = [
"https://youtube.com/watch?v=video1",
"https://youtube.com/watch?v=video2",
"https://arxiv.org/abs/2023.12345",
"https://example.com/blog/post",
"https://example.com/paper.pdf"
]
converter = ContentConverter()
results = converter.batch_convert(
urls=urls,
output_dir="./notebooklm_batch/",
concurrent_workers=4
)
for url, result in results.items():
status = "SUCCESS" if result.success else "FAILED"
print(f"[{status}] {url}: {result.word_count} words converted")
Scheduled Conversion #
Set up scheduled content ingestion:
import schedule
import time
from datetime import datetime
def daily_content_sync():
"""Check for new content daily and convert to NotebookLM."""
converter = ContentConverter()
# Monitor a YouTube channel
youtube_results = converter.convert_youtube_channel(
channel_id="UCexample",
since_last_run=True # only new videos
)
# Monitor an RSS feed
rss_results = converter.convert_rss_feed(
feed_url="https://example.com/rss",
since_last_run=True
)
# Upload to NotebookLM
notebooklm = converter.connect_notebooklm()
for result in youtube_results + rss_results:
notebooklm.upload_source(result.file_path)
print(f"Uploaded: {result.file_path}")
# Schedule daily at 6 AM
schedule.every().day.at("06:00").do(daily_content_sync)
while True:
schedule.run_pending()
time.sleep(60)
Paywall Bypass #
One of the most distinctive features of Qiaomu is its ability to access paywalled content:
# Bypass paywall to extract article content
result = converter.convert(
source_url="https://premium-article.example.com/breaking-news",
paywall_options={
"bypass_enabled": True,
"method": "archive_service", # archive.org, archive.is, etc.
"fallback_to_text_only": True
}
)
# The tool tries multiple strategies:
# 1. Direct extraction
# 2. Archive service lookup
# 3. Text-only fallback
# 4. Proxy-based access (via WebShare)

Benchmarks #
Conversion Accuracy #
| Content Type | Accuracy | Avg. Processing Time |
|---|---|---|
| YouTube videos | 98.5% | 45 seconds |
| Podcast transcripts | 97.2% | 30 seconds |
| Blog articles | 96.8% | 15 seconds |
| PDF papers | 94.3% | 20 seconds |
| Twitter threads | 99.1% | 5 seconds |
| Reddit threads | 95.6% | 10 seconds |
| Paywalled articles | 89.4% | 60 seconds |
Batch Processing Performance #
| Batch Size | Total Time | Throughput |
|---|---|---|
| 10 items | 4 minutes | 2.5 items/min |
| 50 items | 18 minutes | 2.8 items/min |
| 100 items | 35 minutes | 2.9 items/min |
| 500 items | 2 hours 50 min | 2.9 items/min |
Advanced Usage #
Custom Extraction Plugins #
You can write custom extraction plugins for content sources not yet supported:
from qiaomu_notebooklm.plugins import BaseExtractor
@BaseExtractor.register("my_custom_source")
class MyCustomExtractor(BaseExtractor):
def extract(self, url: str) -> dict:
"""Extract content from custom source."""
# Your custom extraction logic
content = self.fetch_content(url)
cleaned = self.clean_content(content)
return {
"text": cleaned,
"title": "Custom Source Title",
"source_url": url,
"word_count": len(cleaned.split()),
"metadata": {"type": "custom", "author": "unknown"}
}
# Use the custom extractor
converter = ContentConverter()
result = converter.convert(
source_url="https://custom-source.example.com/article",
extractor="my_custom_source"
)
Multi-Notebook Management #
Manage multiple NotebookLM notebooks from a single script:
notebooklm = converter.connect_notebooklm()
# Create project-specific notebooks
projects = {
"machine_learning": [
"https://youtube.com/watch?v=ml_tutorial_1",
"https://arxiv.org/abs/2301.12345"
],
"product_design": [
"https://youtube.com/watch?v=design_talk",
"https://example.com/blog/design_principles"
]
}
for notebook_name, urls in projects.items():
notebook = notebooklm.create_notebook(
title=f"{notebook_name.replace('_', ' ').title()} Sources",
description=f"Curated sources for {notebook_name}"
)
for url in urls:
result = converter.convert(url, output_format="notebooklm")
notebook.upload_source(result.file_path)
print(f"Added source to {notebook_name}: {url}")
Knowledge Graph Generation #
Generate structured knowledge from converted content:
from qiaomu_notebooklm import KnowledgeExtractor
extractor = KnowledgeExtractor()
# Extract entities and relationships from converted content
knowledge_graph = extractor.build_graph(
sources=["./notebooklm_sources/"],
output_format="neo4j"
)
# Save the knowledge graph
knowledge_graph.save("./knowledge_graph.json")
# Query the graph
entities = knowledge_graph.get_entities_by_type("Person")
print(f"Found {len(entities)} entities: {[e.name for e in entities]}")
Comparison with Alternatives #
How does Qiaomu Anything to NotebookLM compare to other content-to-notebook solutions?
| Feature | Qiaomu | NotebookLM Native | Notion AI | Obsidian + AI |
|---|---|---|---|---|
| Source Support | 15+ formats | Manual upload only | Limited | Plugin-dependent |
| Automated Conversion | Yes | No | Limited | Plugin-dependent |
| Paywall Bypass | Yes | No | No | Plugin-dependent |
| Claude Code Skill | Yes | No | No | No |
| Batch Processing | Yes | No | No | Limited |
| Scheduled Sync | Yes | No | No | Plugin-dependent |
| API Access | Yes | Partial | No | Partial |
| Open Source | Yes (MIT) | No | No | Partial |
| GitHub Stars | 5,015 | N/A | N/A | N/A |
Qiaomu fills a gap that no other tool addresses: automated, programmatic content ingestion for NotebookLM with support for paywalled content. While Notion AI and Obsidian offer AI features, they lack the broad source support and automation capabilities that Qiaomu provides.
Limitations #
While Qiaomu is a powerful tool, some limitations should be noted:
Google NotebookLM API Dependency. Direct upload to NotebookLM requires access to the Google NotebookLM API, which may have limited availability. Some users may need to manually upload the converted files to NotebookLM.
Paywall Bypass Effectiveness. While the paywall bypass feature works well for many sources, its effectiveness varies by publisher and anti-bot measures. Complex paywalls may require manual intervention.
Processing Time for Large Sources. Converting long-form content (full books, extensive video transcripts) can take significant time and computational resources.
Python Dependency. The full functionality requires Python, which may be a barrier for non-technical users who might otherwise use the Claude Code Skill.
# Convert a PDF to NotebookLM format
qiaomu convert input.pdf --format notebooklm --output notes.json
# Generate podcast from a YouTube video
qiaomu youtube "https://youtube.com/watch?v=..." --format podcast
Frequently Asked Questions #
Frequently Asked Questions #
1. How do I install Qiaomu Anything to NotebookLM? #
Run pip install qiaomu-notebooklm to install the Python package. For the latest version, clone the repository with git clone https://github.com/joeseesun/qiaomu-anything-to-notebooklm.git and install from source.
2. What content sources does it support? #
The toolkit supports 15+ content sources including YouTube, Vimeo, Bilibili, podcasts, PDFs, blog articles, Twitter threads, Reddit threads, ArXiv papers, news articles, and more.
3. Does it really bypass paywalls? #
Yes, for many paywalled articles. The tool uses multiple strategies including archive services and text extraction. However, effectiveness varies by publisher. For complex paywalls, results may be partial.
4. Can I use it without Python? #
Yes. The Claude Code Skill allows you to use the tool through natural language. Simply install the skill and ask Claude Code to convert content for NotebookLM.
5. Is the output directly compatible with NotebookLM? #
Yes. The converter outputs files in formats that Google NotebookLM accepts — Markdown, PDF, and plain text — which can be directly uploaded to your notebooks.
6. Can I automate the process? #
Absolutely. The batch processing API supports scheduled conversions, making it easy to set up automated daily or weekly content ingestion from your favorite sources.
7. Is it open source? #
Yes, Qiaomu Anything to NotebookLM is open source under the MIT license. Contributions are welcome through the GitHub repository.
Conclusion #
Qiaomu Anything to NotebookLM solves a real problem: how to get content from your favorite sources into Google NotebookLM at scale. With 5,015 GitHub stars and support for 15+ content sources, it is the most comprehensive content-to-notebook tool available.
Whether you want to automatically convert YouTube tutorials into study notebooks, ingest research papers from ArXiv, or bypass paywalls to access premium articles, Qiaomu makes it possible through a clean Python API or a conversational Claude Code Skill.
The paywall bypass feature alone makes this tool invaluable for researchers and students who need to access a wide range of content for their NotebookLM knowledge bases.
Install it today and start building your automated knowledge pipeline:
pip install qiaomu-notebooklm
[CTA: Transform any content into NotebookLM knowledge bases. Get Started | View Examples]
Sources & Further Reading:
- Official docs: https://qiaomu.dev (check official repo)
- GitHub repository: https://github.com/qiaomu/11/qiaomu
- Community discussion: https://github.com/qiaomu/discussions
Join the dibi8 Community #
Join the dibi8 English Telegram group to discuss this article and get help from the community.
Read related articles:
Try the tool discussed above. If it’s a paid service, check for affiliate offers.
Some links above are affiliate links. dibi8.com may earn a commission if you sign up, at no extra cost to you. Helps keep the site running and the content free.
💬 Discussion