<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>notebooklm on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/notebooklm/</link>
    <description>Recent content in notebooklm on S Anand</description>
    <generator>Hugo -- 0.164.0</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 18 Apr 2026 11:26:48 -0400</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/notebooklm/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Derived formats with Gemini</title>
      <link>https://www.s-anand.net/blog/derived-formats-with-gemini/</link>
      <pubDate>Sat, 18 Apr 2026 11:26:48 -0400</pubDate>
      <guid>https://www.s-anand.net/blog/derived-formats-with-gemini/</guid>
      <description>&lt;p&gt;The natural capability of Generative AI is to &lt;em&gt;generate&lt;/em&gt; stuff - and Gemini&amp;rsquo;s particularly good with media.&lt;/p&gt;
&lt;p&gt;For example, we can take any document, like this MasterCard report on &lt;a href=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/report.pdf&#34;&gt;The State of Open Finance 2026&lt;/a&gt;, and generate videos, podcasts, sketchnotes, songs, and more from it.&lt;/p&gt;
&lt;p&gt;How?&lt;/p&gt;
&lt;p&gt;I uploaded the &lt;a href=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/report.pdf&#34;&gt;PDF&lt;/a&gt; to &lt;a href=&#34;https://notebooklm.google.com/notebook/26da8a27-fd08-4c98-b0d5-73fefcb9e1dd&#34;&gt;NotebookLM&lt;/a&gt; and created a 20-minute podcast by clicking on Generate Audio Overview - Deep Dive - English - Default.&lt;/p&gt;
&lt;audio controls preload=&#34;metadata&#34;&gt;
  &lt;source src=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/podcast-english.opus&#34; type=&#34;audio/ogg; codecs=opus&#34;&gt;
  &lt;a href=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/podcast-english.opus&#34;&gt;Listen to the English podcast&lt;/a&gt;
&lt;/audio&gt;
&lt;p&gt;It supports multiple languages, so I generated a Chinese and Filipino version as well.&lt;/p&gt;
&lt;audio controls preload=&#34;metadata&#34;&gt;
  &lt;source src=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/podcast-chinese.opus&#34; type=&#34;audio/ogg; codecs=opus&#34;&gt;
  &lt;a href=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/podcast-chinese.opus&#34;&gt;Listen to the Chinese podcast&lt;/a&gt;
&lt;/audio&gt;
&lt;audio controls preload=&#34;metadata&#34;&gt;
  &lt;source src=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/podcast-filipino.opus&#34; type=&#34;audio/ogg; codecs=opus&#34;&gt;
  &lt;a href=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/podcast-filipino.opus&#34;&gt;Listen to the Filipino podcast&lt;/a&gt;
&lt;/audio&gt;
&lt;p&gt;Clicking on Generate Video Overview - Cinematic led to this video overview:&lt;/p&gt;
&lt;video width=&#34;1280&#34; height=&#34;720&#34; style=&#34;max-width: 100%; height: auto;&#34; controls muted preload=&#34;metadata&#34;&gt;
  &lt;source src=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/video.webm&#34; type=&#34;video/webm&#34;&gt;
  &lt;a href=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/video.webm&#34;&gt;Video&lt;/a&gt;
