<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Waseem Al-Dmeiri</title>
    <description>The latest articles on DEV Community by Waseem Al-Dmeiri (@waseemaldmeiri).</description>
    <link>https://dev.to/waseemaldmeiri</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3862038%2Feca10bd7-c1f1-4155-8b2b-52edd2ccc06f.jpeg</url>
      <title>DEV Community: Waseem Al-Dmeiri</title>
      <link>https://dev.to/waseemaldmeiri</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/waseemaldmeiri"/>
    <language>en</language>
    <item>
      <title>Automating Roadmap.sh into NotebookLM</title>
      <dc:creator>Waseem Al-Dmeiri</dc:creator>
      <pubDate>Sun, 05 Apr 2026 09:21:59 +0000</pubDate>
      <link>https://dev.to/waseemaldmeiri/automating-roadmapsh-into-notebooklm-132i</link>
      <guid>https://dev.to/waseemaldmeiri/automating-roadmapsh-into-notebooklm-132i</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;If you're a developer, you probably know &lt;a href="https://roadmap.sh" rel="noopener noreferrer"&gt;roadmap.sh&lt;/a&gt;. It's the gold standard for figuring out what to learn, packed with community-curated articles and videos.&lt;/p&gt;

&lt;p&gt;Then there's &lt;a href="https://notebooklm.google.com" rel="noopener noreferrer"&gt;NotebookLM&lt;/a&gt;. For me, this is the "holy grail" of studying. You feed it a few links, and it generates these incredibly fun, informative "Deep Dive" podcasts. I started listening to them on my daily commute, and honestly, I've never absorbed complex tech topics faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; The Backend roadmap has over &lt;strong&gt;130 nodes&lt;/strong&gt;. Each node has about 7 resources.&lt;br&gt;
Doing the math? That's nearly 1,000 links to manually copy-paste.&lt;/p&gt;

&lt;p&gt;I tried doing it by hand for about ten minutes before realizing I'd be there all week. So, I did what any developer would do: &lt;strong&gt;I automated it&lt;/strong&gt;.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/WaseemAldemeri" rel="noopener noreferrer"&gt;
        WaseemAldemeri
      &lt;/a&gt; / &lt;a href="https://github.com/WaseemAldemeri/roadmap-to-notebooklm" rel="noopener noreferrer"&gt;
        roadmap-to-notebooklm
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Populate Google NotebookLM with learning resources from any roadmap.sh roadmap — one notebook per topic, ready for AI-generated     podcasts, flashcards, and quizzes.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;roadmap-to-notebooklm&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Automatically populate &lt;a href="https://notebooklm.google.com" rel="nofollow noopener noreferrer"&gt;Google NotebookLM&lt;/a&gt; with learning resources from any &lt;a href="https://roadmap.sh" rel="nofollow noopener noreferrer"&gt;roadmap.sh&lt;/a&gt; roadmap.&lt;/p&gt;

  
    

    &lt;span class="m-1"&gt;roadmap-to-notebooklm.mp4&lt;/span&gt;
  

  

  


&lt;p&gt;The pipeline extracts every topic from a roadmap, finds the community-curated YouTube videos and articles linked to each one, creates a dedicated NotebookLM notebook per topic, and uploads all the sources into it. Once your notebooks are loaded, a small CLI lets you fuzzy-search through them and fire off study material generation (podcasts, flashcards, quizzes, etc.) in bulk — without copy-pasting prompts everywhere.&lt;/p&gt;
&lt;p&gt;Notebook creation and source ingestion is automated using &lt;a href="https://github.com/nazrulworld/notebooklm-py" rel="noopener noreferrer"&gt;notebooklm-py&lt;/a&gt;, a community-built Python package for the NotebookLM API.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Defaults to the Backend roadmap.&lt;/strong&gt; To use it with any other roadmap.sh roadmap, see the &lt;a href="https://github.com/WaseemAldemeri/roadmap-to-notebooklm#configuration" rel="noopener noreferrer"&gt;Configuration&lt;/a&gt; section.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;roadmap.sh GitHub repo
        │
        ▼
 get_resources.py        ← scrapes topics + resource links → &amp;lt;roadmap&amp;gt;_resources.json
        │
        ▼
 create_notebooks.py     ← creates one NotebookLM notebook per topic, uploads all sources
        │
        ▼
 generate_study_material_for_notebook.py   ← interactive CLI to generate study&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/WaseemAldemeri/roadmap-to-notebooklm" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Seeing it in Action
&lt;/h2&gt;



&lt;p&gt;&lt;a href="https://notebooklm.google.com/notebook/09feeef9-b604-46b5-84dc-e6d49e64ee6f" rel="noopener noreferrer"&gt;Example of a generated notebook about gRPC&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built the Bridge
&lt;/h2&gt;

&lt;p&gt;I wanted a simple, three-stage pipeline that didn't over-engineer the problem. I used a community-built wrapper called &lt;a href="https://github.com/teng-lin/notebooklm-py" rel="noopener noreferrer"&gt;notebooklm-py&lt;/a&gt; to handle the heavy lifting with Google's internal API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqgzkx284tbpwlfdrsyh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqgzkx284tbpwlfdrsyh.png" alt="Image Top down graph of the process flow" width="548" height="888"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Scraper (&lt;code&gt;get_resources.py&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;First, I needed the data. I targeted the open-source repo behind roadmap.sh. The script recursively digs through their JSON structures and markdown files to find every curated YouTube video and article link.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The Heavy Lifting (&lt;code&gt;create_notebooks.py&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;This is where the magic happens. The script logs into NotebookLM (reusing a local session) and:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates a dedicated notebook for every single topic.&lt;/li&gt;
&lt;li&gt;Generates a "context" markdown file so the AI knows &lt;em&gt;why&lt;/em&gt; it's looking at these links.&lt;/li&gt;
&lt;li&gt;Uploads the resources automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note: Google doesn't love it when you create 130 notebooks in 2 seconds, so I added some deliberate &lt;code&gt;asyncio.sleep&lt;/code&gt; pauses to keep things civil.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Interactive CLI (&lt;code&gt;generate_study_material.py&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Since you can't (and shouldn't) generate 130 podcasts at once, I built a snappy CLI. It uses &lt;code&gt;InquirerPy&lt;/code&gt; for &lt;strong&gt;fuzzy searching&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When I want to study "Redis" or "gRPC," I just type a few letters, select the topic, and hit Enter. The script triggers the generation on Google's servers, and by the time I've grabbed a coffee, my study materials are ready.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;I've learned more in the last few weeks using this setup than I have in months of "doom-scrolling" documentation.&lt;/p&gt;

&lt;p&gt;If you want to set this up for yourself (it works for Frontend, DevOps, or any other roadmap too), check out the &lt;a href="https://github.com/WaseemAldemeri/roadmap-to-notebooklm" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Originally published at &lt;a href="https://dmeiri.dev/blog/roadmap-to-notebooklm/" rel="noopener noreferrer"&gt;demeri.dev&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>automation</category>
      <category>notebooklm</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
