{"id":315172,"date":"2026-05-25T11:24:47","date_gmt":"2026-05-25T11:24:47","guid":{"rendered":"https:\/\/es.wordpress.org\/plugins\/sangar-studio-readflow\/"},"modified":"2026-05-25T11:24:18","modified_gmt":"2026-05-25T11:24:18","slug":"sangar-studio-readflow","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sangar-studio-readflow\/","author":23493958,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.1","stable_tag":"1.2.1","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Sangar Studio ReadFlow","header_author":"Sangar Studio","header_description":"Calculates post reading time with a beautiful progress bar and generates high-quality AI audio versions using OpenAI TTS with local caching, plus native browser speech fallback.","assets_banners_color":"","last_updated":"2026-05-25 11:24:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":28,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.1":{"tag":"1.2.1","author":"sangarstudio","date":"2026-05-25 11:24:18"}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[1953,220074,4702,27629,16722],"plugin_category":[34],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-315172","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-ai-voice","plugin_tags-audio-player","plugin_tags-reading-time","plugin_tags-text-to-speech","plugin_category-accessibility","plugin_committers-sangarstudio"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/sangar-studio-readflow.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Sangar Studio ReadFlow<\/strong> is a premium, high-fidelity WordPress plugin designed to elevate the user reading and auditory experience on your website. It calculates the reading time of your posts based on custom speed parameters and inserts a gorgeous, glassmorphic player widget that lets users listen to posts.<\/p>\n\n<p>By integrating directly with <strong>OpenAI's state-of-the-art TTS models<\/strong>, <strong>Sangar Studio ReadFlow<\/strong> converts your blog content into natural, fluid, human-like voice recordings. It handles OpenAI's character limitations gracefully by dividing long essays into sentence-aware blocks and stitching the audio binaries together seamlessly.<\/p>\n\n<p>To protect your budget and increase speed, <strong>Sangar Studio ReadFlow features a robust local caching system<\/strong>. It generates the voice file only once per post and caches it directly inside your server's uploads directory. Every subsequent listener loads the audio instantly in a custom-designed web player.<\/p>\n\n<p>If no API Key is provided, or if the API suffers a network failure, the plugin automatically falls back to the <strong>Web Speech API SpeechSynthesis<\/strong>, providing free, zero-config native voice synthesis directly inside the reader's browser.<\/p>\n\n<h3>Key Features<\/h3>\n\n<ul>\n<li><strong>Accurate Reading Time Indicator:<\/strong> Computes reading times based on custom Words Per Minute (WPM) settings.<\/li>\n<li><strong>Premium Custom HTML5 Player:<\/strong> Ditch the default browser audio bar. Features stylized play\/pause buttons, loading spinners, sound-wave animations, and draggable seek sliders.<\/li>\n<li><strong>OpenAI TTS Integration:<\/strong> Access six natural voices (Alloy, Echo, Fable, Onyx, Nova, Shimmer) with standard <code>tts-1<\/code> or high-definition <code>tts-1-hd<\/code> qualities.<\/li>\n<li><strong>Unlimited Text Length Chunking:<\/strong> Sentence-intelligent text-splitting bypasses API size caps for infinite post narration.<\/li>\n<li><strong>Smart Local Caching:<\/strong> Saves generated MP3s locally. Zero repetitive API billing overhead for repeat readers.<\/li>\n<li><strong>Auto Pre-Generation:<\/strong> Optional setting pre-renders post narration in the background as soon as you hit \"Publish\".<\/li>\n<li><strong>Sleek Administration Panel:<\/strong> Manage credentials, customize accent colors, adjust reading formulas, check cache sizes, test voices with live playback, and flush files with one click.<\/li>\n<li><strong>Zero-Config Web Speech Fallback:<\/strong> Universal native voice narration fallback if AI models are disabled or run out of quota.<\/li>\n<li><strong>Adjustable Playback Velocity:<\/strong> Speed options (<code>0.8x<\/code>, <code>1.0x<\/code>, <code>1.2x<\/code>, <code>1.5x<\/code>, <code>2.0x<\/code>) for listeners on the go.<\/li>\n<li><strong>Direct MP3 Download Link:<\/strong> Give readers the option to take post narrations with them.<\/li>\n<\/ul>\n\n<h3>Privacy &amp; Third-Party Service Disclosure<\/h3>\n\n<p>This plugin integrates with and sends requests to a third-party service: <strong>OpenAI API<\/strong> (specifically the Text-to-Speech service).<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> Only the plain text content of your published posts is transmitted to OpenAI's servers to synthesize the voice.<\/li>\n<li><strong>What is NOT sent:<\/strong> No reader IP addresses, personal data, browser details, or cookies are sent to OpenAI.<\/li>\n<li><strong>Data Processing &amp; Storage:<\/strong> The audio generation is executed server-side. The compiled MP3 is saved locally on your self-hosted WordPress site inside <code>\/wp-content\/uploads\/sangar-studio-readflow\/<\/code>. No external CDN or tracking tags are embedded in the reader's browser.<\/li>\n<li><strong>OpenAI Terms:<\/strong> For more details on data retention policies, please check the OpenAI Privacy Policy: https:\/\/openai.com\/policies\/privacy-policy<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>sangar-studio-readflow<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or upload the ZIP file via <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Navigate to <strong>Settings &gt; ReadFlow \ud83c\udf99\ufe0f<\/strong> in your admin dashboard.<\/li>\n<li>(Optional) Toggle \"Activar Voz por IA\", input your OpenAI API Key, and select your default voice and model.<\/li>\n<li>Customize visual configurations (accent colors, positioning, reading speeds) and click <strong>Guardar Configuraci\u00f3n<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20an%20openai%20api%20key%20required%3F\"><h3>Is an OpenAI API Key required?<\/h3><\/dt>\n<dd><p>No. If you leave \"Voz por IA\" disabled or do not provide an API Key, the plugin operates in fallback mode, using the reader's local web browser engine (<code>window.speechSynthesis<\/code>) to synthesize voice completely free and instantly.<\/p><\/dd>\n<dt id=\"where%20are%20the%20generated%20audio%20files%20saved%3F\"><h3>Where are the generated audio files saved?<\/h3><\/dt>\n<dd><p>Files are saved inside the <code>\/wp-content\/uploads\/sangar-studio-readflow\/<\/code> directory as static MP3 files. They are automatically named according to post IDs (e.g. <code>post-42.mp3<\/code>).<\/p><\/dd>\n<dt id=\"how%20is%20cache%20invalidated%20when%20i%20edit%20a%20post%3F\"><h3>How is cache invalidated when I edit a post?<\/h3><\/dt>\n<dd><p>The plugin listens to post updates. Saving, editing, or trashing a post automatically deletes its corresponding cached MP3 so that the fresh content is compiled on the next listener's play click.<\/p><\/dd>\n<dt id=\"does%20the%20text%20chunking%20support%20very%20long%20articles%3F\"><h3>Does the text chunking support very long articles?<\/h3><\/dt>\n<dd><p>Yes! Sangar Studio ReadFlow breaks articles into smart, semantic chunks of approximately 3,500 characters, avoiding breaking mid-word or mid-sentence. It submits each chunk sequentially and compiles the resulting binaries into a unified audio stream, bypassing OpenAI's 4,096 character limit easily.<\/p><\/dd>\n<dt id=\"how%20can%20i%20place%20the%20widget%20manually%3F\"><h3>How can I place the widget manually?<\/h3><\/dt>\n<dd><p>Select \"Insertar manualmente\" in the settings, and insert the shortcode <code>[sangar-studio-readflow]<\/code> anywhere in your post text, or call it programmatically in your theme files:\n    <\/p>\n\n<p>(The legacy shortcode <code>[readio]<\/code> is also fully supported for backward compatibility).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Fixed Text Domain Mismatch errors for proper i18n compatibility.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added full WordPress 7.0 compatibility.<\/li>\n<li>Integrated natively with the WordPress 7.0 Abilities API (safely supported on WP 6.9+), exposing post audio narration generation and retrieval as standard system abilities.<\/li>\n<li>Ready for the WordPress 7.0 Native AI Client and Model Context Protocol (MCP) tool-calling support.<\/li>\n<li>Fully verified compatibility with PHP 8.3 and PHP 8.4 recommended guidelines for WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fixed all WordPress Plugin Check tool errors and warnings.<\/li>\n<li>Replaced strip_tags with wp_strip_all_tags for better compliance.<\/li>\n<li>Added missing translators comments to translatable strings.<\/li>\n<li>Scoped uninstall variables and migrated to WP_Filesystem API in uninstall.php.<\/li>\n<li>Cleaned up deprecated load_plugin_textdomain call.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added OpenAI TTS integration with 6 beautiful natural voices.<\/li>\n<li>Added smart, sentence-aware chunking for infinite-length blog post compilation.<\/li>\n<li>Added server-level binary caching (<code>wp-content\/uploads\/sangar-studio-readflow\/<\/code>).<\/li>\n<li>Added automatic background audio compilation on post publish.<\/li>\n<li>Added custom HTML5 player visual overlay with progress tracking, visual equalizer animations, speed adjustment dropdown, and direct MP3 downloads.<\/li>\n<li>Added Live API Connection tester in administration dashboard.<\/li>\n<li>Fully refactored classes, prefixing, variables, and options names to be 100% compliant with WordPress.org submission requirements.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial structure. Basic reading time calculations and raw browser SpeechSynthesis triggers.<\/li>\n<\/ul>","raw_excerpt":"Displays blog post reading times and generates premium AI voice audio narrations using OpenAI TTS with local caching.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/315172","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=315172"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sangarstudio"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=315172"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=315172"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=315172"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=315172"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=315172"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=315172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}