Je leeslijst als dagelijkse podcast, met NotebookLM en n8n
Voor wie meer wil leren dan hij kan lezen. Zo staat er elke werkdag een podcast op maat in je Slack.
Je bewaart artikels, video's en podcasts voor later. Later komt niet. Ik heb het omgedraaid: elke werkdag staat er rond 07:15 een podcast in mijn Slack, gemaakt van wat ik die dag wil leren. Luisteren kan onderweg of bij de koffie.
Deze gids is voor marketingleads, founders en consultants die beter leren via audio dan via een leeslijst, en die niet bang zijn van n8n of een terminal.
Wat erin zit
- De opzet in twee delen, en waarom n8n dit niet alleen kan
- Het script in zes commando's: notebook, bronnen, audio, mp3, versturen
- De host-prompt die het gebabbel schrapt en eindigt met één actie voor vandaag
- De n8n-workflow in vier nodes, met een foutmelding in Slack als het misloopt
- Vijf dingen die bij mij misliepen bij de eerste run, en de fix
Waar mogen we de gids naartoe sturen?
Wat je elke ochtend krijgt
Eén bericht in een Slack-kanaal, met drie dingen:
- Een mp3 die je in Slack zelf afspeelt. Geen app, geen download.
- De ene actie van de dag, in één zin boven de audio.
- De link naar het notebook in NotebookLM. Daar kan je doorvragen over de bronnen of jezelf laten quizzen.
Loopt er iets mis, dan krijg je in hetzelfde kanaal een foutmelding in plaats van een aflevering. Je hoeft dus nooit te gaan zoeken waarom het stil bleef.
Waarom het in twee delen zit
De gewone NotebookLM heeft geen API. n8n kan er dus niet rechtstreeks mee praten. Daarom splits je het werk:
| Deel | Waar het draait | Wat het doet |
|---|---|---|
| Script | Je eigen Mac | Notebook maken, bronnen toevoegen, audio laten genereren, omzetten naar mp3 |
| Workflow | n8n | De mp3 ontvangen via een webhook en afleveren in Slack, of de fout melden |
Het script gebruikt een command-line tool die NotebookLM aanstuurt via je eigen browserlogin. Eerlijk: die tool is niet van Google. Hij kan breken als NotebookLM verandert, en je login verloopt af en toe. Daar is de foutmelding in Slack voor.
Wat je nodig hebt
- Een Google-account met NotebookLM. Gratis volstaat om te starten.
- De
notebooklm-CLI (pakketnotebooklm-py, bij mij versie 0.8.2, geïnstalleerd als tool met uv). Voor de login gebruikt hij een Chromium-venster via Playwright. - ffmpeg, om de audio om te zetten naar mp3.
- Een n8n-instance met een publiek bereikbare webhook.
- Een Slack-bot met een token, toegevoegd als credential in n8n.
- Elke dag één brief in markdown: een bestand met wat je wil leren en de links naar de bronnen.
De brief: je relevantiepoort
De podcast is maar zo goed als de brief. Drie regels houden hem scherp:
- Eén focusbestand. Daarin staat wat je nu wil leren en waarom. Alles wat daar niet bij past, komt niet in de brief. Het doel: alleen wat je dezelfde week kan toepassen. Geen kennis voor op de plank.
- Een vaste vorm. Een titel, één regel "Vandaag toepassen", daarna genummerde inzichten met telkens de link naar de bron. Het script leest die vorm uit: de titel wordt de naam van de aflevering, de regel wordt de samenvatting in Slack, de links worden bronnen in het notebook.
- Geen opvulling op stille dagen. Is er geen relevant nieuws, dan komt het volgende item uit je eigen lijst van bronnen aan de beurt. Wat gebruikt is, wordt afgevinkt, zodat je nooit twee keer hetzelfde krijgt. Is de lijst op, dan zegt de brief dat je lijst aan verversing toe is. Er komt geen algemeen advies in de plaats.
Hoe je de brief maakt, kies je zelf. Bij mij schrijft een geplande AI-taak hem elke werkdag. Met de hand werkt even goed om te starten.
Het script in zes commando's
Het hele script is ongeveer 200 regels Python, maar de kern zijn zes commando's. $NB is het id van het notebook dat het eerste commando teruggeeft.
1. Maak een notebook per dag
notebooklm create "Learning brief 2026-09-18" --json
2. Voeg de brief en de bronlinks toe
notebooklm source add briefs/2026-09-18.md -n $NB --title "Learning brief 18/9" --json
notebooklm source add "https://link-naar-een-bron" -n $NB --json --timeout 90
YouTube-video's, GitHub-repo's en podcastpagina's werden bij mij alle drie aanvaard. Een bron die weigert, slaat het script over. Ik zet een plafond van acht bronnen per aflevering.
3. Wacht tot de bronnen verwerkt zijn
notebooklm source wait $BRON_ID -n $NB --timeout 300
4. Laat de audio genereren
notebooklm generate audio --prompt-file host-prompt.txt -n $NB \
--format deep-dive --length default --language nl_NL \
--wait --timeout 1500 --retry 2 --json
Dit is de trage stap. Reken op ongeveer een kwartier.
5. Download de audio
notebooklm download audio aflevering.m4a -n $NB --force
6. Zet om naar mp3 en stuur naar n8n
ffmpeg -y -loglevel error -i aflevering.m4a -ac 1 -b:a 64k aflevering.mp3
curl -sS -m 120 -X POST "$WEBHOOK" \
-F status=ok -F date=2026-09-18 -F "title=Learning brief 18/9" \
-F "summary=De actie van vandaag" -F "notebook_url=https://notebooklm.google.com/notebook/$NB" \
-F minutes=21 -F "audio=@aflevering.mp3;type=audio/mpeg"
Mono op 64k is ruim genoeg voor twee stemmen en houdt het bestand klein. Dat is nodig, zie verder bij de limieten.
Het script houdt ook een logbestand bij per dag. Daardoor kan het drie dingen die je snel nodig hebt:
--dry-runtoont wat er zou gebeuren en raakt niets aan.--forcemaakt nieuwe audio in het notebook van die dag, zonder een tweede notebook aan te maken.--repoststuurt de bestaande mp3 opnieuw naar n8n, zonder opnieuw te genereren.
Faalt er een stap, dan stuurt het script status=failed met de foutmelding naar dezelfde webhook. Het volledige script kan je hier downloaden. Vul je eigen webhook in en pas de host-prompt aan.
De host-prompt
Zonder instructie praten de twee stemmen van NotebookLM graag rond de pot. Deze prompt houdt ze bij de brief. Vervang de eerste regel door jezelf.
One listener: [wie je bent en wat je dit kwartaal wil bereiken].
They listen to this instead of reading their daily learning brief, so cover the brief fully and in its order.
Open with the single action to apply today. Then take each numbered insight: explain the idea, say any
script word for word, and say how it fits their situation as the brief describes it.
Use the linked sources only to add concrete examples and detail for those insights, not for new topics.
If the brief recommends a full episode, say which one, how long, and which minutes matter.
Close by repeating the one action. No filler, no generic advice, no hype.
Speak Dutch. Keep English marketing and sales jargon in English
and say English scripts and quotes in English first, then give the Dutch version.
Wat elke regel doet:
- Eén luisteraar. De hosts praten tegen jou, niet tegen een publiek.
- De brief in volgorde. Je kan de audio naast de tekst leggen en je vindt alles terug.
- Scripts letterlijk. Staat er in je brief een zin die je in een gesprek wil gebruiken, dan hoor je hem woord voor woord.
- Bronnen enkel voor detail. Anders dwalen de hosts af naar wat zij interessant vinden in de video.
- Openen en sluiten met de ene actie. Dat is wat blijft hangen.
- Jargon in het Engels. Een vertaalde "discovery call" klinkt vreemd en je herkent het woord niet meer.
De n8n-workflow in vier nodes
| # | Node | Instelling die telt |
|---|---|---|
| 1 | Webhook | POST, antwoordt na de laatste node. De mp3 komt binnen als multipart-veld audio. |
| 2 | Edit Fields (Set) | Zet het Slack-kanaal en leest status, datum, titel, samenvatting, notebook-link, minuten en fout uit de body. Bewaart ook de naam van het binaire veld. |
| 3 | IF | Twee voorwaarden: status is ok en er is een binair bestand. |
| 4a | Slack, file upload | Uploadt de mp3 naar het kanaal, met als commentaar de titel, de minuten, de actie van de dag en de link naar het notebook. |
| 4b | Slack, bericht | De andere tak: meldt dat er vandaag geen podcast is, met de fout erbij. |
Het Slack-kanaal staat op één plek, in de Set-node. Verander je van kanaal, dan pas je alleen dat veld aan.
De workflow-code kan je hier downloaden. Het is code voor de n8n Workflow SDK, geen importbestand. Wie de SDK niet gebruikt, bouwt de vier nodes in een paar minuten na vanuit de tabel.
Vijf dingen die bij mij misliepen
1. De login werd niet bewaard. Na notebooklm login meldde notebooklm doctor nog altijd "not authenticated". Het Chromium-venster was dichtgegaan voor de login klaar was. De fix: opnieuw met een schone sessie, en het venster laten openstaan tot je de startpagina van NotebookLM ziet.
notebooklm login --fresh
Blokkeert Google dat venster als onveilige browser, neem dan de cookies over uit je gewone Chrome, waar je al ingelogd bent:
notebooklm login --browser-cookies chrome --account JOUW-GOOGLE-ADRES
macOS vraagt daarbij één keer toegang tot de sleutelhanger. Controleer daarna met notebooklm doctor.
2. De Set-node gooide de mp3 weg. De eerste aflevering strandde in n8n. De node die de velden klaarzet, gaf alleen zijn eigen velden door, en het binaire bestand verdween. De fix in de Set-node: alle invoervelden meenemen, binaire data meenemen aan, en binaire data strippen uit. In de code: includeOtherFields: true, includeBinary: true, stripBinary: false.
3. "Short" gaf 4 minuten. Dat is mager voor een brief met meerdere inzichten. Met lengte "default" werd dezelfde brief 21 minuten. NotebookLM kent alleen kort, standaard en lang. Er is geen tussenmaat.
4. De bot zat niet in het kanaal. Een upload naar een kanaal waar je bot geen lid van is, faalt met not_in_channel. Typ /invite @ plus de naam van je bot in het kanaal. Stuur de aflevering daarna opnieuw met --repost.
5. De Mac sliep op het startuur. Het script draait lokaal, dus je Mac moet wakker zijn. macOS kan hem op werkdagen zelf wekken:
sudo pmset repeat wakeorpoweron MTWRF 06:25:00
Dat werkt alleen met het deksel open, of met de Mac aan de stroom en een extern scherm. Met een dicht deksel op batterij blijft hij slapen, en start alles pas wanneer je hem openklapt.
Instellingen en limieten
| Wat | Wat ik zag | Wat je ermee doet |
|---|---|---|
| Taal | De Nederlandse stemmen klinken Hollands, niet Vlaams | Stoort het, zet de taal dan op Engels |
| Lengte | Kort gaf 4 minuten, standaard 21 | Kies op je ochtend, niet op je ambitie |
| Bestandsgrootte | 21 minuten op 64k mono is 10 MB | n8n aanvaardt standaard tot 16 MB. Het script stopt boven 15 MB en laat de mp3 lokaal staan |
| Timing | De brief kost ongeveer 20 minuten, de audio ongeveer 15 | Start 45 minuten voor je wil luisteren |
| Aantal notebooks | Een gratis account laat maximaal 100 notebooks toe | Eén notebook per dag, dus na een paar maanden oude opruimen |
Eén volgende stap
Automatiseer nog niets. Maak vandaag met de hand één notebook van één brief, plak de host-prompt erin en luister naar het resultaat. Leer je er iets uit dat je deze week toepast, bouw dan het script. Is het antwoord nee, dan ligt het aan de brief, niet aan de techniek.