← Projects

Palo

Chrome extension for YouTube chat, summaries, and timestamped answers.

Fall 2024 · AI tooling · Active project

Historical November 2024 Chrome Web Store listing screenshot for Palo - Youtube AI Chat Assistant, with a Featured badge, website link, rating and user counts from that snapshot, promo video thumbnail, and feature screenshots
A November 2024 snapshot of Palo's Chrome Web Store listing.

Stack

Stack: Manifest v3 · JavaScript · Gemini · ExtPay · GitHub Pages

Chrome extension — the content script handled the YouTube page and sent messages to the service worker for extension-level work. Transcript access depended on an external source.

Log

  1. Sep 2024 — the pain

    Drowning in video content. Finding the right video is only half of it; for me, locating the one specific minute inside it was the hard part. Scrubbing, skimming, pausing, repeating. The next thing I built had to make that motion easier.

  2. Spring 2024 — ClipChat, the first attempt

    Simple chat interface inside YouTube, powered by an LLM, answers questions from the transcript. Built it for APUSH note-taking. The early concept lived on grid paper before it lived in code.

    ClipChat hand-drawn early wireframe — Heimler's History video header at top, then a hand-drawn box labeled 'input box' with a circled 'send' button, and below that a chat thread labeled 'words word words' with a wavy 'Assistant Response' and a 'reply' button to a 'Previous chat'
    Spring 2024 sketch: a chat box sketched directly under YouTube.
  3. Spring 2024 — why ClipChat didn't work

    The UI/UX was clunky. Searching inside the video wasn't intuitive or effective for me, and ClipChat did not yet have a clear product loop. I shelved it.

    Historical ClipChat collage — a YouTube page where the assistant cannot access the transcript, the ClipChat TikTok profile, and a TikTok analytics panel; visible counts belong to the original snapshots
    Historical ClipChat and launch-channel snapshots from the first attempt.
  4. Summer 2024 — sketching v2 on grid paper

    Different modes, better searching, better interface. A sidebar that didn't fight the YouTube layout, with a 'chat' tab and a 'search' tab that returned timestamped results.

    ClipChat v2 wireframe on grid paper — APUSH Unit 3 Review video at top, then a hand-drawn sidebar with 'chat' and 'search' tabs, blue notes pointing to 'Changes Modes Chat or Search', sketched assistant/user bubbles annotated 'summarizes the text' and 'outputs bullet point notes', and a Search tab below showing results like '02:41 text contents...' and '19:37 some more text contents...'
    Summer 2024 sketch: search results tied to timestamps.
  5. Nov 2024 — Palo, the rewrite

    Instant summaries, ask questions, jump to key moments — all without leaving the YouTube interface. Same APUSH Unit 4 video as before, but this time the assistant tells me the Louisiana Purchase was a big win for America that put Jefferson in a constitutional bind, and hands me [02:19] as a link.

  6. Nov 2024 — three things in a trench coat

    Palo brought together the YouTube page, a transcript source, and Gemini. The content script added the sidebar; when I asked a question, Palo sent the video transcript and question to Gemini to generate a response.

  7. Nov 2024 — anatomy of a Chrome extension

    manifest.json holds the metadata — name, version, permissions, and file list. The content script handled the YouTube page and sent messages to the extension service worker for extension-level work. The project also had a guide.html, options.html for settings, and plans.html for the paid tier.

    Dark-themed file explorer of the PALO 2 directory — a scripts folder plus google-analytics.js, content.js, ExtPay.js, guide.html, guide.js, logo assets, manifest.json, options.html, options.js, plans.html, plans.js, service-worker.js, and seven step guide images
    November 2024 project snapshot: content script, worker, options, plans, guide, and assets.
  8. Nov 2024 — the prompt

    The Gemini prompt paired the video transcript with metadata, the running chat, and the user's question. It also set the response style and asked Gemini to format timestamps as [mm:ss]. That gave the answer a way back to a specific moment in the video.

    Dark-themed code editor showing a JavaScript template literal called format_prompt — pseudo-XML tags <system_prompt>, <output_style>, <timestamp_guide>, <timestamp_formatting>, <video_metadata>, <video_transcript>, <chat_history>, <user_message> — inside, instructions to keep responses short and conversational and to format every timestamp as [mm:ss]
    November 2024 prompt snapshot: transcript and question sent to Gemini together.
  9. Nov 2024 — making timestamps clickable

    A regex .replace finds every [mm:ss] in the assistant's response, converts it to total seconds, and rewrites it as an <a> with an onclick that grabs the page's <video> element and sets video.currentTime. A second .replace chain converts asterisks and \n into <strong>, <em>, <br>. The output is a chat bubble where every cited time is a real link into the video.

    Dark-themed code screenshot showing JavaScript response.replace logic for [mm:ss] timestamps — it calculates total seconds, builds a YouTube URL, emits a clickable message-timestamp anchor that sets video.currentTime, then converts bold, italic, and newline markdown into HTML
    November 2024 code snapshot: response timestamps became jumps in the video.
  10. Nov 2024 — background message listeners

    service-worker.js became the control room: analytics events, tab reloads, paid-user checks through ExtPay, Stripe opens, quota resets, and options/plans routing all lived behind one message listener. The content script handled the page; the worker handled extension-level routing and services.

  11. Nov 2024 — Chrome Web Store upload

    The listing for 'Palo - Youtube AI Chat Assistant' had an icon, website, promo video, feature screenshots, and a Featured badge. The screenshot preserves how the public listing looked in November 2024.

    Historical November 2024 Chrome Web Store listing for Palo - Youtube AI Chat Assistant with a Featured badge, website link, rating and user counts from that snapshot, promo video thumbnail, and feature screenshots
    November 2024 snapshot of the listing; visible counts are from that moment.
  12. Oct 2024 — the landing page

    paloai.github.io. Blue curved header, the Palo logo and bird mark, a row of yellow stars, a white 'Install on Chrome' button next to a blue 'Learn More'. Below that, a screenshot of the extension on a 'Why is this number everywhere? 37' video.

  13. Oct 2024 — getting the word out

    Show HN as a high schooler asking for feedback. Product Hunt listing. A Reddit post from a stranger calling Palo 'one of the most useful' YouTube summarizers they'd found. Instagram reels. The @aipalo Twitter account got suspended before it ever pulled traffic — never found out why.

    Historical October 2024 Palo launch collage — Twitter/X account suspended popup, Hacker News post, Instagram profile, Product Hunt listing, platform logos, and YouTube Shorts analytics snapshot
    October 2024 launch snapshots: HN, Product Hunt, Instagram, Shorts, and one suspended X account.
  14. Oct 18, 2024 — the peak

    The Google Analytics chart caught a short October spike on the Chrome extension page. It was a jagged line from zero to strangers actually opening the thing.

    Historical Google Analytics active-user line chart covering late September through early November 2024, with a sharp spike around October 18
    September–November 2024 Google Analytics snapshot of extension-page activity.
  15. Late Oct 2024 — Chrome Stats

    A late-October Chrome Stats snapshot put Palo at 73 users and a 4.83 average rating across 6 ratings. Flat as a pancake (in a good way).

    Late October 2024 Chrome Stats screenshot with a table for user count, average rating, and rating count
    Late October 2024 Chrome Stats snapshot.
  16. Nov 2024 — plans at the time

    The roadmap I sketched was bigger than the shipped product: prompt tuning, provider swaps, a Palo+ subscription through ExtPay, daily quotas, themes, dark/light mode, longer-video support, more languages, smart speed, and cleaner timestamp timelines. Most of it stayed future-tense once transcript access broke.

  17. Summer 2025 — the transcript failure

    The transcript source Palo relied on stopped returning data. The extension began showing a transcript-fetch error, and feedback reports repeated the same issue over the next couple of weeks.

  18. Summer 2025 — transcript recovery

    I tried a few external transcript sources until one started returning usable transcripts to the extension. Summaries and questions worked again, with another external source in the loop.

Gallery

Historical November 2024 Chrome Web Store listing for Palo - Youtube AI Chat Assistant with a Featured badge, website link, counts from that snapshot, promo video thumbnail, and feature screenshot carousel
November 2024 Chrome Web Store listing snapshot.
Historical October 2024 Palo launch collage with a suspended Twitter/X account, Hacker News post, Instagram profile, Product Hunt listing, platform logos, and YouTube Shorts analytics snapshot
October 2024 launch snapshots across HN, Product Hunt, Instagram, and Shorts.
Historical Google Analytics active-user line chart from late September through early November 2024, with a spike around October 18
September–November 2024 Google Analytics snapshot.
Late October 2024 Chrome Stats screenshot with a historical table for users, average rating, and rating count
Late October 2024 Chrome Stats snapshot.

Result

Late Oct 2024 snapshot: 73 users; 4.83 average across 6 ratings

What I learned

Shipping to real users is the part the side projects had been missing — a feedback form full of 'it's been broken for two weeks' hits differently than a localhost console.log. Palo's fragile part was transcript access: it depended on an external source that could stop working. When it did, the same error reached users, and getting back required finding another source. That's a product dependency, even when it looks like plumbing.