Urgent.News

What's breaking now, across thousands of outlets.

AI

[AI in Practice] Deploying Song Lingo to Cloud Run: Making a Private Lyrics Website Just for Me

Recap In the previous post , I used Gemini 3.8 Flash TTS to build Song Lingo: you paste a YouTube MV URL, Gemini transcribes the lyrics, adds furigana, translation, and grammar notes, and then a teacher designed via voice design reads it to you line by line. It has only ever run on my own computer, but I want to be able to use it on my phone. So the goal of this post is simple: Move it to Cloud…

In the previous post, the author used Gemini 3.8 Flash TTS to build Song Lingo, a website that pastes a YouTube MV URL and transcribes the lyrics, adds furigana, translation, and grammar notes, and reads it line by line using a teacher designed via voice design. The website has only run on the author's computer, but the goal of this post is to move it to Cloud Run so it can be used on mobile.

The author acknowledges that the website contains full lyrics and translations, and moving it public has two practical consequences: copyright and cost. To ensure the website remains private and only accessible to the author, they compared two solutions: using IAP + In-app Verification and no external access, using gcloud run services proxy.

They chose the former solution because it allows for a login function and ensures that only the author's account can access the lyrics and APIs at every layer, from start to finish. The author initially planned to use signed URLs to store audio files in GCS and generate short-lived signed URLs for playback, but they realized this was a vulnerability.

Instead, they decided to read the audio files directly through Cloud Run and send them to the browser, with IAP and in-app verification in place before playback. This extra hop adds negligible traffic cost. The architecture consists of a single container image containing both Node 22 and Python, with the song data and audio stored in a private Cloud Storage bucket mounted as the /data folder.

The API key is provided as an environment variable, and access control is enforced using IAP and in-app verification. The author uses four layers of protection: Cloud Run permissions, IAP, in-app verification, and a private bucket. Any failure in these layers prevents access, even if the others hold.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in AI

Behind EcoPrompt: How I modeled the hidden physical cost of AI prompts (Zero Telemetry)

GenAI web interfaces (ChatGPT, Gemini, Claude) are pristine, minimal, and fast. But behind every single prompt lies a massive array of GPU clusters consuming real electricity, requiring evaporative…

  • EcoPrompt tracks physical costs of AI prompts, including water, energy, and carbon emissions.
  • Extension uses peer-reviewed research and industry data to calculate environmental impact.
  • EcoPrompt ensures user privacy with zero telemetry, client-side processing, and local storage.

Fixing Bedrock ToolResult Ordering Errors

A tool executed successfully, but Bedrock rejected the next message because toolResult IDs did not match the preceding toolUse order. INC-004 is easy to create when tools run in parallel.

[AI in Practice] Gemini 3.8 Flash TTS Launch: I built a "Learn Japanese with MVs" Web App and burned through my daily quota.

Recap Every time I see a new Gemini feature, my first thought is "Can I connect it to my LINE Bot?" The Gemini API release notes from 9/22 stated that Gemini 3.8 Flash TTS and Gemini 3.8 Flash-Lite…

  • Gemini 3.8 Flash TTS and Flash-Lite TTS models officially launched on September 22
  • Developed web app using MVs to teach Japanese with pronunciation guidance
  • Utilized Gemini 3.8 Flash TTS for natural-sounding voices and voice replication

[AI in Action] Gemini Agentic Video: 4 Hidden Prerequisites and My LINE Bot Integration Process

Background I have a LINE Bot that I use every day, linebot-helper-python . If you send it a URL, it returns a summary and social media copy for four platforms; if you send a YouTube link, it returns a…

  • apiversion must be set to v1beta1 for agentic video to work
  • mediaprocessing must be set to AGENTIC for agentic mode activation
  • model must be gemini-3.7-flash, gemini-3.6-flash, or gemini-3.5-flash-lite

More from Saturday 26 September →