{"id":333918,"date":"2026-06-30T14:59:50","date_gmt":"2026-06-30T14:59:50","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/connector-for-vozcaster\/"},"modified":"2026-06-30T15:05:28","modified_gmt":"2026-06-30T15:05:28","slug":"connector-for-vozcaster","status":"publish","type":"plugin","link":"https:\/\/vec.wordpress.org\/plugins\/connector-for-vozcaster\/","author":15156070,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.14","stable_tag":"1.5.14","tested":"7.0","requires":"6.3","requires_php":"8.0","requires_plugins":null,"header_name":"Connector for VozCaster","header_author":"Miguel \u00c1ngel Terr\u00f3n Bote","header_description":"Connect your WordPress to the VozCaster Telegram bot \u2014 publish podcast episodes from voice notes directly into PowerPress.","assets_banners_color":"97207f","last_updated":"2026-06-30 15:05:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/vozcaster.com","header_author_uri":"https:\/\/potencia.pro","rating":0,"author_block_rating":0,"active_installs":0,"downloads":45,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5.11":{"tag":"1.5.11","author":"materron","date":"2026-06-30 14:59:30"},"1.5.12":{"tag":"1.5.12","author":"materron","date":"2026-06-30 15:05:28"},"1.5.13":{"tag":"1.5.13","author":"materron","date":"2026-06-30 16:13:26"},"1.5.14":{"tag":"1.5.14","author":"materron","date":"2026-06-30 20:05:30"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3591677,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3591677,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3591717,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3591717,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5.11","1.5.12","1.5.13","1.5.14"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3591742,"resolution":"1","location":"assets","locale":"","width":1500,"height":509},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3591742,"resolution":"2","location":"assets","locale":"","width":1400,"height":1229},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3591742,"resolution":"3","location":"assets","locale":"","width":1500,"height":589}},"screenshots":{"1":"Podcast access permissions and the list of WordPress users authorised to publish from the bot.","2":"Per-podcast settings: title prefix and season numbering, intro\/outro audio, audio mix levels and the post footer.","3":"Recent episode log: episodes published to the site through the bot."}},"plugin_section":[],"plugin_tags":[569,238,49684,9171,1983],"plugin_category":[56],"plugin_contributors":[259269],"plugin_business_model":[],"class_list":["post-333918","plugin","type-plugin","status-publish","hentry","plugin_tags-automation","plugin_tags-podcast","plugin_tags-powerpress","plugin_tags-telegram","plugin_tags-transcription","plugin_category-social-and-sharing","plugin_contributors-materron","plugin_committers-materron"],"banners":{"banner":"https:\/\/ps.w.org\/connector-for-vozcaster\/assets\/banner-772x250.png?rev=3591717","banner_2x":"https:\/\/ps.w.org\/connector-for-vozcaster\/assets\/banner-1544x500.png?rev=3591717","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/connector-for-vozcaster\/assets\/icon-128x128.png?rev=3591677","icon_2x":"https:\/\/ps.w.org\/connector-for-vozcaster\/assets\/icon-256x256.png?rev=3591677","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/connector-for-vozcaster\/assets\/screenshot-1.png?rev=3591742","caption":"Podcast access permissions and the list of WordPress users authorised to publish from the bot."},{"src":"https:\/\/ps.w.org\/connector-for-vozcaster\/assets\/screenshot-2.png?rev=3591742","caption":"Per-podcast settings: title prefix and season numbering, intro\/outro audio, audio mix levels and the post footer."},{"src":"https:\/\/ps.w.org\/connector-for-vozcaster\/assets\/screenshot-3.png?rev=3591742","caption":"Recent episode log: episodes published to the site through the bot."}],"raw_content":"<!--section=description-->\n<p><strong>VozCaster<\/strong> is a Telegram bot that turns voice notes into fully published podcast episodes on your WordPress site. This plugin \u2014 <strong>Connector for VozCaster<\/strong> \u2014 is the WordPress side of the system: it receives episodes from the bot and publishes them using <a href=\"https:\/\/wordpress.org\/plugins\/powerpress\/\">PowerPress<\/a>.<\/p>\n\n<p>You send a voice note to the bot, and a published draft (or live episode) appears on your site with audio, title, content and featured image. No editing, no manual file uploads, no opening the WordPress dashboard.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li><strong>Receives audio<\/strong> from the VozCaster bot and uploads it to your WordPress media library.<\/li>\n<li><strong>Creates podcast episodes<\/strong> using PowerPress, with episode and season numbering managed automatically.<\/li>\n<li><strong>Supports multiple podcasts on the same site<\/strong> \u2014 works with any PowerPress custom channels you have configured.<\/li>\n<li><strong>Per-podcast settings<\/strong>: title prefix, intro\/outro audio, post footer (signature), category mapping.<\/li>\n<li><strong>Granular permissions<\/strong>: choose which WordPress users can publish to which podcast.<\/li>\n<li><strong>Token-based authentication<\/strong> so the bot never sees your WordPress password.<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Install and activate this plugin on your WordPress site.<\/li>\n<li>In <strong>Settings \u2192 Connector for VozCaster<\/strong>, authorise one or more WordPress users to publish via the bot.<\/li>\n<li>Open Telegram, talk to the VozCaster bot, run <code>\/conectar<\/code> and link your WordPress site.<\/li>\n<li>Send a voice note or audio file to the bot. The episode appears on your site, ready to review or publish.<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress with the <a href=\"https:\/\/wordpress.org\/plugins\/powerpress\/\">PowerPress<\/a> plugin installed and activated.<\/li>\n<li>A Telegram account.<\/li>\n<li>A WordPress user authorised to publish via the bot (configurable in the plugin settings \u2014 any role works as long as the administrator marks the user as authorised).<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin requires an external service to function: the <strong>VozCaster bot<\/strong>, a Telegram bot operated by the plugin author (Miguel \u00c1ngel Terr\u00f3n Bote). The plugin is the WordPress-side component; the bot performs audio processing and orchestrates publication.<\/p>\n\n<p>The following data is transmitted:<\/p>\n\n<ol>\n<li><p><strong>From the bot to your WordPress site, via this plugin's REST API<\/strong><\/p>\n\n<ul>\n<li>Audio files received by the bot (sent by you via Telegram).<\/li>\n<li>Optional featured images.<\/li>\n<li>Episode metadata: title, description, content, episode number, season, feed slug.<\/li>\n<li>An authentication token issued to your WordPress user during the connection flow.<\/li>\n<\/ul>\n\n<p>These calls are initiated by the bot, not by the plugin. They reach your site through standard REST endpoints registered by this plugin under <code>\/wp-json\/vozpress\/v1\/<\/code>.<\/p><\/li>\n<li><p><strong>From your WordPress site to the bot (only during the user authorisation flow)<\/strong><\/p>\n\n<ul>\n<li>When a WordPress user connects via <code>\/conectar<\/code> in Telegram, your browser is redirected to your WordPress login. After login, this plugin issues a token and returns it to the bot to complete the handshake.<\/li>\n<\/ul><\/li>\n<li><p><strong>From the bot's server to Telegram's servers<\/strong><\/p>\n\n<ul>\n<li>User-sent voice messages and audio files pass through Telegram's infrastructure as part of normal bot communication. See Telegram's Privacy Policy: https:\/\/telegram.org\/privacy<\/li>\n<\/ul><\/li>\n<li><p><strong>From the bot's server to AI providers (text only)<\/strong><\/p>\n\n<ul>\n<li>To draft the episode title, description and content, the bot sends the transcribed <em>text<\/em> of your recording to <strong>Anthropic (Claude)<\/strong>.<\/li>\n<li>If you request a cover image, the bot sends a <em>text prompt<\/em> to <strong>OpenAI<\/strong> to generate the image.<\/li>\n<li>Only text is sent, and only when content or image generation is requested. Your audio file is <strong>never<\/strong> transmitted to these providers.<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<p>Audio is transcribed locally with a Whisper model on the bot's server; other audio processing (DeepFilter noise reduction, ffmpeg, and an Ollama model used only as a local fallback) also runs locally. The audio file itself is not sent to any third-party AI service.<\/p>\n\n<p>Service URLs and policies:<\/p>\n\n<ul>\n<li>VozCaster (bot service): https:\/\/vozcaster.com<\/li>\n<li>VozCaster privacy policy: https:\/\/vozcaster.com\/privacy<\/li>\n<li>VozCaster terms of service: https:\/\/vozcaster.com\/terms<\/li>\n<li>Telegram Messenger: https:\/\/telegram.org<\/li>\n<li>Telegram privacy policy: https:\/\/telegram.org\/privacy<\/li>\n<li>Telegram terms of service: https:\/\/telegram.org\/tos<\/li>\n<li>Anthropic (Claude, AI text generation): https:\/\/www.anthropic.com<\/li>\n<li>Anthropic privacy policy: https:\/\/www.anthropic.com\/legal\/privacy<\/li>\n<li>Anthropic terms of service: https:\/\/www.anthropic.com\/legal\/consumer-terms<\/li>\n<li>OpenAI (AI image generation): https:\/\/openai.com<\/li>\n<li>OpenAI privacy policy: https:\/\/openai.com\/policies\/privacy-policy<\/li>\n<li>OpenAI terms of service: https:\/\/openai.com\/policies\/terms-of-use<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>connector-for-vozcaster<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Settings \u2192 Connector for VozCaster<\/strong> and authorise the WordPress users that will publish via the bot.<\/li>\n<li>Open Telegram, search for the VozCaster bot, send <code>\/conectar<\/code> and follow the instructions to link your site.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20powerpress%3F\"><h3>Does it work with PowerPress?<\/h3><\/dt>\n<dd><p>Yes. PowerPress is a hard requirement \u2014 the plugin uses PowerPress to register episode metadata, enclosures, season and episode numbers.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20paid%20account%20to%20use%20it%3F\"><h3>Do I need a paid account to use it?<\/h3><\/dt>\n<dd><p>This plugin is free and open source. The VozCaster bot it connects to offers a free tier and a paid (Pro) tier. Basic episode publishing works on the free tier; advanced features \u2014 automatic transcription, AI-assisted content generation and audio noise reduction \u2014 require a Pro subscription. See https:\/\/vozcaster.com for the current plans.<\/p><\/dd>\n<dt id=\"where%20is%20my%20audio%20stored%3F\"><h3>Where is my audio stored?<\/h3><\/dt>\n<dd><p>Permanently, only in your own WordPress media library. The bot processes the audio on a private server operated by the author (located in Spain) and deletes the temporary files after publishing.<\/p><\/dd>\n<dt id=\"does%20the%20bot%20send%20my%20audio%20to%20third-party%20ai%20services%3F\"><h3>Does the bot send my audio to third-party AI services?<\/h3><\/dt>\n<dd><p>Your <strong>audio is never sent to a third-party AI service<\/strong>. Transcription runs on a local Whisper model on the bot's server, so the audio file itself stays on that server (and on Telegram, which carries your message).<\/p>\n\n<p>To draft the episode <strong>title, description and content<\/strong>, the bot sends the transcribed <em>text<\/em> to Anthropic's Claude API. If you ask the bot to generate a cover image, the <em>image prompt<\/em> is sent to OpenAI's image API. These providers receive text only, and only when you request content or image generation. See the \"External Services\" section below for the providers and their privacy policies.<\/p><\/dd>\n<dt id=\"can%20i%20connect%20more%20than%20one%20wordpress%20site%20to%20the%20bot%3F\"><h3>Can I connect more than one WordPress site to the bot?<\/h3><\/dt>\n<dd><p>Yes. Each site needs its own installation of this plugin and its own connection from Telegram (<code>\/conectar<\/code> for each site).<\/p><\/dd>\n<dt id=\"can%20a%20single%20wordpress%20site%20host%20more%20than%20one%20podcast%3F\"><h3>Can a single WordPress site host more than one podcast?<\/h3><\/dt>\n<dd><p>Yes. The plugin works with PowerPress's multi-podcast (custom channels) configuration. From Telegram you switch between podcasts with <code>\/feed<\/code>.<\/p><\/dd>\n<dt id=\"who%20can%20publish%20from%20the%20bot%3F\"><h3>Who can publish from the bot?<\/h3><\/dt>\n<dd><p>Any WordPress user whose ID is in the authorised users list (configured in Settings \u2192 Connector for VozCaster). Role does not matter \u2014 what matters is whether the administrator has authorised them.<\/p><\/dd>\n<dt id=\"how%20do%20i%20get%20support%3F\"><h3>How do I get support?<\/h3><\/dt>\n<dd><p>For documentation, see the <a href=\"https:\/\/vozcaster.com\/manual\">VozCaster manual<\/a>. For issues or questions, email info@vozcaster.com.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.14<\/h4>\n\n<ul>\n<li>Fixed a fatal error on audio episode upload: <code>wp-admin\/includes\/media.php<\/code> (which defines <code>wp_read_audio_metadata()<\/code>) was not loaded in the REST API request context, causing attachment metadata generation to fail for audio files.<\/li>\n<\/ul>\n\n<h4>1.5.13<\/h4>\n\n<ul>\n<li>Added plugin banner, icon and screenshots for the WordPress.org listing.<\/li>\n<\/ul>\n\n<h4>1.5.12<\/h4>\n\n<ul>\n<li>Documentation: corrected the \"paid account\" FAQ to describe the free and Pro tiers of the VozCaster bot (removed outdated \"beta\" wording).<\/li>\n<\/ul>\n\n<h4>1.5.11<\/h4>\n\n<ul>\n<li>Settings-changing REST endpoints (global intro\/outro, mix settings, plugin options, season) now require an administrator capability, not just an authorised bot user.<\/li>\n<li>The media picker script on the settings screen is now enqueued via <code>admin_enqueue_scripts<\/code> and <code>wp_localize_script<\/code> instead of inline output.<\/li>\n<li>Core admin includes in the REST upload helpers are loaded only where needed, immediately before the function that uses them.<\/li>\n<\/ul>\n\n<h4>1.5.10<\/h4>\n\n<ul>\n<li>Passes Plugin Check with no errors. File operations during chunked audio assembly now use the WordPress Filesystem API; output escaping, input unslashing and <code>wp_parse_url()<\/code> applied where flagged.<\/li>\n<li>The Telegram connection result pages are now fully translatable (English source strings with an updated Spanish es_ES translation).<\/li>\n<\/ul>\n\n<h4>1.5.9<\/h4>\n\n<ul>\n<li>Hardened the REST authentication token handling (sanitised header input).<\/li>\n<li>Documentation: the \"External Services\" section and FAQ now disclose the AI providers used by the VozCaster bot to generate episode text (Anthropic) and cover images (OpenAI). Your audio is never sent to these providers; only text is.<\/li>\n<\/ul>\n\n<h4>1.5.8<\/h4>\n\n<ul>\n<li>Spanish (es_ES) translation added. The plugin automatically displays in Spanish on WordPress installations set to Spanish.<\/li>\n<\/ul>\n\n<h4>1.5.7<\/h4>\n\n<ul>\n<li>Renamed from VozPress Connector to Connector for VozCaster to align with WordPress.org plugin guidelines on naming.<\/li>\n<li>Endpoint <code>\/episode\/next-number<\/code> now also returns the chapter number within the current season so the bot can name uploaded media files using the season+chapter scheme.<\/li>\n<\/ul>\n\n<h4>1.5.6<\/h4>\n\n<ul>\n<li><code>\/episode\/next-number<\/code> includes <code>episode_no_in_season<\/code> for season-aware media file naming.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Feed detection now includes PowerPress \"category podcasting\" feeds. Each linked category is exposed as a feed using the category slug.<\/li>\n<li><code>assign_podcast_category()<\/code> no longer creates new categories \u2014 prevents duplicate \"Podcast\" categories on sites with custom slugs.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Season and chapter-within-season numbering derived from the previous published episode's PowerPress metadata, instead of the previous year-based heuristic.<\/li>\n<li>Multi-feed detection now reads from <code>powerpress_general.custom_feeds<\/code> \u2014 the per-podcast permissions UI in wp-admin now appears correctly on sites with PowerPress custom channels.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>All admin UI strings translated and properly wrapped in i18n functions.<\/li>\n<li>Added <code>== External Services ==<\/code> section to readme.<\/li>\n<\/ul>\n\n<h4>1.2.x<\/h4>\n\n<ul>\n<li>Multi-feed support: per-feed permissions, automatic category assignment, per-feed episode counters.<\/li>\n<li>Chunked audio upload with gzip compression for large files (&gt;25 MB).<\/li>\n<li>Manual season increment via REST endpoint and <code>\/temporada<\/code> command in the bot.<\/li>\n<\/ul>\n\n<h4>1.1.x<\/h4>\n\n<ul>\n<li>Intro and outro mixing with configurable ducking.<\/li>\n<li>Settings endpoints for remote configuration from the bot.<\/li>\n<li>Transcript attachment via REST endpoint.<\/li>\n<\/ul>\n\n<h4>1.0.x<\/h4>\n\n<ul>\n<li>Initial release: <code>\/ping<\/code>, <code>\/auth\/verify<\/code>, <code>\/media\/audio<\/code>, <code>\/media\/image<\/code>, <code>\/episode<\/code> REST endpoints.<\/li>\n<li>Token-based authentication using <code>wp_check_password()<\/code>.<\/li>\n<li>Settings page with access token and episode log.<\/li>\n<\/ul>","raw_excerpt":"Connect your WordPress to the VozCaster Telegram bot to publish podcast episodes from voice notes, directly into PowerPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/333918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=333918"}],"author":[{"embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/materron"}],"wp:attachment":[{"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=333918"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=333918"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=333918"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=333918"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=333918"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=333918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}