&lt;/video&gt;
&lt;p&gt;There are other formats in which we can generate videos. The Cinematic format is new, and the list is growing.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s not just NotebookLM that you can use to generate new formats. &lt;a href=&#34;https://gemini.google.com/&#34;&gt;Gemini&lt;/a&gt; itself supports a variety of formats.&lt;/p&gt;
&lt;p&gt;For example, I used my &lt;a href=&#34;https://www.s-anand.net/blog/gemini-sketchnotes/&#34;&gt;Gemini Sketchnote prompt&lt;/a&gt; to create a visual summary of the report:&lt;/p&gt;
&lt;img src=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/sketchnote.avif&#34; alt=&#34;Sketchnote&#34; style=&#34;max-width:100%; aspect-ratio: 16/9&#34;&gt;
&lt;!-- https://gemini.google.com/u/2/app/07dd0450592fc257 --&gt;
&lt;p&gt;&amp;hellip; and, using Lyria via the &amp;ldquo;Create Music&amp;rdquo; option to generate a &lt;a href=&#34;https://www.s-anand.net/blog/singing-a-vote-of-thanks/&#34;&gt;narrative song&lt;/a&gt; with this prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a narrative summarizing this article.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Narrate it rather than sing it.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use a voice like Bobby McFerrin&amp;#39;s, as if he were narrating rather than singing.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Keep the music minimal, focus on the voice.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;audio controls preload=&#34;metadata&#34;&gt;
  &lt;source src=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/song.opus&#34; type=&#34;audio/ogg; codecs=opus&#34;&gt;
  &lt;a href=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/song.opus&#34;&gt;Listen to the narrative song&lt;/a&gt;
&lt;/audio&gt;
&lt;!-- https://gemini.google.com/app/86ea2e84d5dc6fc1 --&gt;
&lt;p&gt;Next, I had &lt;a href=&#34;https://gemini.google.com/share/5dc1b824ea7b&#34;&gt;Gemini create a slide deck&lt;/a&gt; by uploading the report and prompting:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Convert the attached report into a beautiful slide deck that conveys the most important actionable information for the audience.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;STYLE:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write it McKinsey style with action titles. Just reading the titles should give the audience the entire message of the deck.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Follow the pyramid principle. The contents of the slide should prove the title.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Make the slides content rich, i.e. clear and self-explanatory with enough detail to help the audience understand without a narrator.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use iconography, typography, stock images, etc. as appropriate.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write as a single page HTML application.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/slides.html&#34;&gt;&lt;strong&gt;See the slides&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;iframe src=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/slides.html&#34; style=&#34;max-width:100%; aspect-ratio: 16/9&#34; frameborder=&#34;no&#34;&gt;&lt;/iframe&gt;
&lt;!-- https://gemini.google.com/app/43707ed666c59b5c --&gt;
&lt;p&gt;Then, a set of &lt;a href=&#34;https://gemini.google.com/share/7342906e979a&#34;&gt;interactive explainers&lt;/a&gt; using this prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Convert this report into 3 interactive explainers.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Pick the parts of the report that are best conveyed through interactive explanations. Identify the 3 most suitable ones.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Each explainer should, using animations, interactions, and simulations, explain a core point made in the report.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Render this as a single page HTML canvas.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/explainers.html&#34;&gt;&lt;strong&gt;See the explainers&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;iframe src=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/explainers.html&#34; style=&#34;max-width:100%; aspect-ratio: 16/9&#34; frameborder=&#34;no&#34;&gt;&lt;/iframe&gt;
&lt;!-- https://claude.ai/chat/6b5b3449-8a83-4660-9e97-796245ff521d --&gt;
&lt;p&gt;Finally, a &lt;a href=&#34;https://claude.ai/share/5d41d995-3658-4a9e-82d4-8ef1fb10cf6d&#34;&gt;narrative data story using Claude&lt;/a&gt; &amp;ndash; which I could do with Gemini, too, but Claude is better at.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/story.html&#34;&gt;&lt;strong&gt;See the story&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;iframe src=&#34;https://files.s-anand.net/blog/2026-04-18-derived-formats-with-gemini/the-state-of-open-finance-2026/story.html&#34; style=&#34;max-width:100%; aspect-ratio: 16/9&#34; frameborder=&#34;no&#34;&gt;&lt;/iframe&gt;
&lt;hr&gt;
&lt;p&gt;Where this is becomes practical is in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Proposals&lt;/strong&gt;. No one pays attention to that company slide or RFP response. A 3-min video or 15-min podcast lets them absorb it during a walk.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reviews&lt;/strong&gt;. Skip copy-pasting metrics into PowerPoint. Feed the raw data and ask for a McKinsey-style deck with action titles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Onboarding&lt;/strong&gt;. Instead of a 100-page SOP or compliance manual, how about interactive explainers or a localized audio guide in Mandarin or Spanish?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manuals:&lt;/strong&gt; How about a visual sketchnotes or step-by-step interactive flows from that documentation for call center agents?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Case studies.&lt;/strong&gt; Text-heavy fails. Maybe a 60-second narrative data story or sketchnote accompanied an upbeat narrative song?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reports.&lt;/strong&gt; No one reads the 10-page competitor analysis. A 5-minute podcast or a single-page visual sketchnote helps the execs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Training.&lt;/strong&gt; Create interactive simulations where people make &lt;em&gt;actual&lt;/em&gt; decisions. &lt;a href=&#34;https://ragzbuilds.com/simsaram/&#34;&gt;Simsaram&lt;/a&gt; is my favorite example: family relationship training/simulation based on an &lt;a href=&#34;https://en.wikipedia.org/wiki/Samsaram_Adhu_Minsaram&#34;&gt;iconic film&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Emails.&lt;/strong&gt; Why not use illustrations, sketches, flowcharts, etc. to liven up internal / external emails?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When generative AI makes generation easy, why not generate &lt;em&gt;actually interesting&lt;/em&gt; stuff?&lt;/p&gt;
</description>
    </item>
    <item>
      <title></title>
      <link>https://www.s-anand.net/blog/generative-ai-whatsapp-group-podcast/</link>
      <pubDate>Tue, 01 Jul 2025 04:07:38 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/generative-ai-whatsapp-group-podcast/</guid>
      <description>&lt;p&gt;I catch up on long WhatsApp group discussions as podcasts.&lt;/p&gt;
