When I first started my podcast, I was entirely focused on the creative side. I loved researching topics, setting up the microphones, and having deep conversations with guests. But a few episodes in, I hit a wall. The post-production admin was quietly draining my energy. Transcribing the audio, writing structured show notes, brainstorming clickable (but honest) titles, and pulling SEO keywords was taking me nearly three hours per episode. I was burning out before the episode even went live. So I decided to build something.
The Hidden Cost of Podcast Admin
The problem with podcast post-production isn't just that it takes time; it's the context switching. You go from being a creative, empathetic host to an analytical, detail-oriented producer in a matter of minutes.
If you ignore this admin work, the cost is high. Poorly formatted show notes hurt your SEO, and weak titles mean your episodes get buried in directories. But if you do it all manually, you're spending your limited creative bandwidth on rote tasks. The podcasting community is full of creators who stop publishing not because they ran out of ideas, but because the operational overhead became too heavy. I needed a way to automate the tedious parts without losing the human touch, and I wanted to build it using modern, efficient architecture.
Building the Pipeline on the Edge
I decided to build PodCrisp, a suite of AI podcast tools. For the architecture, I chose Cloudflare Workers. Running AI inference at the edge means low latency, no cold starts, and the ability to process data closer to the user.
The first major hurdle was prompt engineering for the title generator. You can't just ask an LLM to "give me a title." It will give you generic, boring results. You need to enforce constraints.
// Prompt engineering for podcast title generation
function buildTitlePrompt(topic, tone, count) {
return {
system: `You are an expert podcast producer. Generate compelling titles.
Rules:
- 5-10 words each
- Use curiosity gaps, numbers, or strong hooks
- Match the tone: ${tone}
- No clickbait that overpromises
- Format as numbered list`,
user: `Episode topic: ${topic}
Generate ${count} title options that make someone want to click play.`
};
}
// Example: generate 5 titles for a bootstrapping episode
const prompt = buildTitlePrompt(
"How to start a podcast with zero budget",
"inspirational",
5
);
By explicitly defining the rules in the system prompt—like enforcing a 5-10 word limit and banning overpromising clickbait—the output quality improves dramatically. The tone variable is particularly useful; shifting from "professional" to "inspirational" completely changes the hook structure the AI generates.
The second, and more complex, part of the pipeline was the show notes generator. Podcast transcripts are messy. They have filler words, tangents, and no natural formatting. We needed to convert this raw text into a structured format that podcasters can actually paste into their CMS.
// Show notes generation pipeline (Cloudflare Workers + AI)
export default {
async fetch(request, env) {
const { transcript } = await request.json();
// Call AI model for structured show notes
const response = await env.AI.run('@cf/meta/llama-3-8b-instruct', {
messages: [
{
role: 'system',
content: `Convert podcast transcripts to show notes:
## Episode Summary (2-3 sentences)
## Key Takeaways (5-7 bullet points)
## Timestamps (estimate from content flow)
## Resources Mentioned`
},
{ role: 'user', content: transcript }
],
max_tokens: 800,
});
return new Response(JSON.stringify(response), {
headers: { 'Content-Type': 'application/json' },
});
},
};
In this Cloudflare Worker, we pass the raw transcript to Llama 3 8B. The magic here is the system prompt. By forcing the AI to output specific markdown headers (Summary, Takeaways, Timestamps, Resources), we ensure consistency. I chose the 8B model because it offers a great balance of instruction-following capability and speed, which is critical when processing a 3,000-word transcript.
I also added SEO keyword suggestions and an episode script outline generator to the suite, using similar structured prompting techniques to ensure the output is immediately actionable.
Practical Results and Lessons Learned
What worked exceptionally well was the structured show notes generator. It completely changed my workflow. What used to take 45 minutes of re-listening to the audio and typing out bullet points now takes about 10 seconds of generation and 5 minutes of light editing. The edge deployment means the UI feels instant, even when handling large context windows.
What surprised me was how much the "tone" parameter in the title generator mattered in practice. I initially thought tone was just a cosmetic change, but it fundamentally alters the psychological hooks the AI uses. An "educational" tone relies on clarity and authority, while a "story-driven" tone leans heavily on curiosity gaps.
If I were to change something, it would be the timestamp estimation. Initially, I tried to have the AI generate exact timestamps based on the text flow. But without actual audio alignment, it's essentially just guessing. I realized it's better to be honest, so I adjusted the prompt to just estimate based on content flow, and I advise users to verify them against their actual audio editor.
Try It Yourself
I packaged these tools into PodCrisp because I wanted a reliable, fast way to handle my own podcast admin. If you're struggling with the post-production grind and want to see how this prompt engineering works in practice, you can try the free Podcast Title Generator on the site. It's a good way to test the edge AI pipeline without committing to a full workflow change.
Full disclosure: I'm the developer of PodCrisp. I built this because I needed it myself.
Top comments (0)