Find out whether a page of yours exists at all
Copy the address of your most recent episode, the one you'd send somebody. If it's on podcasts.apple.com, on open.spotify.com, or on your podcast host's share domain, you don't have an episode page. You have a listing on somebody else's site. That's the whole problem, and nothing further down this page fixes it until that changes.
The transcripts Apple and Spotify already make for you don't count, because they never reach the open web. Apple's live inside the app: touch and hold a podcast episode, then tap View Transcript, which needs iOS 17.4 or later, and a listener can select and copy up to 200 words. Spotify's show up in the Now Playing View and on episode pages in the Spotify mobile app. Fetch either company's public web page for your show and the transcript text simply isn't in it.
If you do already have episode pages on your own domain, test one before you build anything new. Request it with a plain HTTP GET, no browser, and grep the response for a distinctive sentence from the middle of the episode. Present means this part of the job is done and you can skip to letting the crawlers in. Absent means the transcript is being injected client-side, and you're relying on a rendering behavior none of these vendors has committed to.
Publish one page per episode on a domain you own
One episode, one page, one stable URL. The page's main purpose is that single conversation, not your archive, not a player embed, not a share link that redirects somewhere else. Point the link element inside that episode's RSS item at it, so every app and every crawler reading your feed has an address that belongs to you.
Google publishes exactly three technical requirements for a page to be eligible for indexing: Googlebot isn't blocked, the page returns an HTTP 200 status code, and the page has indexable content. Two of those are a hosting question you can settle in a minute. The third is the entire rest of this guide.
Google's guidance for video says the same thing in the analogous case, and it's worth reading before you assume a page is enough: the watch page must be indexed, and the indexed watch page must be performing well in Search before its video can be considered for indexing. A page that exists is the floor here, not the finish line.
Put the whole transcript in the page's HTML
This is the step that does the work, and it's the one people skip. Google indexes text-based files and certain encoded documents, and the media formats it lists are images and video. No audio format appears anywhere on that list. Not MP3, not M4A, not WAV. An audio enclosure in an RSS feed has no textual content to index, so the transcript is the only thing that converts your episode into something a crawler can hold.
Render it as text in the body of the page, from the server. Not a linked VTT file, not a downloadable PDF, and not a panel that loads when somebody clicks it. If a plain HTTP GET returns the words, you're done. If it takes a browser to see them, you've built the same invisible thing you started with.
Then build the human layer around it, because a wall of raw text clears the bar and still isn't worth citing. Episode title, a real summary, guest names and what they actually do, timestamps, topic headings, and links to whatever was discussed. That's what makes the page answer a question instead of merely containing words.
Get a transcript worth publishing
The fastest honest route is to export the machine transcript your platform already made and fix it. In Spotify for Creators: log in at creators.spotify.com, go to Episodes, select an episode and click Details, find Transcripts and click Edit, then click Download above the transcript to get a VTT file. Edit it on your machine, then Upload transcript, Select a file, and Save.
Two limits Spotify states on that page and one trap. The file has to be VTT or SRT, the maximum size is 5MB, and timestamps are required or the transcript won't sync during playback. The trap: if you upload your own transcript, it'll be replaced if you enable auto-generated ones. Decide which one you want and leave the toggle alone afterwards.
If Apple is your source instead, know the boundary before you plan around it. Apple's automatic transcripts cover English, Danish, Dutch, Finnish, French, German, Italian, Norwegian, Portuguese, Spanish and Swedish, and private RSS feeds aren't processed at all, so nothing is generated for episodes that aren't in the Apple Podcasts catalog.
Whatever the source, read it before you publish it. YouTube's warning about its own automatic captions is the right standard for all of them: they might misrepresent the spoken content due to mispronunciations, accents, dialects, or background noise, and you should always review them and edit any parts that haven't been properly transcribed. Raw speech recognition output published unedited puts a misspelled guest name into the sentence an assistant repeats about you.
Let the answering crawlers in
Check your robots.txt against the named agents one at a time, not as a group: OAI-SearchBot for ChatGPT search, Claude-SearchBot and Claude-User for Claude, PerplexityBot for Perplexity, and Googlebot for Google. OpenAI's wording is blunt: sites that are opted out of OAI-SearchBot will not be shown in ChatGPT search answers, though can still appear as navigational links. Check your CDN and your firewall rules too, more than the file.
Blocking a training crawler is not the same as blocking a search crawler, and sites get this backwards constantly. GPTBot and ClaudeBot collect content for model training. OAI-SearchBot and Claude-SearchBot are the ones that put you in an answer. A blanket AI block added in a hurry usually cuts off the surface you actually wanted to be on.
For Google specifically, the control for Search and its AI features is Googlebot, and Google-Extended is a separate lever covering training and grounding in Google's other systems. Allow Googlebot if you want to be in AI Overviews and AI Mode. And give a robots.txt change a day before you judge it: OpenAI says it can take roughly 24 hours from an update for its systems to adjust, and Perplexity says the same.
Add the tag to your feed, then stop adding things
The RSS tag is podcast:transcript, and it goes on each item. Its spec requires two attributes, url and type, where type is a mime type such as text/plain, text/html, text/vtt, application/json or application/x-subrip. Language and rel are optional, and multiple tags per episode are allowed, so you can point one at your episode page as text/html and another at a VTT file.
This is what makes Apple use your transcript instead of its own. Apple ingests it via your RSS feed and accepts VTT or SRT, and it says providing a VTT file is what lets you identify every speaker with each line. Change the show-wide default in the Availability tab on your show page in Apple Podcasts Connect. To override a single episode, open the episode, go to Audio and Transcripts, select the episode media and click Edit, then on the Episode Transcript Availability screen choose Use a custom setting for this episode, set it to Display transcripts I provide, and click Save. In Spotify for Creators the equivalent is Settings, then Transcripts, then the Distribute transcripts across other platforms via RSS toggle, then Save.
Be clear about what that tag buys, though. It serves podcast apps and Apple. No AI vendor documents reading it, so ship it for your listeners and don't expect it to do the transcript page's job.
Then stop. Google's line is that you don't need to create new machine readable files, AI text files, or markup to appear in these features, and there's no special schema.org structured data that you need to add. The podcast surface is gone too: Google's podcast structured data page now returns a 404, and Podcast is absent from its structured data gallery. Any advice telling you to add Podcast markup for a rich result is describing something that no longer exists.
If it still isn't showing up
Work it in this order. First, confirm the page is indexed in Google at all, using the URL Inspection tool in Search Console. Google says the bar for AI Overviews and AI Mode is being indexed and snippet-eligible with no additional technical requirements, so a page missing from the index is an ordinary indexing problem, not an AI problem, and that's a different and much older job.
Second, read the page's robots meta tag and its HTTP headers for noindex, nosnippet, and max-snippet. This is the silent one. Google states that nosnippet applies to AI Overviews and AI Mode and will also prevent the content from being used as a direct input for them, and that max-snippet:0 is equivalent to nosnippet. A theme or a host template that sets either leaves your page indexed, ranking, and uncitable, with nothing on screen to tell you.
Third, re-test robots.txt a day after you changed it rather than the same afternoon. If everything above is clean and assistants still don't surface the show, the gap is the pages themselves and not the plumbing: thin ASR walls with no summary, no headings, no guest identification and no internal links get indexed and still don't get quoted.
Say plainly what this doesn't do. It doesn't move your Apple or Spotify chart position, it doesn't change your download numbers, and it doesn't oblige any assistant to cite you. Nobody publishes a time to first citation, and no primary source states one, so treat any promised date as invented. What it does is stop the honest answer to why you're invisible being that there was nothing there to read.