{"id":336894,"date":"2026-07-20T10:10:48","date_gmt":"2026-07-20T10:10:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/parlato-ai-podcast-generator\/"},"modified":"2026-07-20T10:10:34","modified_gmt":"2026-07-20T10:10:34","slug":"parlato","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/parlato\/","author":23471449,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Parlato \u2013 AI Podcast Generator","header_author":"ambronet","header_description":"Turn WordPress posts into AI podcasts (read-aloud TTS or AI Narrator) with OpenAI or ElevenLabs voices. Bring your own API key, no subscription.","assets_banners_color":"c6d1da","last_updated":"2026-07-20 10:10:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.ambronet.dk\/parlato","header_author_uri":"https:\/\/www.ambronet.dk\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":36,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"giannidk","date":"2026-07-20 10:10:34"}},"upgrade_notice":{"1.0.0":"<p>Initial public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3614533,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3614533,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3614533,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3614533,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3614533,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"Parlato \\u2013 AI Podcast Generator\",\"description\":\"Turn WordPress posts into audio podcasts with OpenAI TTS (BYOK). This preview opens the Parlato settings and ships a sample post so you can see the post-list integration. Generation needs your own OpenAI API key.\",\"author\":\"ambronet\",\"categories\":[\"multimedia\"]},\"landingPage\":\"\\\/wp-admin\\\/admin.php?page=parlato-settings\",\"preferredVersions\":{\"php\":\"8.3\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"features\":{\"networking\":true},\"login\":true,\"steps\":[{\"step\":\"activatePlugin\",\"pluginPath\":\"parlato\\\/parlato.php\"},{\"step\":\"wp-cli\",\"command\":\"wp post create --post_type=post --post_status=publish --post_title='Hello from Parlato' --post_content='This is a sample post. Open the Posts list to find the Parlato row action and generate an audio version with your own OpenAI API key.'\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"parlato\"},\"options\":{\"activate\":true}}]}"}},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3614533,"resolution":"1","location":"assets","locale":"","width":1425,"height":990},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3614533,"resolution":"2","location":"assets","locale":"","width":1425,"height":990},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3614533,"resolution":"3","location":"assets","locale":"","width":1425,"height":990},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3614533,"resolution":"4","location":"assets","locale":"","width":1425,"height":990},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3614533,"resolution":"5","location":"assets","locale":"","width":1425,"height":990}},"screenshots":{"1":"Provider tab \u2014 OpenAI \/ ElevenLabs picker, API key and model","2":"Voice picker with live preview","3":"Podcast AI tab \u2014 Narrator format, voices and script model","4":"Posts list \u2014 \"Generate\" row action and status column","5":"Frontend audio player displayed with a post"}},"plugin_section":[],"plugin_tags":[2353,244365,194533,238,16722],"plugin_category":[56],"plugin_contributors":[260474],"plugin_business_model":[],"class_list":["post-336894","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-elevenlabs","plugin_tags-openai","plugin_tags-podcast","plugin_tags-text-to-speech","plugin_category-social-and-sharing","plugin_contributors-giannidk","plugin_committers-giannidk"],"banners":{"banner":"https:\/\/ps.w.org\/parlato\/assets\/banner-772x250.png?rev=3614533","banner_2x":"https:\/\/ps.w.org\/parlato\/assets\/banner-1544x500.png?rev=3614533","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/parlato\/assets\/icon-128x128.png?rev=3614533","icon_2x":"https:\/\/ps.w.org\/parlato\/assets\/icon-256x256.png?rev=3614533","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/parlato\/assets\/screenshot-1.png?rev=3614533","caption":"Provider tab \u2014 OpenAI \/ ElevenLabs picker, API key and model"},{"src":"https:\/\/ps.w.org\/parlato\/assets\/screenshot-2.png?rev=3614533","caption":"Voice picker with live preview"},{"src":"https:\/\/ps.w.org\/parlato\/assets\/screenshot-3.png?rev=3614533","caption":"Podcast AI tab \u2014 Narrator format, voices and script model"},{"src":"https:\/\/ps.w.org\/parlato\/assets\/screenshot-4.png?rev=3614533","caption":"Posts list \u2014 \"Generate\" row action and status column"},{"src":"https:\/\/ps.w.org\/parlato\/assets\/screenshot-5.png?rev=3614533","caption":"Frontend audio player displayed with a post"}],"raw_content":"<!--section=description-->\n<p><strong>Parlato<\/strong> turns your WordPress posts into audio. Read a post aloud with a single click, or let AI script a narrated podcast monologue and convert it to a natural-sounding MP3. Every file is stored in your Media Library and played back with a lightweight HTML5 player. No third-party embeds, no tracking scripts.<\/p>\n\n<p>Parlato is <strong>bring-your-own-key (BYOK)<\/strong>: you connect your own OpenAI and\/or ElevenLabs account, so there is no Parlato subscription and you pay your providers directly for what you use.<\/p>\n\n<p><strong>Two TTS providers:<\/strong><\/p>\n\n<ul>\n<li><strong>OpenAI<\/strong> \u2014 13 voices (Alloy, Ash, Sage, Echo, Fable, Onyx, Cedar, Nova, Shimmer, Coral, Marin, Ballad, Verse) and models gpt-4o-mini-tts, tts-1-hd and tts-1<\/li>\n<li><strong>ElevenLabs<\/strong> \u2014 premium AI voices loaded live from your account (default voices plus your own cloned\/generated voices), with the eleven_multilingual_v2 and eleven_flash_v2_5 models<\/li>\n<\/ul>\n\n<p><strong>Two ways to generate audio:<\/strong><\/p>\n\n<ol>\n<li><strong>Read aloud (TTS)<\/strong> \u2014 convert the post text straight to speech with a single voice<\/li>\n<li><strong>Narrator<\/strong> \u2014 AI writes an audiobook-style script, then reads it in one voice<\/li>\n<\/ol>\n\n<p>For the Narrator format, Parlato first generates a structured script with an OpenAI GPT model (selectable, with adjustable reasoning effort), then converts that script to audio with the TTS provider and voice you chose.<\/p>\n\n<p><strong>Key features:<\/strong><\/p>\n\n<ul>\n<li>13 OpenAI voices plus your full ElevenLabs voice library<\/li>\n<li>AI script generation with a selectable GPT model and reasoning effort<\/li>\n<li>Voice preview directly from the settings page<\/li>\n<li>Audio saved in your Media Library \u2014 you own your files<\/li>\n<li>Lightweight HTML5 player \u2014 no JavaScript frameworks<\/li>\n<li>Player placed before or after content, or via the <code>[parlato]<\/code> shortcode<\/li>\n<li>Works with posts, pages and public custom post types (configurable)<\/li>\n<li>Optional microphone badge next to post titles in listings, flagging posts that have an audio version<\/li>\n<\/ul>\n\n<p>Both formats \u2014 plain read-aloud TTS and the AI-scripted Narrator podcast \u2014 are fully free: Parlato imposes no generation limit of its own. Usage is subject to your chosen provider's API quotas, rate limits, billing and availability.<\/p>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<ol>\n<li>In <strong>Parlato \u2192 Provider<\/strong>, choose OpenAI or ElevenLabs and enter your API key<\/li>\n<li>Pick a voice and model (and, for podcasts, a script model under <strong>Podcast AI<\/strong>)<\/li>\n<li>Hover a post in the list of an enabled post type and click <strong>Generate<\/strong> in the row actions<\/li>\n<li>The audio player appears automatically on your post<\/li>\n<\/ol>\n\n<h3>External Services<\/h3>\n\n<p>Parlato is a \"bring your own key\" plugin: it does not contact any service on its own and ships with no bundled accounts. It connects to the third-party services below only when you configure an API key and explicitly trigger an action (generating audio, generating a podcast script, loading voices, or playing a preview). API requests include the key entered in settings; the browser preview request described below does not. Parlato sends no data in the background and stores no personal data of its own. You should disclose the use of these services in your site's privacy policy.<\/p>\n\n<h4>OpenAI \u2014 Text-to-Speech<\/h4>\n\n<p>Used when OpenAI is the selected TTS provider, to convert your post text into an MP3 audio file. On each generation Parlato sends the (truncated) text of the post and your OpenAI API key to <code>https:\/\/api.openai.com\/v1\/audio\/speech<\/code>. Data is sent only when you trigger generation for a post.<\/p>\n\n<ul>\n<li>Terms of use: <a href=\"https:\/\/openai.com\/policies\/\">https:\/\/openai.com\/policies\/<\/a><\/li>\n<li>Privacy policy: <a href=\"https:\/\/openai.com\/policies\/privacy-policy\/\">https:\/\/openai.com\/policies\/privacy-policy\/<\/a><\/li>\n<\/ul>\n\n<h4>OpenAI \u2014 Chat Completions (podcast script)<\/h4>\n\n<p>Used for the Narrator podcast format to turn your post into a spoken-style script before audio generation. Parlato sends the post text and your OpenAI API key to <code>https:\/\/api.openai.com\/v1\/chat\/completions<\/code>. Data is sent only when you trigger generation of a Narrator podcast.<\/p>\n\n<ul>\n<li>Terms of use: <a href=\"https:\/\/openai.com\/policies\/\">https:\/\/openai.com\/policies\/<\/a><\/li>\n<li>Privacy policy: <a href=\"https:\/\/openai.com\/policies\/privacy-policy\/\">https:\/\/openai.com\/policies\/privacy-policy\/<\/a><\/li>\n<\/ul>\n\n<h4>ElevenLabs \u2014 Text-to-Speech<\/h4>\n\n<p>Used when ElevenLabs is selected for TTS. On generation Parlato sends the truncated post text and your API key to <code>https:\/\/api.elevenlabs.io\/v1\/text-to-speech\/<\/code>. It calls <code>https:\/\/api.elevenlabs.io\/v1\/voices<\/code> with the key when loading voices. When you click a voice preview, your browser loads audio from the URL returned by ElevenLabs; that host receives standard connection data (IP address and user agent), but no API key or post text. Calls occur only after the corresponding user action.<\/p>\n\n<ul>\n<li>Terms of use: <a href=\"https:\/\/elevenlabs.io\/terms-of-use\">https:\/\/elevenlabs.io\/terms-of-use<\/a><\/li>\n<li>Privacy policy: <a href=\"https:\/\/elevenlabs.io\/privacy\">https:\/\/elevenlabs.io\/privacy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>In your WordPress dashboard go to <strong>Plugins \u2192 Add New Plugin<\/strong><\/li>\n<li>Search for <strong>Parlato<\/strong><\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<li>Go to <strong>Parlato \u2192 Provider<\/strong> in the admin menu<\/li>\n<li>Choose your provider and enter your API key \u2014 <a href=\"https:\/\/platform.openai.com\/api-keys\">OpenAI<\/a> (starts with <code>sk-<\/code>) and\/or <a href=\"https:\/\/elevenlabs.io\/app\/settings\/api-keys\">ElevenLabs<\/a><\/li>\n<li>Pick a voice and click <strong>Save settings<\/strong><\/li>\n<\/ol>\n\n<p><strong>To generate audio for a post:<\/strong>\nOpen <strong>Posts<\/strong>, hover over any post, and click <strong>Generate<\/strong> in the row actions.<\/p>\n\n<p><strong>To display the player manually:<\/strong>\nSet Player position to \"Manual\" and add <code>[parlato]<\/code> anywhere in your post content.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20to%20pay%20for%20a%20parlato%20subscription%3F\"><h3>Do I need to pay for a Parlato subscription?<\/h3><\/dt>\n<dd><p>No. Parlato is free and open-source. You only pay your TTS provider (OpenAI and\/or ElevenLabs) for the API usage you trigger. See <a href=\"https:\/\/openai.com\/api\/pricing\/\">OpenAI pricing<\/a> and <a href=\"https:\/\/elevenlabs.io\/pricing\">ElevenLabs pricing<\/a> for current rates.<\/p><\/dd>\n<dt id=\"how%20do%20i%20show%20the%20microphone%20icon%20next%20to%20post%20titles%3F\"><h3>How do I show the microphone icon next to post titles?<\/h3><\/dt>\n<dd><p>The title badge is off by default. Enable it under <strong>Parlato \u2192 Player \u2192 Title badge<\/strong>. Once on, a small microphone icon appears next to the title of any post that has generated audio, in post listings (home, archives, categories). It is intentionally hidden on the single post's own page, where the audio player is already shown.<\/p><\/dd>\n<dt id=\"how%20many%20ai%20podcasts%20can%20i%20create%3F\"><h3>How many AI podcasts can I create?<\/h3><\/dt>\n<dd><p>As many as you like \u2014 Parlato imposes no generation limit of its own. Both formats \u2014 read-aloud TTS and Narrator \u2014 are free. You only pay your own provider (OpenAI or ElevenLabs) for the API usage, subject to their quotas, rate limits and billing.<\/p><\/dd>\n<dt id=\"how%20do%20i%20get%20the%20api%20keys%3F\"><h3>How do I get the API keys?<\/h3><\/dt>\n<dd><p>For OpenAI, sign in at <a href=\"https:\/\/platform.openai.com\/api-keys\">platform.openai.com<\/a> and click <strong>Create new secret key<\/strong>; make sure billing is enabled. For ElevenLabs, create a key at <a href=\"https:\/\/elevenlabs.io\/app\/settings\/api-keys\">elevenlabs.io<\/a> with <strong>Text to Speech<\/strong> and <strong>Voices (Read)<\/strong> permissions; leave unrelated scopes disabled.<\/p><\/dd>\n<dt id=\"can%20i%20set%20the%20api%20keys%20in%20code%20instead%20of%20the%20settings%20page%3F\"><h3>Can I set the API keys in code instead of the settings page?<\/h3><\/dt>\n<dd><p>Yes. Define them in your <code>wp-config.php<\/code>:<\/p>\n\n<pre><code>define( 'PARLATO_OPENAI_API_KEY', 'sk-...' );\ndefine( 'PARLATO_ELEVENLABS_API_KEY', '...' );\n<\/code><\/pre>\n\n<p>The matching settings field shows as locked when a constant is detected.<\/p><\/dd>\n<dt id=\"how%20long%20can%20the%20audio%20be%3F\"><h3>How long can the audio be?<\/h3><\/dt>\n<dd><p>For read-aloud TTS, Parlato sends as much post text as the selected provider's API accepts per request \u2014 about 4,000 characters with OpenAI, and 10,000 or more with ElevenLabs depending on the model. Only posts exceeding that technical limit are truncated at the nearest sentence boundary, with a short note appended. For the AI Narrator podcast, up to the first ~1,500 words of the post are sent to the AI to write the narration script (developers can change this budget via the <code>parlato_narrator_input_words<\/code> filter).<\/p><\/dd>\n<dt id=\"where%20are%20the%20mp3%20files%20stored%3F\"><h3>Where are the MP3 files stored?<\/h3><\/dt>\n<dd><p>In your WordPress Media Library. Each audio file is a standard attachment linked to the post. You can manage, delete, or download them like any other media file.<\/p><\/dd>\n<dt id=\"will%20regenerating%20overwrite%20the%20old%20file%3F\"><h3>Will regenerating overwrite the old file?<\/h3><\/dt>\n<dd><p>Yes. Regenerating removes the previous MP3 from the Media Library and generates a new one.<\/p><\/dd>\n<dt id=\"how%20do%20i%20delete%20the%20audio%20for%20a%20post%3F\"><h3>How do I delete the audio for a post?<\/h3><\/dt>\n<dd><p>Hover over the post in the Posts list and click <strong>Remove audio<\/strong>. This deletes both the MP3 attachment and the player.<\/p><\/dd>\n<dt id=\"does%20parlato%20work%20with%20custom%20post%20types%3F\"><h3>Does Parlato work with custom post types?<\/h3><\/dt>\n<dd><p>Yes. Posts are enabled by default; you can enable pages and any public custom post type with the <strong>Post types<\/strong> setting on the <strong>Parlato \u2192 Player<\/strong> tab. Audio generation and the automatic player then work on every enabled post type.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20to%20external%20services%3F\"><h3>What data is sent to external services?<\/h3><\/dt>\n<dd><p>Your post text is sent to your chosen TTS provider (OpenAI or ElevenLabs) to generate audio, and \u2014 for the Narrator podcast \u2014 to OpenAI to generate the script, together with your API key. Data is sent only when you explicitly trigger generation. Parlato itself does not collect or store personal data; you should disclose the use of these services in your site's privacy policy. The settings page includes a disclosure notice. See the \"External Services\" section below for the full list of services and their privacy policies.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<\/ul>","raw_excerpt":"Turn WordPress posts into AI podcasts \u2014 read aloud or AI narrator \u2014 with OpenAI or ElevenLabs voices. Bring your own API key, no subscription.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336894","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336894"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/giannidk"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336894"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336894"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336894"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336894"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336894"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336894"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}