{"id":368635,"date":"2026-09-14T20:52:18","date_gmt":"2026-09-14T20:52:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/hearald-publisher\/"},"modified":"2026-09-14T20:52:11","modified_gmt":"2026-09-14T20:52:11","slug":"hearald-publisher","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/hearald-publisher\/","author":23565808,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.4.0","stable_tag":"0.4.0","tested":"7.1","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Hearald Publisher","header_author":"Hearald","header_description":"Automatically turns your articles into natural-voice audio editions. Publish the article \u2014 Hearald handles the audio.","assets_banners_color":"","last_updated":"2026-09-14 20:52:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/forgehouse.app\/hearald\/publisher\/","header_author_uri":"https:\/\/blog.forgehouse.app\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":37,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.4.0":{"tag":"0.4.0","author":"fatherearthdev","date":"2026-09-14 20:52:11","revision":3695914}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.4.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[1953,452,238,16722,1449],"plugin_category":[34,50,56],"plugin_contributors":[280736],"plugin_business_model":[],"class_list":["post-368635","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-audio","plugin_tags-podcast","plugin_tags-text-to-speech","plugin_tags-tts","plugin_category-accessibility","plugin_category-media","plugin_category-social-and-sharing","plugin_contributors-fatherearthdev","plugin_committers-fatherearthdev"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/hearald-publisher.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Hearald Publisher gives every article on your site a \"Listen\" button. When you publish, the plugin sends the article's text to the Hearald audio service, which narrates it with a natural neural voice (Kokoro-82M) and returns an MP3. The MP3 is saved into your own Media Library, and a clean, lightweight player appears above (or below) your article \u2014 readers press play, and your writing meets them while they commute, cook, or walk.<\/p>\n\n<p><strong>Your audio is yours.<\/strong> Every narration is a normal MP3 in your Media Library. It is served by your site, it keeps playing if you change plans or stop using Hearald, and uninstalling the plugin leaves it where it is.<\/p>\n\n<p><strong>What it does<\/strong><\/p>\n\n<ul>\n<li>Generates an audio edition automatically on publish (optional), or per-article from the editor<\/li>\n<li>Detects real edits by content: a meaningless save changes nothing; a material edit marks the audio \"needs updating\" (or regenerates automatically, your choice)<\/li>\n<li>Seven curated voices (US and UK, male and female) with a per-article override<\/li>\n<li>A Hearald dashboard: which articles have audio, their status, length and voice \u2014 plus plays, completions and minutes listened when you enable analytics<\/li>\n<li>An Audio column and status filter on the Posts screen<\/li>\n<li>A dependency-free player: seek, keyboard controls, playback speed, graceful when audio is unavailable<\/li>\n<li>Player styling: your own accent colour, light\/dark\/follow-the-reader, and your theme's font if you prefer it<\/li>\n<li><code>[hearald_player]<\/code> shortcode for manual placement<\/li>\n<li>Hidden messages: set words large with <code>[hearald_mark]<\/code>, hide a phrase in their first letters, and let readers claim a code with <code>[hearald_hidden_message]<\/code><\/li>\n<\/ul>\n\n<p><strong>Plans<\/strong><\/p>\n\n<ul>\n<li><strong>Free<\/strong> \u2014 5 articles a month. No card: get a free license key in under a minute.<\/li>\n<li><strong>Publisher<\/strong> \u2014 $19\/month for 50 articles a month.<\/li>\n<li><strong>Publisher Pro<\/strong> \u2014 $50\/month for 500 articles a month.<\/li>\n<\/ul>\n\n<p>Plans count audio generations per license key per calendar month: publishing a new article, or regenerating one whose words or voice changed, uses one. Regenerating audio that already matches the article costs nothing. See https:\/\/forgehouse.app\/hearald\/publisher\/<\/p>\n\n<p><strong>What it costs your readers: nothing.<\/strong> The player is static assets served by your site and one MP3 file. No reader accounts, no tracking scripts, no cookies.<\/p>\n\n<p><strong>Listen analytics are opt-in and aggregate-only.<\/strong> When enabled, your site counts plays, completions and seconds listened per article \u2014 three numbers. No IPs, no user agents, no identifiers, no per-reader anything, ever.<\/p>\n\n<h3>External service disclosure<\/h3>\n\n<p>This plugin relies on the Hearald audio service to synthesize speech. It does not work without an account and connection to a service endpoint.<\/p>\n\n<p><strong>What is sent, and when:<\/strong> When you (or your auto-generate setting) request audio for a post, the plugin transmits to the Hearald service (https:\/\/audio.forgehouse.app, unless you set another endpoint under Advanced): the post's published text content (title, headings, paragraphs, lists, quotes), the post ID, the chosen voice, a salted non-reversible hash identifying your site, and your license key. Testing the connection sends only your license key. Nothing is transmitted until you enter a license key and request generation. Draft, pending and private posts are never sent \u2014 generation is refused for anything unpublished. The plugin then downloads the finished MP3 from the service into your Media Library.<\/p>\n\n<p><strong>What is not sent:<\/strong> reader data of any kind, user accounts, emails, comments, credentials, or content of posts you did not generate audio for.<\/p>\n\n<p><strong>What the service stores:<\/strong> the job record (site hash, post ID, post title, voice, content hash, status), kept for 30 days, and the generated MP3 only until your site has copied it \u2014 it is deleted as soon as your site collects it, and after 7 days at most. The article text is held only while it waits in the queue and is being narrated, and is discarded when generation finishes. Your license key is stored only as a one-way hash, alongside your plan and monthly article count. Uninstalling the plugin removes all plugin settings and post data from WordPress; the MP3s in your Media Library stay unless you delete them.<\/p>\n\n<p><strong>License checks (Gumroad):<\/strong> Plans are sold through Gumroad. To confirm which plan a license key belongs to, the Hearald service sends the key and the Hearald product ID to Gumroad's license verification API. No article content or site data is sent to Gumroad. Gumroad terms: https:\/\/gumroad.com\/terms \u2014 privacy: https:\/\/gumroad.com\/privacy<\/p>\n\n<p><strong>Service provider:<\/strong> Hearald \u2014 https:\/\/forgehouse.app\/hearald\/ \u2014 terms and privacy: https:\/\/forgehouse.app\/hearald\/privacy\/<\/p>\n\n<p>The optional \"Powered by Hearald\" credit on the player is off by default and only appears if you enable it.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Get a license key at https:\/\/forgehouse.app\/hearald\/publisher\/ \u2014 free, or a paid plan.<\/li>\n<li>Go to <strong>Hearald \u2192 Settings<\/strong>, paste the license key from your receipt email, and press <strong>Test connection<\/strong>.<\/li>\n<li>Pick a default voice and player placement.<\/li>\n<li>Turn on auto-generate if you want every newly published post narrated automatically \u2014 or use the <strong>Hearald Audio<\/strong> box in the editor per article.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20happens%20if%20i%20cancel%20or%20downgrade%3F\"><h3>What happens if I cancel or downgrade?<\/h3><\/dt>\n<dd><p>Everything already narrated stays in your Media Library and keeps playing \u2014 it is your file, served by your site. Your key simply moves to the Free plan's 5 articles a month.<\/p><\/dd>\n<dt id=\"where%20are%20the%20audio%20files%20stored%3F\"><h3>Where are the audio files stored?<\/h3><\/dt>\n<dd><p>In your Media Library, attached to their article, named like <code>hearald-your-post-slug-1a2b3c4d.mp3<\/code>. Regenerating an article replaces its old Hearald MP3; your own media is never touched.<\/p><\/dd>\n<dt id=\"does%20this%20bundle%20an%20ai%20model%20or%20slow%20my%20site%20down%3F\"><h3>Does this bundle an AI model or slow my site down?<\/h3><\/dt>\n<dd><p>No. Synthesis happens on the Hearald service. Your site sends text, polls in the background via WP-Cron, and serves a small CSS\/JS player only on pages that show one.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20edit%20an%20article%3F\"><h3>What happens when I edit an article?<\/h3><\/dt>\n<dd><p>The plugin hashes what would actually be spoken. Fixing a typo in a shortcode attribute or re-saving changes nothing; changing the words marks the audio \"needs updating\" so you decide \u2014 or regenerates automatically if you enabled that.<\/p><\/dd>\n<dt id=\"how%20many%20articles%20do%20i%20get%2C%20and%20how%20do%20i%20know%20what%27s%20left%3F\"><h3>How many articles do I get, and how do I know what's left?<\/h3><\/dt>\n<dd><p>Free is 5 articles a month, Publisher is 50 and Publisher Pro is 500. <strong>Hearald \u2192 Settings<\/strong> and the Hearald dashboard both show your plan and how many you have used this month, so the limit is never a surprise. Counts reset on the 1st (UTC), and regenerating audio that already matches an article is free.<\/p><\/dd>\n<dt id=\"what%20is%20the%20hidden%20message%20feature%3F\"><h3>What is the hidden message feature?<\/h3><\/dt>\n<dd><p>An old writing trick with a payoff. Set a few words large through an article \u2014 <code>[hearald_mark]kept[\/hearald_mark]<\/code> \u2014 so their first letters spell a phrase, then drop <code>[hearald_hidden_message id=\"...\"]<\/code> at the end. A reader types what they found, your site checks it, and only a correct answer gets your code back. The answer is never sent to the browser, so the hunt can't be skipped by viewing the source. Set the messages and codes under Hearald \u2192 Settings. Readers stay anonymous: the site keeps two counters and a one-way hash of a guesser's address for one minute so nobody can machine-guess it.<\/p><\/dd>\n<dt id=\"can%20i%20change%20how%20the%20player%20looks%3F\"><h3>Can I change how the player looks?<\/h3><\/dt>\n<dd><p>Yes. Settings has an accent colour, a light \/ dark \/ follow-the-reader choice, and an option to use your theme's font instead of Hearald's. Everything else is plain CSS custom properties on <code>.hearald-player<\/code>, so a theme can restyle it completely.<\/p><\/dd>\n<dt id=\"can%20different%20articles%20use%20different%20voices%3F\"><h3>Can different articles use different voices?<\/h3><\/dt>\n<dd><p>Yes \u2014 the Hearald Audio box in the editor has a per-article voice override. Changing the voice for an article with existing audio marks it \"needs updating,\" exactly like a content edit.<\/p><\/dd>\n<dt id=\"do%20readers%20get%20tracked%3F\"><h3>Do readers get tracked?<\/h3><\/dt>\n<dd><p>No. Without analytics enabled, nothing is counted at all. With analytics enabled, your site keeps three aggregate numbers per article (plays, completions, seconds listened) \u2014 no identifiers of any kind.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20classic%20editor%3F\"><h3>Does it work with the classic editor?<\/h3><\/dt>\n<dd><p>Yes. The editor integration is a standard meta box; it behaves identically in the block and classic editors.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Hidden messages: hide a phrase in an article and let readers claim a code for finding it<\/li>\n<li>Your plan and how many articles you have left this month now appear in Settings and on the Hearald dashboard<\/li>\n<li>Player styling: accent colour, light \/ dark \/ follow-the-reader, and an option to use your theme's font<\/li>\n<li>The player's colours are CSS custom properties, so themes can restyle it completely<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Voices now carry the Hearald names \u2014 Wren, Juniper, Marlowe, Bram, Edith, Beatrix (new) and Alistair; sites that picked a voice keep the same one<\/li>\n<li>Publishing and clicking \"Generate audio\" at the same time no longer asks for the same audio twice<\/li>\n<li>The editor's Hearald Audio box updates itself after you publish<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Plans: Free, Publisher and Publisher Pro, activated with a license key<\/li>\n<li>Audio is now saved into your Media Library and served by your site; the service deletes its copy once collected<\/li>\n<li>Settings: connect with just a license key (the hosted service is the default; custom endpoint under Advanced)<\/li>\n<li>\"Regenerate\" on audio that already matches the article reuses it and costs nothing<\/li>\n<li>Clearer messages for unrecognised keys and monthly limits<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Hearald dashboard with status table, filters, and aggregate listen analytics (opt-in)<\/li>\n<li>Per-article voice override<\/li>\n<li>Audio column + status filter on the Posts screen<\/li>\n<li>Connection tester with precise failure reporting<\/li>\n<li>Player: buffering state, unavailable-audio state, reduced-motion support<\/li>\n<li>Hardening: published-posts-only generation, safe remote requests, rate-limited analytics endpoint, multisite uninstall<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release: automatic generation on publish, edit detection by content hash, editor meta box, frontend player, shortcode.<\/li>\n<\/ul>","raw_excerpt":"Automatically turns your articles into natural-voice audio editions. Publish the article \u2014 Hearald handles the audio.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/368635","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=368635"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/fatherearthdev"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=368635"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=368635"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=368635"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=368635"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=368635"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=368635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}