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.

architecture diagram for 2026-06-11-qiaomu
Architecture overview (source: dibi8.com)

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:

  1. 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.
  2. Python Package Mode — Use the qiaomu-notebooklm Python package programmatically for batch processing, scheduling, and integration into larger data pipelines.

Feature Image:

Qiaomu NotebookLM Converter Overview

Supported Content Sources #

The toolkit supports an impressive range of content sources. Here is the complete list:

CategorySources
VideoYouTube, Vimeo, Bilibili
AudioPodcasts (RSS feeds), MP3 files, Spotify (via transcript)
WebWebsites, Blog articles, Twitter/X threads, Reddit threads
DocumentsPDFs, Google Docs, Word documents (DOCX)
TextMarkdown files, Text files, JSON data, CSV files
AcademicArXiv papers, Semantic Scholar, Google Scholar
NewsNews articles (with paywall bypass), RSS feeds
SocialInstagram 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)

Qiaomu Conversion Pipeline

Benchmarks #

Conversion Accuracy #

Content TypeAccuracyAvg. Processing Time
YouTube videos98.5%45 seconds
Podcast transcripts97.2%30 seconds
Blog articles96.8%15 seconds
PDF papers94.3%20 seconds
Twitter threads99.1%5 seconds
Reddit threads95.6%10 seconds
Paywalled articles89.4%60 seconds

Batch Processing Performance #

Batch SizeTotal TimeThroughput
10 items4 minutes2.5 items/min
50 items18 minutes2.8 items/min
100 items35 minutes2.9 items/min
500 items2 hours 50 min2.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?

FeatureQiaomuNotebookLM NativeNotion AIObsidian + AI
Source Support15+ formatsManual upload onlyLimitedPlugin-dependent
Automated ConversionYesNoLimitedPlugin-dependent
Paywall BypassYesNoNoPlugin-dependent
Claude Code SkillYesNoNoNo
Batch ProcessingYesNoNoLimited
Scheduled SyncYesNoNoPlugin-dependent
API AccessYesPartialNoPartial
Open SourceYes (MIT)NoNoPartial
GitHub Stars5,015N/AN/AN/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:

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.

📦 Featured in collections

💬 Discussion