I recently finally built something I had wanted for a while: an AI-powered Hacker News podcast that doesn't suffer from that telltale "AI uncanny valley" sound. This is not a brand-new idea. MianTiao has already launched a Hacker News podcast, and tools like NotebookLM can generate podcast-style conversations for free. But after listening to a lot of AI-generated podcasts, I kept feeling that something was missing. The biggest problem is that they do not sound human enough. The conversation often turns into a rigid Q&A, or into the kind of neat, overly helpful exchange that only an AI would produce. Real podcast conversations wander. People interrupt themselves. They jump between ideas. They have personality. Another issue is that many podcasts today feel like they are trying too hard to teach you something. At least for me, that misses the point. Sometimes I do not want a podcast that demands attention or asks me to learn. Sometimes I just want some light background audio while catching up on the news. There was also a more personal reason behind this project. I had been using an app called 「一卒听库」, which offers free AI-generated audiobooks. The content quality is genuinely high, but the listening experience still feels flat because it does not use music or transitions between chapters. That made me wonder whether I could build an AI audio podcast from other sources instead, one with better rhythm, pacing, and an overall better listening experience. In many ways, this project began as a way to test whether that instinct was right. Once I sat down to code, I quickly realized that simply scraping a lot of information and throwing it at a model does not work. Even with complicated prompts, the model tends to focus on completing the task mechanically instead of producing a natural conversation. Massive context windows often lead to "model drift," where the output loses focus and strays from the desired format. So I redesigned the entire workflow for generating each episode:
- Fetch stories from Hacker News, but only collect the title, description, basic content, and comments. I do not fetch every story in full detail.
- Use AI to process each story and generate a topic category, a discussion-worthiness score, a short summary, the key viewpoints in the comments, and a few standout remarks.
- Feed those results into another model to create a “blueprint” for the episode. It selects the 5 or 6 most interesting stories and generates the background, tone, and structure for each segment. Each segment also gets its own discussion style, whether that means a deeper dive, idea wandering, playful disagreement, roasting, or celebration.
- Use that blueprint to generate the intro and outro, then write each segment as its own dialogue. At that stage, the model receives the full story details, comments, viewpoints, and article context it needs.
- Stitch everything together into a full script, generate the voices with Azure TTS, and use ffmpeg to combine the lines, pauses, pacing, and background music so the final result feels closer to a complete podcast. One thing I learned is that the prompt has to stay relatively lean. If the instructions are too strict or too detailed, the model starts copying the examples too literally. That is how you end up with every host saying the same things every episode, like their coffee getting cold or the upstairs neighbors renovating again. After several rounds of iteration, the final output feels much more human-alike and much less like a stiff interview. I deliberately chose a mix of specialized models to keep costs near zero and maintain stability:
| Model | Use |
| gpt-oss-120b | From Cerebras. Fast and stable. Used for blueprint generation and cover prompts. |
| Z-Image-Turbo | Used for cover generation. Nano Banana does not have a stable API yet. |
| LongCat-Flash-Chat | A free model from Meituan, Used to summarize story information. Free and reliable. |
| mistral-3-large | Used for dialogue generation. |
Next steps
- Tone the swearing back in a little, as long as it does not hurt the listening experience.
- Keep tuning the TTS generation. I already adjusted XiaoYa’s voice and fixed some of the vibe-related logic so the speech no longer speeds up unexpectedly.
- Continue refining the prompts so the conversations feel timely and natural.
- Publish to the major podcast platforms.
- In the future, it would be great if the hosts could say things like, “we actually talked about this a few episodes ago.” That probably means the character setup and knowledge base should be updated regularly.