&lt;p&gt;The quick way is to scroll on WhatsApp Web, select all, paste into NotebookLM, and create the podcast.&lt;/p&gt;
&lt;p&gt;Mine is a bit more complicated. Here&amp;rsquo;s an example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use a bookmarklet to scrape the messages &lt;a href=&#34;https://tools.s-anand.net/whatsappscraper/&#34;&gt;https://tools.s-anand.net/whatsappscraper/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Generate a 2-person script &lt;a href=&#34;https://github.com/sanand0/generative-ai-group/blob/main/config.toml&#34;&gt;https://github.com/sanand0/generative-ai-group/blob/main/config.toml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Have &lt;code&gt;gpt-4o-mini-tts&lt;/code&gt; convert each line using a different voice &lt;a href=&#34;https://www.openai.fm/&#34;&gt;https://www.openai.fm/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Combine using &lt;code&gt;ffmpeg&lt;/code&gt; &lt;a href=&#34;https://ffmpeg.org/&#34;&gt;https://ffmpeg.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Publish on GitHub Releases &lt;a href=&#34;https://github.com/sanand0/generative-ai-group/releases/tag/main&#34;&gt;https://github.com/sanand0/generative-ai-group/releases/tag/main&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I run this every week. So far, it&amp;rsquo;s proved quite enlightening.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Podcast: &lt;a href=&#34;https://github.com/sanand0/generative-ai-group/releases/download/main/podcast.xml&#34;&gt;https://github.com/sanand0/generative-ai-group/releases/download/main/podcast.xml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Code: &lt;a href=&#34;https://github.com/sanand0/generative-ai-group&#34;&gt;https://github.com/sanand0/generative-ai-group&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2025-07-01-generative-ai-whatsapp-group-podcast-linkedin.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/feed/update/urn%3Ali%3Ashare%3A7345664356799401986&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Tools to publish annotated talks from videos</title>
      <link>https://www.s-anand.net/blog/tools-to-publish-annotated-talks-from-videos/</link>
      <pubDate>Sun, 20 Oct 2024 07:22:57 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/tools-to-publish-annotated-talks-from-videos/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Tools to publish annotated talks from videos&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/maxresdefault.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/in/arun-tangirala-1712444/&#34;&gt;Arun Tangirala&lt;/a&gt; and I webinared on &amp;ldquo;AI in Education&amp;rdquo; yesterday.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;(PS: &amp;quot;Webinared&amp;quot; is not a word. But &amp;quot;verbing weirds language&amp;quot;.)&#34; loading=&#34;lazy&#34; src=&#34;https://picayune.uclick.com/comics/ch/1993/ch930125.gif&#34;&gt;&lt;/p&gt;
&lt;p&gt;This post isn&amp;rsquo;t about the webinar, which went on for an hour and was good fun.&lt;/p&gt;
&lt;div class=&#34;video-embed&#34;&gt;&lt;iframe src=&#34;https://www.youtube.com/embed/fPvhDOyUPc8&#34; title=&#34;YouTube video&#34; loading=&#34;lazy&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;This post isn&amp;rsquo;t for my preparation for the webinar, which happened frantically 15 minutes before it started.&lt;/p&gt;
&lt;p&gt;This post is about how I created the annotated talk at &lt;a href=&#34;https://github.com/sanand0/ai-in-education-webinar&#34;&gt;https://github.com/sanand0/ai-in-education-webinar&lt;/a&gt; (inspired by &lt;a href=&#34;https://simonwillison.net/2023/Aug/6/annotated-presentations/&#34;&gt;Simon Willison&amp;rsquo;s annotated presentations&lt;/a&gt; process) &amp;ndash; a post-processing step that took ~3 hours &amp;ndash; and the tools I used for this.&lt;/p&gt;
&lt;h4 id=&#34;scrape-the-comments&#34;&gt;Scrape the comments&lt;/h4&gt;
&lt;p&gt;The Hindu used &lt;a href=&#34;https://streamyard.com/&#34;&gt;StreamYard&lt;/a&gt;. It web-based and has a comments section. I used JS in the &lt;a href=&#34;https://developer.chrome.com/docs/devtools/console&#34;&gt;DevTools Console&lt;/a&gt; to scrape. Roughly, &lt;code&gt;$$(&amp;quot;.some-class-name&amp;quot;).map(d =&amp;gt; d.textContent)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;But the comments are not all visible together. As you scroll, newer/older comments are loaded. So I needed to use my favorite technique: &lt;a href=&#34;https://www.s-anand.net/blog/cyborg-scraping/&#34;&gt;Cyborg Scraping&lt;/a&gt;. During Q&amp;amp;A, I kept scrolling to the bottom and ran:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// One-time set-up
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;messages&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Run every now and then after scrolling to the bottom
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Stores all messages without duplication
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.some-class-name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;map&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;textContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Finally, copy the messages as a JSON array to the clipboard
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;copy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([...&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I used VS Code&amp;rsquo;s regular expression search &lt;code&gt;^\d\d:\d\d (AM|PM)$&lt;/code&gt; to find the timestamps and split the name, time, and comments into columns. &lt;a href=&#34;https://code.visualstudio.com/docs/editor/codebasics#_multiple-selections-multicursor&#34;&gt;Multiple-cursors&lt;/a&gt; all the way. Then I pasted it in Excel to convert it to Markdown. I added this in the &lt;a href=&#34;https://github.com/sanand0/ai-in-education-webinar?tab=readme-ov-file#comments&#34;&gt;Comments in the Chat&lt;/a&gt; section.&lt;/p&gt;
&lt;p&gt;(&lt;strong&gt;Excel&lt;/strong&gt; to convert to Markdown? Yeah. My formula is below.)&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/excel-comments.webp&#34;&gt;&lt;/p&gt;
&lt;h4 id=&#34;transcribe-the-video&#34;&gt;Transcribe the video&lt;/h4&gt;
&lt;p&gt;I downloaded &lt;a href=&#34;https://youtu.be/fPvhDOyUPc8&#34;&gt;the video&lt;/a&gt; using &lt;a href=&#34;https://github.com/yt-dlp/yt-dlp&#34;&gt;yt-dlp&lt;/a&gt;, which I find the most robust tool for YouTube downloads.&lt;/p&gt;
&lt;p&gt;I used &lt;code&gt;ffmpeg.exe -i webinar.mp4 -b:a 32k -ac 1 -ar 22050 webinar.mp3&lt;/code&gt; to convert the video to audio. I use these settings for voice (not music) to get a fairly small MP3 file. I should have used Opus, which is much smaller. I&amp;rsquo;ll do that next.)&lt;/p&gt;
&lt;p&gt;Groq recently added &lt;a href=&#34;https://groq.com/whisper-large-v3-turbo-now-available-on-groq-combining-speed-quality-for-speech-recognition/&#34;&gt;Whisper Large v3&lt;/a&gt; (which is better than most earlier models on transcription.) So I could just go to the &lt;a href=&#34;https://console.groq.com/playground&#34;&gt;Groq playground&lt;/a&gt; and upload the MP3 file to get a transcript in a few seconds.&lt;/p&gt;
&lt;h4 id=&#34;add-images-to-the-transcript&#34;&gt;Add images to the transcript&lt;/h4&gt;
&lt;p&gt;I wrote a tool, &lt;a href=&#34;https://github.com/gramener/videoscribe&#34;&gt;VideoScribe&lt;/a&gt; (WIP), to make transcription and image insertion easy. It uses &lt;code&gt;ffmpeg -i webinar.mp4 -vf select=&#39;key&#39;,showinfo -vsync vfr -compression_level 10 &amp;quot;%04d.jpg&amp;quot;&lt;/code&gt; to extract all keyframes (images with major changes) from the video and inserts them into the right spots in the transcript.&lt;/p&gt;
&lt;p&gt;I picked 36 out of the ~700 that were generated as representing new slides, questions, or key moments and exported it as Markdown. I also used VS Code &lt;a href=&#34;https://code.visualstudio.com/docs/editor/codebasics#_multiple-selections-multicursor&#34;&gt;Multiple Cursors&lt;/a&gt; to link the images to the right timestamp on YouTube.&lt;/p&gt;
&lt;h4 id=&#34;clean-up-the-transcript&#34;&gt;Clean up the transcript&lt;/h4&gt;
&lt;p&gt;Up to here was mostly automated. This step took me an hour, though. I copied chunks of transcripts, passed it to Claude 3.5 Sonnet via Cursor with this prompt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Clean up this webinar transcript segment. Make minimal modifications fixing spelling, grammar, punctuation, adding &amp;ldquo;quotes&amp;rdquo; where required, and combining into logical paragraphs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is what gave me the bulk of the &lt;a href=&#34;https://github.com/sanand0/ai-in-education-webinar#transcript&#34;&gt;webinar transcript&lt;/a&gt;. (I&amp;rsquo;d like to automate this next.)&lt;/p&gt;
&lt;h4 id=&#34;extract-tools&#34;&gt;Extract tools&lt;/h4&gt;
&lt;p&gt;Many audience members asked for a list of tools we mentioned. So I passed ChatGPT the transcript and asked:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;List all tools mentioned in this webinar&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It listed 12 tools, but I know enough to be sceptical. So&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: Were any tools missed?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ChatGPT&lt;/strong&gt;: No, the list covers all the tools mentioned in the webinar as per the transcript. If you noticed any specific tool that I missed, please let me know.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: There WERE a few tools missed. Look closely. (I was bluffing, BTW.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ChatGPT&lt;/strong&gt;: You&amp;rsquo;re right. Upon closer review, here are the additional tools mentioned:&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anand&lt;/strong&gt;: There are a few more that you missed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ChatGPT&lt;/strong&gt;: Got it. Here’s a revised list that should include all the tools mentioned:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That generated the &lt;a href=&#34;https://github.com/sanand0/ai-in-education-webinar#tools&#34;&gt;Tools mentioned in the webinar&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;questions&#34;&gt;Questions&lt;/h4&gt;
&lt;p&gt;There were several questions in the comments. I passed them into my &lt;a href=&#34;https://colab.research.google.com/drive/19uYpWrvc1FIAYo2FVKwsLgFGntmYnd_y&#34;&gt;Topic Naming&lt;/a&gt; Colab notebook which clusters them into similar questions (I asked it to pick 40 subtopics) and then further grouped them into higher level topics, and gave names to all of these.&lt;/p&gt;
&lt;p&gt;That created the &lt;a href=&#34;https://github.com/sanand0/ai-in-education-webinar#questions&#34;&gt;list of questions people asked&lt;/a&gt;, in a categorized way.&lt;/p&gt;
&lt;h4 id=&#34;notebooklm&#34;&gt;NotebookLM&lt;/h4&gt;
&lt;p&gt;Next, I pasted the transcript into &lt;a href=&#34;https://notebooklm.google.com/notebook/44782cbd-a954-4f3b-9b32-952d68553498&#34;&gt;NotebookLM&lt;/a&gt; and repeated what our classmate &lt;a href=&#34;https://www.linkedin.com/in/raj-vadigepalli-69ba3b27/&#34;&gt;Rajanikanth&lt;/a&gt; said he did.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;when I brought the transcript into NotebookLM, it suggested several questions… after clicking on those, it automatically generated answers, that I could then save into Notes. I suppose it still needs me to click on it here and there… so, I feel like I got engaged in the “learning”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So I &amp;ldquo;clicked here and there&amp;rdquo; and generated:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sanand0/ai-in-education-webinar#briefing-document&#34;&gt;A Briefing Document&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sanand0/ai-in-education-webinar#detailed-overview&#34;&gt;A Detailed Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sanand0/ai-in-education-webinar#faq&#34;&gt;An FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sanand0/ai-in-education-webinar#study-guide&#34;&gt;A Study Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;hellip; and most importantly, a &lt;a href=&#34;https://notebooklm.google.com/notebook/44782cbd-a954-4f3b-9b32-952d68553498/audio&#34;&gt;very engaging 15 minute podcast&lt;/a&gt;, which is what NotebookLM is famous for.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: &lt;a href=&#34;https://blog.google/technology/ai/notebooklm-update-october-2024/&#34;&gt;NotebookLM now lets you customize your podcast&lt;/a&gt;. I tried it, saying &amp;ldquo;Focus on what students and teachers can take away practically. Focus on educating rather than entertaining.&amp;rdquo; That generated a podcast that, after 5 seconds of listening, felt slightly less entertaining (duh!) so I reverted to the original.&lt;/p&gt;
&lt;h4 id=&#34;publishing&#34;&gt;Publishing&lt;/h4&gt;
&lt;p&gt;I usually publish static content as Markdown on GitHub Pages. The entire content was pushed to &lt;a href=&#34;https://github.com/sanand0/ai-in-education-webinar&#34;&gt;https://github.com/sanand0/ai-in-education-webinar&lt;/a&gt; with GitHub Pages enabled.&lt;/p&gt;
&lt;p&gt;I also created a simple &lt;a href=&#34;https://github.com/sanand0/ai-in-education-webinar&#34;&gt;index.html&lt;/a&gt; that uses &lt;a href=&#34;https://docsify.js.org/&#34;&gt;Docsify&lt;/a&gt; to convert the Markdown to HTML. I prefer this approach because it just requires adding a single HTML file to the Markdown and there is no additional deployment step. The UI is quite elegant, too.&lt;/p&gt;
&lt;h4 id=&#34;simplifying-the-workflow&#34;&gt;Simplifying the workflow&lt;/h4&gt;
&lt;p&gt;This entire workflow took me about 3 hours. Most of the manual effort went into:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Picking the right images (15 minutes)&lt;/li&gt;
&lt;li&gt;Cleaning up the transcript (50 minutes)&lt;/li&gt;
&lt;li&gt;Manually editing the question topics (30 minutes)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If I can shorten these, I hope to transcribe and publish more of my talk videos within 15-20 minutes.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
