{"id":287352,"date":"2026-03-11T13:19:19","date_gmt":"2026-03-11T13:19:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/newsroom-ai-co-pilot\/"},"modified":"2026-06-22T04:50:53","modified_gmt":"2026-06-22T04:50:53","slug":"newsroom-ai-assistant","status":"publish","type":"plugin","link":"https:\/\/en-au.wordpress.org\/plugins\/newsroom-ai-assistant\/","author":20490193,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.5.1","stable_tag":"2.5.1","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Newsroom OS \u2013 Google Discover, Google News, Schema & Workflow","header_author":"Kostas Karapapas","header_description":"A control center for newsrooms. Assign topics, track live Google Trends, and use customizable AI Prompts (with FAQ Schema) for better content formatting.","assets_banners_color":"8ca7ad","last_updated":"2026-06-22 04:50:53","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/newsroom-ai-assistant\/","header_author_uri":"","rating":5,"author_block_rating":0,"active_installs":10,"downloads":1985,"num_ratings":4,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"koskar22","date":"2026-03-21 17:59:14"},"1.4.3.3":{"tag":"1.4.3.3","author":"koskar22","date":"2026-04-13 17:12:26"},"1.4.4":{"tag":"1.4.4","author":"koskar22","date":"2026-04-18 08:01:22"},"1.5":{"tag":"1.5","author":"koskar22","date":"2026-04-24 16:20:22"},"1.5.1":{"tag":"1.5.1","author":"koskar22","date":"2026-04-28 19:23:19"},"1.6.0":{"tag":"1.6.0","author":"koskar22","date":"2026-04-29 12:03:11"},"1.7.0":{"tag":"1.7.0","author":"koskar22","date":"2026-05-11 19:47:34"},"1.7.1":{"tag":"1.7.1","author":"koskar22","date":"2026-05-12 15:04:41"},"1.7.2":{"tag":"1.7.2","author":"koskar22","date":"2026-05-13 08:47:12"},"1.7.3":{"tag":"1.7.3","author":"koskar22","date":"2026-05-14 11:32:06"},"1.7.4":{"tag":"1.7.4","author":"koskar22","date":"2026-05-16 06:30:28"},"1.8.0":{"tag":"1.8.0","author":"koskar22","date":"2026-05-19 09:31:57"},"1.8.1":{"tag":"1.8.1","author":"koskar22","date":"2026-05-23 05:45:44"},"1.9.0":{"tag":"1.9.0","author":"koskar22","date":"2026-05-24 17:28:42"},"2.0.0":{"tag":"2.0.0","author":"koskar22","date":"2026-05-26 15:27:20"},"2.1":{"tag":"2.1","author":"koskar22","date":"2026-05-28 11:43:35"},"2.2.0":{"tag":"2.2.0","author":"koskar22","date":"2026-06-01 15:50:21"},"2.2.1":{"tag":"2.2.1","author":"koskar22","date":"2026-06-03 11:49:22"},"2.2.2":{"tag":"2.2.2","author":"koskar22","date":"2026-06-05 17:24:37"},"2.3.0":{"tag":"2.3.0","author":"koskar22","date":"2026-06-07 06:46:50"},"2.3.1":{"tag":"2.3.1","author":"koskar22","date":"2026-06-07 08:31:09"},"2.3.2":{"tag":"2.3.2","author":"koskar22","date":"2026-06-07 17:12:47"},"2.4.0":{"tag":"2.4.0","author":"koskar22","date":"2026-06-11 07:15:39"},"2.4.1":{"tag":"2.4.1","author":"koskar22","date":"2026-06-12 17:20:42"},"2.4.2":{"tag":"2.4.2","author":"koskar22","date":"2026-06-13 07:00:25"},"2.4.3":{"tag":"2.4.3","author":"koskar22","date":"2026-06-15 08:05:08"},"2.5.0":{"tag":"2.5.0","author":"koskar22","date":"2026-06-17 07:32:32"},"2.5.1":{"tag":"2.5.1","author":"koskar22","date":"2026-06-22 04:50:53"}},"upgrade_notice":{"2.5.1":"<p>Recommended schema patch: enriched archive ItemLists (author + image for Rich Results), category\/tag <code>about<\/code> entities, publisher logo 60px cap, cleaner <code>articleBody<\/code>, Wikidata sameAs improvements, and automatic JSON-LD cache refresh on upgrade. Save Settings after deploy; re-save affected posts if <code>articleBody<\/code> still shows <code>nn<\/code> junk. No database migration \u2014 safe from 2.5.0.<\/p>","2.5.0":"<p>Editor performance fix, sidebar tabs, per-post geo, publisher transparency schema + AI policy pages, Yoast\/Rank Math in Chief Insights, hardened GSC backfill, Dashboard Radar fix, and AI brief\/author overview reliability. Save Settings after upgrade to refresh schema cache.<\/p>","2.4.3":"<p>Recommended: Wikidata sameAs confidence gate for tags, slim author worksFor, JSON-LD quote safety, admin CSS\/load on Newsroom tabs, plus 2.4.2 contentLocation\/articleBody schema fixes. Save Settings after upgrade; use Lite profile + Omit articleBody on high-traffic sites. No database migration \u2014 safe from 2.4.2 and 2.4.1.<\/p>","2.4.2":"<p>Recommended: fixes wrong contentLocation\/dateline on non-local posts, cleans articleBody JSON-LD (emoji\/rn junk), optional primary-city fallback off by default. Save Settings after upgrade to rebuild schema cache. No database migration \u2014 safe from 2.4.1.<\/p>","2.4.1":"<p>Recommended patch: Chief Insights v2 polish, GSC 12-month backfill button, copy-paste prompts restored, and fixes for <code>newsai_vars<\/code> JS error + admin PHP notices on the Insights tab. No new database migration \u2014 safe from 2.4.0.<\/p>","2.4.0":"<p>New: AI auto alt, Seasonal radar (GSC queries + tags), GSC traffic-drop alerts, Performance profiles (Lite\/Standard\/Full). Frontend skips admin-only PHP modules. Creates <code>wp_newsai_gsc_queries<\/code> on upgrade \u2014 run GSC Sync now after deploy.<\/p>","2.3.9":"<p>Performance: GSC incremental sync + weekly decay scan with lighter SQL. No database migration.<\/p>","2.3.8":"<p>Performance: home and archive schema cached until settings change or publish (no hourly rebuild). No database migration.<\/p>","2.3.7":"<p>Fix: saving non-schema settings no longer invalidates all article schema caches (load spike). No database migration.<\/p>","2.3.6":"<p>Performance: schema cached in post meta per article (lazy backfill for old posts). No database migration.<\/p>","2.3.5":"<p>Lite mode now also pauses War-room polling and Speakable snippet; schema\/crons still run by design. No database migration.<\/p>","2.3.4":"<p>Fix: weekly newsroom report email test and delivery (UTF-8 From, clearer errors). No database migration.<\/p>","2.3.3":"<p>Performance update: lazy Trends\/News loading, command palette on all admin tabs, schema cache warm on publish, Lite mode hides radar. No database migration.<\/p>","2.3.2":"<p>Performance update: Lite Mode (sidebar + timeline + breaking badge only; schema stays on); tab-scoped admin JS; Chief\/Author caches; wizard Manual Timeline fix. No database migration.<\/p>","2.3.1":"<p>Maintenance release. Includes 2.3.0 desk workflow features (brief \u2192 task, Kanban, war room, CrUX, device donut). No database migration. Safe from 2.2.x and 2.3.0.<\/p>","2.3.0":"<p>Recommended update: <strong>brief \u2192 task<\/strong>, <strong>AI desk overview<\/strong>, <strong>Kanban DnD<\/strong>, <strong>War room<\/strong> live KPIs, <strong>CrUX monitor<\/strong> (enable PageSpeed Insights API + optional API key under Instant Indexing), <strong>GSC device channel toggle<\/strong>, and <strong>category AI prompts<\/strong>. No database migration. Safe from 2.2.x.<\/p>","2.2.2":"<p>Recommended update: <strong>Chief Insights command center<\/strong>, <strong>\u2318K command palette<\/strong>, <strong>GSC trend + device charts<\/strong> (sync once after upgrade), <strong>weekly desk email<\/strong>, and <strong>content brief from trends<\/strong>. Creates two small GSC aggregate tables on first sync. Safe from 2.2.1 and 2.2.0.<\/p>","2.2.1":"<p>Recommended update: <strong>NewsOS site registry<\/strong> for Pro licenses, optional <strong>free-tier usage insights<\/strong> (explicit opt-in only), Discover Score timeline fix, and <strong>Organization Logo<\/strong> schema setting. Existing free installs that had usage insights enabled without recorded consent are reset on upgrade (admin notice). No database migration. Safe from 2.2.0.<\/p>","2.2.0":"<p>Recommended update: major <strong>AI Assist (Pro BYOK)<\/strong> SEO upgrade \u2014 article analysis, better headlines and optimization, meta description generator with apply to Yoast\/Rank Math, Discover entity signals, and cleaner <strong>editor blocks<\/strong> (timeline, key takeaways, FAQ \u2014 semantic HTML, external CSS, no empty nodes). No database migration. Safe from 2.1.x and 2.0.x.<\/p>","2.1.0":"<p>Recommended update: adds Chief Insights + AI Daily Brief (Pro), PDF print reporting, and clearer indexing diagnostics (last attempted vs last successful) for Google and IndexNow. Safe upgrade from 2.0.x and 1.9.x.<\/p>","2.0.0":"<p><strong>Big update:<\/strong> Google Search Console sync (Pro) \u2014 real Discover, Google News, and web clicks per author and post. Author Performance 2.0 UI with tabs and coaching. Creates table <code>wp_newsai_gsc_performance<\/code> on upgrade. Configure under Settings \u2192 PRO \u2192 Indexing after updating. Safe upgrade from 1.9.x and 1.7.4+.<\/p>","1.9.1":"<p>Stability release: schema bootstrap fix, author profile save hardening, holiday import validation, lead image representativeOfPage, PHPUnit smoke tests. No database migration.<\/p>","1.9.0":"<p>Performance and entity SEO release: smaller editor tag pool, faster decay scans, Wikidata lazy tag enrichment, AI Tag Match (Pro), and timeline UX fixes. No database migration.<\/p>","1.8.2":"<p>Recommended after <strong>1.8.1<\/strong>: safer IndexNow permalink handling, <strong>free<\/strong> personal performance in My Inbox, and Discover OG scoring for <strong>AIOSEO<\/strong> \/ <strong>SEOPress<\/strong>. No database migration.<\/p>","1.8.1":"<p>Recommended after <strong>1.8.0<\/strong> (or direct from <strong>1.7.4+<\/strong>): <strong>Find archive links<\/strong> fix, Discover <strong>OG<\/strong> scoring, four-locale Discover UI, <strong>tested through WordPress 7.0<\/strong>, GPL license header, escaping and prepared-SQL hardening for Plugin Check. No database migration.<\/p>","1.8.0":"<p>Recommended for every site still on <strong>1.7.4 or older<\/strong>: one update to get Discover Score v2, Breaking News Mode, live coverage tools, Author Performance Discover coaching, Classic Editor crash fix, and duplicate tag guard fix. Works in <strong>Gutenberg and Classic Editor<\/strong>. No database migration \u2014 upload and activate over your current install.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":4},"assets_icons":{"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3491943,"resolution":"256x256","location":"assets","locale":"","width":254,"height":261}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3491943,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3491943,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0","1.4.3.3","1.4.4","1.5","1.5.1","1.6.0","1.7.0","1.7.1","1.7.2","1.7.3","1.7.4","1.8.0","1.8.1","1.9.0","2.0.0","2.1","2.2.0","2.2.1","2.2.2","2.3.0","2.3.1","2.3.2","2.4.0","2.4.1","2.4.2","2.4.3","2.5.0","2.5.1"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3549362,"resolution":"1","location":"assets","locale":"","width":1554,"height":1651},"screenshot-10.jpg":{"filename":"screenshot-10.jpg","revision":3549362,"resolution":"10","location":"assets","locale":"","width":1557,"height":1521},"screenshot-11.jpg":{"filename":"screenshot-11.jpg","revision":3549362,"resolution":"11","location":"assets","locale":"","width":513,"height":1578},"screenshot-12.jpg":{"filename":"screenshot-12.jpg","revision":3549362,"resolution":"12","location":"assets","locale":"","width":530,"height":1578},"screenshot-13.jpg":{"filename":"screenshot-13.jpg","revision":3549362,"resolution":"13","location":"assets","locale":"","width":491,"height":1203},"screenshot-14.jpg":{"filename":"screenshot-14.jpg","revision":3549362,"resolution":"14","location":"assets","locale":"","width":534,"height":1590},"screenshot-15.jpg":{"filename":"screenshot-15.jpg","revision":3549362,"resolution":"15","location":"assets","locale":"","width":564,"height":797},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3549362,"resolution":"2","location":"assets","locale":"","width":1554,"height":1433},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3549362,"resolution":"3","location":"assets","locale":"","width":1500,"height":1131},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3549362,"resolution":"4","location":"assets","locale":"","width":1500,"height":1275},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3549362,"resolution":"5","location":"assets","locale":"","width":2664,"height":1437},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3549362,"resolution":"6","location":"assets","locale":"","width":1774,"height":1395},"screenshot-7.jpg":{"filename":"screenshot-7.jpg","revision":3549362,"resolution":"7","location":"assets","locale":"","width":2652,"height":1608},"screenshot-8.jpg":{"filename":"screenshot-8.jpg","revision":3549362,"resolution":"8","location":"assets","locale":"","width":2556,"height":1065},"screenshot-9.jpg":{"filename":"screenshot-9.jpg","revision":3549362,"resolution":"9","location":"assets","locale":"","width":1798,"height":1521}},"screenshots":{"1":"<strong>Google Discover score WordPress<\/strong> \u2014 Publication Readiness: Editorial + Discover twin gauges and Next Best Action","2":"<strong>Search Console author analytics (Pro)<\/strong> \u2014 Author Performance: team cards, GSC clicks, Summary \/ Articles \/ Coaching tabs","3":"<strong>Google Search Console WordPress sync (Pro)<\/strong> \u2014 service account, property, Test + Sync now","4":"<strong>LiveBlogPosting schema workflow<\/strong> \u2014 breaking news mode, live H3 updates, JSON-LD ready","5":"<strong>Editorial workflow dashboard<\/strong> \u2014 tasks, KPIs, desk overview, My Inbox","6":"<strong>Google Trends and Google News radar<\/strong> \u2014 Trend Radar in the editor sidebar","7":"<strong>Smart tags newsroom<\/strong> \u2014 confidence-scored suggestions, one-click insert","8":"<strong>NewsArticle schema markup<\/strong> \u2014 JSON-LD graph in page source (NewsArticle \/ LiveBlogPosting)","9":"<strong>Newsroom setup wizard<\/strong> \u2014 four steps, under one minute"}},"plugin_section":[],"plugin_tags":[148285,252696,264770,125621,127115],"plugin_category":[46],"plugin_contributors":[257671],"plugin_business_model":[],"class_list":["post-287352","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-assistant","plugin_tags-google-discover","plugin_tags-newsroom-workflow","plugin_tags-schema-markup","plugin_tags-search-console","plugin_category-editor-and-writing","plugin_contributors-koskar22","plugin_committers-koskar22"],"banners":{"banner":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/banner-772x250.jpg?rev=3491943","banner_2x":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/banner-1544x500.jpg?rev=3491943","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/icon-256x256.jpg?rev=3491943","icon_2x":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/icon-256x256.jpg?rev=3491943","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-1.jpg?rev=3549362","caption":"<strong>Google Discover score WordPress<\/strong> \u2014 Publication Readiness: Editorial + Discover twin gauges and Next Best Action"},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-2.jpg?rev=3549362","caption":"<strong>Search Console author analytics (Pro)<\/strong> \u2014 Author Performance: team cards, GSC clicks, Summary \/ Articles \/ Coaching tabs"},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-3.jpg?rev=3549362","caption":"<strong>Google Search Console WordPress sync (Pro)<\/strong> \u2014 service account, property, Test + Sync now"},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-4.jpg?rev=3549362","caption":"<strong>LiveBlogPosting schema workflow<\/strong> \u2014 breaking news mode, live H3 updates, JSON-LD ready"},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-5.jpg?rev=3549362","caption":"<strong>Editorial workflow dashboard<\/strong> \u2014 tasks, KPIs, desk overview, My Inbox"},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-6.jpg?rev=3549362","caption":"<strong>Google Trends and Google News radar<\/strong> \u2014 Trend Radar in the editor sidebar"},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-7.jpg?rev=3549362","caption":"<strong>Smart tags newsroom<\/strong> \u2014 confidence-scored suggestions, one-click insert"},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-8.jpg?rev=3549362","caption":"<strong>NewsArticle schema markup<\/strong> \u2014 JSON-LD graph in page source (NewsArticle \/ LiveBlogPosting)"},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-9.jpg?rev=3549362","caption":"<strong>Newsroom setup wizard<\/strong> \u2014 four steps, under one minute"},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-10.jpg?rev=3549362","caption":""},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-11.jpg?rev=3549362","caption":""},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-12.jpg?rev=3549362","caption":""},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-13.jpg?rev=3549362","caption":""},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-14.jpg?rev=3549362","caption":""},{"src":"https:\/\/ps.w.org\/newsroom-ai-assistant\/assets\/screenshot-15.jpg?rev=3549362","caption":""}],"raw_content":"<!--section=description-->\n<p>Optimize articles for <strong>Google Discover<\/strong>, <strong>Google News<\/strong>, and <strong>web search<\/strong>. Add <strong>NewsArticle<\/strong> and <strong>LiveBlogPosting<\/strong> schema markup, <strong>Search Console<\/strong> traffic analytics, editorial assignments, and newsroom tools \u2014 directly inside WordPress. Works in <strong>Gutenberg<\/strong> and <strong>Classic Editor<\/strong>.<\/p>\n\n<h4>Who is this plugin for?<\/h4>\n\n<p>Perfect for:<\/p>\n\n<ul>\n<li>News websites and online newspapers<\/li>\n<li>Magazines and digital publishers<\/li>\n<li>Editorial teams and multi-author WordPress sites<\/li>\n<li>Sites targeting <strong>Google Discover<\/strong> and <strong>Google News<\/strong> traffic<\/li>\n<li>Publishers who outgrew generic SEO plugins but still use Yoast or Rank Math<\/li>\n<\/ul>\n\n<h4>NewsArticle &amp; LiveBlogPosting schema markup<\/h4>\n\n<p>Structured data built for publishers \u2014 not generic blog schema:<\/p>\n\n<ul>\n<li><strong>NewsArticle<\/strong> JSON-LD \u2014 <code>@graph<\/code> with Organization, WebPage, author <code>Person<\/code>, geo, <code>about<\/code> \/ <code>mentions<\/code> from entity tags<\/li>\n<li><strong>LiveBlogPosting<\/strong> \u2014 breaking news mode with live H3 updates and auto-expire<\/li>\n<li><strong>CollectionPage<\/strong> from story timelines; optional editor FAQ block (opt-in, off by default)<\/li>\n<li><strong>Wikidata entity enrichment<\/strong> on tags (lazy, on assign)<\/li>\n<li>Richness presets (Minimal \/ Balanced \/ Full) \u2014 complements Yoast SEO, Rank Math, AIOSEO, SEOPress<\/li>\n<\/ul>\n\n<h4>Google Discover &amp; Google News optimization<\/h4>\n\n<ul>\n<li><strong>Discover Score<\/strong> \u2014 pre-publish checklist: hero 1200px+, 16:9, headline quality, topic\/tags, OG image, timeliness<\/li>\n<li><strong>Trend Radar<\/strong> \u2014 Google Trends + <strong>Google News<\/strong> RSS in the editor sidebar (localized by country)<\/li>\n<li><strong>Breaking news mode<\/strong> \u2014 faster IndexNow\/Google ping, LiveBlog schema, optional \u201cdeveloping story\u201d badge<\/li>\n<li><strong>Pro:<\/strong> real <strong>Discover<\/strong> and <strong>Google News clicks<\/strong> from Search Console sync (separate from the editorial score)<\/li>\n<\/ul>\n\n<h4>Newsroom OS vs Yoast SEO &amp; Rank Math<\/h4>\n\n<p><strong>Yoast SEO \/ Rank Math<\/strong> excel at meta titles, descriptions, XML sitemaps, and general on-page SEO.<\/p>\n\n<p><strong>Newsroom OS<\/strong> adds the <strong>newsroom layer<\/strong> they do not cover:<\/p>\n\n<ul>\n<li>Google <strong>Discover readiness<\/strong> scoring in the editor<\/li>\n<li><strong>Google News<\/strong> + Discover <strong>Search Console<\/strong> analytics per writer (Pro)<\/li>\n<li><strong>NewsArticle \/ LiveBlogPosting<\/strong> publisher schema graph<\/li>\n<li>Editorial <strong>workflow<\/strong> \u2014 tasks, My Inbox, chief dashboard, Chief Insights (Pro)<\/li>\n<li><strong>Author performance<\/strong> coaching tied to real traffic (Pro)<\/li>\n<li>Smart tags, duplicate-tag guard, archive internal links, GSC traffic-drop alerts (Pro)<\/li>\n<\/ul>\n\n<p>Use both together \u2014 Newsroom OS reads your SEO plugin meta and adds publisher-specific signals.<\/p>\n\n<h4>Update 2.3 \u2014 Desk workflow + Chief command upgrades (Pro)<\/h4>\n\n<p><strong>Newsroom OS 2.3<\/strong> adds <strong>brief \u2192 editorial task<\/strong>, <strong>AI desk overview<\/strong> (Author Performance), <strong>Kanban drag-and-drop<\/strong>, <strong>War room<\/strong> live KPIs (AJAX), <strong>CrUX \/ Core Web Vitals<\/strong> (PageSpeed Insights), <strong>GSC device channel toggle<\/strong>, and <strong>category-aware AI prompts<\/strong>. No database migration. Configure CrUX under <strong>Settings \u2192 Instant Indexing<\/strong> (PageSpeed API key).<\/p>\n\n<h4>Update 2.2 \u2014 AI Assist SEO pipeline (Pro BYOK)<\/h4>\n\n<p><strong>Newsroom OS 2.2<\/strong> upgrades <strong>AI Assist (Pro)<\/strong> for newsroom SEO: shared <strong>article analysis<\/strong> (keywords, entities, intent), stronger <strong>headline<\/strong>, <strong>optimize<\/strong>, and <strong>trend<\/strong> suggestions, <strong>meta description<\/strong> generation with one-click apply to Yoast SEO \/ Rank Math (or excerpt), smarter <strong>tag match<\/strong>, and <strong>Discover Score<\/strong> entity signals when analysis is saved on the post. <strong>Editor blocks<\/strong> (story timeline, key takeaways, FAQ) use semantic HTML, dedicated CSS (<code>story-cluster.css<\/code>, <code>newsai-content-blocks.css<\/code>), and <strong>no empty DOM nodes<\/strong> in published markup.<\/p>\n\n<h4>Big update 2.1 \u2014 Chief Insights, AI Daily Brief, and indexing diagnostics<\/h4>\n\n<p><strong>Newsroom OS 2.1<\/strong> adds <strong>Chief Insights<\/strong> (desk-wide KPIs, channel tables, top categories\/articles), <strong>AI Daily Brief<\/strong> (Morning\/Evening), and <strong>Print to PDF<\/strong>. Clear <strong>Last attempted vs Last successful<\/strong> diagnostics for <strong>Google Indexing API<\/strong> and <strong>IndexNow<\/strong>.<\/p>\n\n<p>Preview Pro on <a href=\"https:\/\/newsos.io\/\">newsos.io<\/a>.<\/p>\n\n<h4>Big update 2.0 \u2014 Google Search Console meets your newsroom<\/h4>\n\n<p><strong>Newsroom OS 2.0<\/strong> connects your editorial desk to <strong>real Google traffic<\/strong>. Writers get <strong>Focus<\/strong> (article quality) and <strong>Discover readiness<\/strong> (distribution checklist) in the editor \u2014 separate from <strong>Search Console clicks<\/strong> (Discover, Google News, and web search). Chiefs see who publishes well <em>and<\/em> who earns traffic, in one dashboard.<\/p>\n\n<p><strong>Pro license:<\/strong> <a href=\"https:\/\/newsos.io\/\">newsos.io<\/a> \u2014 one key per site, same plugin you already install. <strong>Live Pro demo available on newsos.io<\/strong>.<\/p>\n\n<h4>Classic Editor &amp; Gutenberg (Block Editor)<\/h4>\n\n<p>Newsroom OS is built for <strong>real newsroom setups<\/strong> \u2014 including sites that still use Classic Editor, sites on full Gutenberg, and hybrid installs (block editor with the classic Tags metabox).<\/p>\n\n<p><strong>Gutenberg \/ Block Editor<\/strong><\/p>\n\n<ul>\n<li>Publication Readiness sidebar (Editorial + Discover twin gauges, Next Best Action)<\/li>\n<li>REST-aware duplicate tag guard (snackbar + \u201cUse existing\u201d \/ \u201cKeep anyway\u201d)<\/li>\n<li>Breaking news mode, live H3 update insertion via blocks<\/li>\n<li>Trend Radar, Smart Tags, AI Assist (Pro) in the editor sidebar<\/li>\n<li>JS strings via <code>wp_set_script_translations<\/code> (el, en, de, es)<\/li>\n<\/ul>\n\n<p><strong>Classic Editor<\/strong><\/p>\n\n<ul>\n<li>Same Publication Readiness panel and scores (TinyMCE \/ <code>#content<\/code> hooks \u2014 no block editor APIs on classic screens)<\/li>\n<li>Classic Tags metabox duplicate guard (AJAX before the tag chip is added)<\/li>\n<li>Breaking mode, live updates, and smart tag insert via Classic UI<\/li>\n<li><strong>Stability:<\/strong> Gutenberg-only APIs (<code>wp.data.subscribe<\/code>, <code>getEditedPostContent<\/code>) run only when <code>block-editor-page<\/code> is present \u2014 prevents Classic Editor <code>blocks.min.js<\/code> stack overflows on large sites<\/li>\n<\/ul>\n\n<p><strong>Works with any theme<\/strong> (Astra, GeneratePress, Newspaper, NewsMag, Flavor, etc.) and alongside Yoast SEO, Rank Math, WooCommerce, and SureCart.<\/p>\n\n<p><strong>WordPress 7.0:<\/strong> Tested through <strong>WordPress 7.0<\/strong> (Classic Editor, Gutenberg, and wp-admin dashboard). Requires <strong>PHP 7.4+<\/strong> (PHP 8.1+ recommended).<\/p>\n\n<h4>Six pillars (2.0)<\/h4>\n\n<p><strong>1. Discover optimization<\/strong><\/p>\n\n<ul>\n<li><strong>Publication Readiness<\/strong> \u2014 twin scores in the editor: <strong>Editorial (Focus)<\/strong> and <strong>Discover readiness<\/strong>. They are separate on purpose.<\/li>\n<li><strong>Discover Score<\/strong> \u2014 Google-aligned checklist: hero 1200px+, 16:9, 300k pixels, alt; clear 55\u201370 headline (anti-clickbait); topic\/tags; optional trend fit; saved OG image when available.<\/li>\n<li><strong>Breaking news mode<\/strong> \u2014 one toggle: LiveBlogPosting schema, faster IndexNow\/Google ping, optional \u201cdeveloping story\u201d badge, auto-expire, live-update workflow (H3 headings).<\/li>\n<li><strong>Trend Radar<\/strong> \u2014 Google Trends + Google News in the sidebar, localized per country.<\/li>\n<\/ul>\n\n<p><strong>2. Google Search Console traffic (Pro) \u2014 NEW in 2.0<\/strong><\/p>\n\n<ul>\n<li><strong>Service account sync<\/strong> \u2014 connect Search Console with <code>webmasters.readonly<\/code>; separate token from the Indexing API.<\/li>\n<li><strong>Discover, Google News, and web search<\/strong> \u2014 per-post clicks, impressions, CTR, and average position stored in your database (<code>wp_newsai_gsc_performance<\/code>).<\/li>\n<li><strong>Sync now<\/strong> in settings plus <strong>daily cron<\/strong> (04:00 site time) when Pro is active.<\/li>\n<li><strong>Author Performance<\/strong> \u2014 real clicks per writer, top articles by traffic, coaching tab, 7d \/ 30d \/ 90d windows.<\/li>\n<li><strong>Posts list<\/strong> \u2014 <strong>GSC (30d)<\/strong> column for chiefs (<code>edit_others_posts<\/code>).<\/li>\n<li><strong>My Inbox<\/strong> \u2014 writers see their own GSC totals when sync is enabled.<\/li>\n<li><strong>Clear labeling<\/strong> \u2014 Discover Score = editorial readiness; GSC numbers = measured Google clicks (not the same metric).<\/li>\n<\/ul>\n\n<p><strong>3. Semantic schema &amp; entities<\/strong><\/p>\n\n<ul>\n<li><strong>NewsArticle \/ LiveBlogPosting JSON-LD<\/strong> \u2014 <code>@graph<\/code> with Organization, WebPage, author <code>Person<\/code>, geo, <code>about<\/code> \/ <code>mentions<\/code>.<\/li>\n<li><strong>Entity tags<\/strong> \u2014 Wikidata Q-IDs, coordinates, entity types woven into schema; lazy enrichment when tags are used (1.9+).<\/li>\n<li><strong>Richness presets<\/strong> \u2014 Minimal \/ Balanced \/ Full; optional <code>articleBody<\/code> modes (omit, full, first N words).<\/li>\n<li><strong>Works with Yoast SEO &amp; Rank Math<\/strong> \u2014 reads your meta; does not replace them.<\/li>\n<\/ul>\n\n<p><strong>4. Editorial workflow<\/strong><\/p>\n\n<ul>\n<li><strong>Tasks &amp; assignments<\/strong> \u2014 deadlines, keywords, briefs, reference links.<\/li>\n<li><strong>Dashboard<\/strong> \u2014 active \/ overdue \/ completed, KPIs, SEO health.<\/li>\n<li><strong>Roles<\/strong> \u2014 chiefs see the full desk; writers see <strong>My Inbox<\/strong> only.<\/li>\n<li><strong>GSC traffic-drop alerts (Pro)<\/strong> \u2014 surfaces articles losing Search Console clicks vs the prior period.<\/li>\n<\/ul>\n\n<p><strong>5. AI newsroom (Pro, BYOK)<\/strong><\/p>\n\n<ul>\n<li><strong>OpenAI, Gemini, or Groq<\/strong> \u2014 your API key stays on your site; free tiers supported (Groq \/ Gemini).<\/li>\n<li><strong>Discover-optimized titles<\/strong> (55\u201370 chars, five angles), targeted optimization hints, trend-aware keywords, <strong>AI Tag Match<\/strong> from your site taxonomy.<\/li>\n<li><strong>Geo-aware language<\/strong> \u2014 answers in the language of your configured region (40+ locales).<\/li>\n<\/ul>\n\n<p><strong>6. Knowledge layer<\/strong><\/p>\n\n<ul>\n<li><strong>Smart Tag Suggester<\/strong> \u2014 weighted, confidence-scored tags from <em>your<\/em> taxonomy; one-click insert; duplicate-tag guard (Pro).<\/li>\n<li><strong>Story timelines<\/strong> \u2014 archive clusters + internal-link blocks + CollectionPage schema.<\/li>\n<li><strong>Archive link finder<\/strong> \u2014 semantic internal links from your own back catalog (accent-aware scoring).<\/li>\n<li><strong>Author E-E-A-T<\/strong> \u2014 profiles, schema <code>Person<\/code>, performance analytics (Pro).<\/li>\n<\/ul>\n\n<p>UI in <strong>Greek, English, German, and Spanish<\/strong> (per-site language picker). See <code>languages\/README.txt<\/code> for gettext catalogs.<\/p>\n\n\n\n<h3>\ud83c\udd93 What you get for FREE<\/h3>\n\n<p>Everything below ships in the free plugin \u2014 no signup, no rate limits, no nag screens:<\/p>\n\n<ul>\n<li><strong>Publication Readiness<\/strong> \u2014 Editorial score + <strong>Discover Score<\/strong>, Next Best Action, detailed checklists<\/li>\n<li><strong>Breaking news mode<\/strong> \u2014 LiveBlog schema workflow with auto-expire (when LiveBlog is enabled in settings)<\/li>\n<li><strong>Smart Tag Suggester<\/strong> \u2014 confidence levels, one-click insert<\/li>\n<li><strong>Editorial dashboard<\/strong> \u2014 tasks, deadlines, keywords, briefings<\/li>\n<li><strong>Trend Radar<\/strong> \u2014 Google Trends + News in the editor<\/li>\n<li><strong>Auto-story timeline<\/strong> + archive internal-link finder<\/li>\n<li><strong>NewsArticle JSON-LD<\/strong> \u2014 entities, geo, E-E-A-T author signals<\/li>\n<li><strong>SEO auditor<\/strong>, <strong>4-step wizard<\/strong>, <strong>4-language UI<\/strong><\/li>\n<li><strong>My Inbox personal stats<\/strong> \u2014 your own 30-day Focus &amp; Discover readiness (team GSC analytics are Pro)<\/li>\n<\/ul>\n\n\n\n<h3>\ud83d\ude80 PRO Features (Buy at [newsos.io](https:\/\/newsos.io\/) \u2014 \u20ac29\/month per site)<\/h3>\n\n<p>Pro is a single license key tied to one site, activated inside your dashboard at \"Editorial Control \u2192 \ud83d\ude80 PRO\". No separate plugin to install \u2014 Pro unlocks inside the same plugin you already trust. Need more than one site? Buy one license per site at newsos.io.<\/p>\n\n<h4>\ud83d\udcca Google Search Console integration (NEW in 2.0)<\/h4>\n\n<p>Stop guessing which writers earn traffic. Newsroom OS pulls <strong>Search Analytics<\/strong> into WordPress:<\/p>\n\n<ul>\n<li><strong>Three channels<\/strong> \u2014 Discover clicks, Google News clicks, and web search clicks (plus impressions, CTR, position where available).<\/li>\n<li><strong>Per-post storage<\/strong> \u2014 map GSC page URLs to posts and authors; aggregate by 7 \/ 30 \/ 90 days.<\/li>\n<li><strong>Settings \u2192 PRO \u2192 Indexing<\/strong> \u2014 paste your service account JSON, set the property (<code>sc-domain:example.com<\/code> or URL-prefix), test connection, <strong>Sync now<\/strong>.<\/li>\n<li><strong>Automatic daily sync<\/strong> \u2014 Pro + enabled + valid credentials.<\/li>\n<li><strong>Privacy<\/strong> \u2014 data stays in your database; we do not proxy GSC through newsos.io.<\/li>\n<\/ul>\n\n<h4>\ud83d\udcc8 Author Performance 2.0 (Pro)<\/h4>\n\n<p>Redesigned chief dashboard (<strong>Editorial Control \u2192 Author Performance<\/strong>):<\/p>\n\n<ul>\n<li><strong>Your performance<\/strong> card for chiefs who also write \u2014 same expand\/collapse UX as the team grid.<\/li>\n<li><strong>Compact team cards<\/strong> \u2014 posts, Focus readiness, web clicks at a glance; expand for full detail.<\/li>\n<li><strong>Tabs inside each author<\/strong> \u2014 <strong>Summary<\/strong> (editorial quality + categories + GSC totals), <strong>Articles<\/strong> (latest posts + top traffic), <strong>Coaching<\/strong> (Discover weak spots + action links).<\/li>\n<li><strong>GSC coach tips<\/strong> on low click counts (hero image, headlines, timeliness).<\/li>\n<li><strong>Search &amp; sort<\/strong> \u2014 filter by name; sort by posts, web clicks, Focus, or A\u2013Z.<\/li>\n<li><strong>7d \/ 30d \/ 90d<\/strong> \u2014 live AJAX refresh without reloading the page.<\/li>\n<li>Cached aggregates with smart invalidation on publish, task completion, score change, and GSC sync.<\/li>\n<\/ul>\n\n<h4>\ud83e\udded Chief Insights + AI Daily Brief (NEW in 2.1)<\/h4>\n\n<p>Built for editor-in-chief oversight in one screen:<\/p>\n\n<ul>\n<li><strong>Chief Insights tab<\/strong> \u2014 summary-first KPI strip + channel performance + top categories + top articles + top keyword\/entity signals.<\/li>\n<li><strong>PRO live \/ FREE demo<\/strong> \u2014 free sites see a realistic demo layout; Pro shows live desk data.<\/li>\n<li><strong>AI Daily Brief<\/strong> \u2014 one click executive summary with <strong>Morning mode<\/strong> (planning) and <strong>Evening mode<\/strong> (retrospective + next actions).<\/li>\n<li><strong>Print to PDF<\/strong> \u2014 export the current chief view for standups and editorial meetings.<\/li>\n<li><strong>Indexing diagnostics polish<\/strong> \u2014 Google + IndexNow now show <strong>Last attempted<\/strong> and <strong>Last successful<\/strong> URL\/ping, plus health badge (Healthy \/ Degraded \/ Unknown).<\/li>\n<\/ul>\n\n<h4>\ud83e\udd16 AI Assist (BYOK \u2013 Bring Your Own Key)<\/h4>\n\n<p>Bring your own API key for <strong>OpenAI<\/strong>, <strong>Google Gemini<\/strong>, or <strong>Groq<\/strong>. Newsroom OS never proxies AI traffic through our servers \u2014 your key stays on your site.<\/p>\n\n<p><strong>\ud83d\udcb8 Free AI tier supported<\/strong>: Groq offers a very generous free tier (no credit card) on <code>llama-3.3-70b-versatile<\/code>. The settings page links directly to:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/platform.openai.com\/api-keys\">https:\/\/platform.openai.com\/api-keys<\/a> (OpenAI)<\/li>\n<li><a href=\"https:\/\/aistudio.google.com\/apikey\">https:\/\/aistudio.google.com\/apikey<\/a> (Google Gemini \u2014 free tier available)<\/li>\n<li><a href=\"https:\/\/console.groq.com\/keys\">https:\/\/console.groq.com\/keys<\/a> (Groq \u2014 free tier, no card required)<\/li>\n<\/ul>\n\n<p>You can write your first AI-assisted article with $0 of API spend.<\/p>\n\n<p><strong>Direct in-editor actions:<\/strong><\/p>\n\n<ul>\n<li>\ud83c\udfaf <strong>Discover-optimized Title Suggestions<\/strong> \u2014 five alternative headlines per run (facts \/ impact \/ aftermath \/ authority \/ Discover hook), 55\u201370 characters, live validation.<\/li>\n<li>\u2728 <strong>Targeted Content Optimization<\/strong> \u2014 non-rewrite suggestions per paragraph (readability \/ seo \/ eeat \/ structure \/ factcheck).<\/li>\n<li>\ud83d\udd25 <strong>Trend-Aware Keywords<\/strong> \u2014 regional Google Trends fit with placement hints.<\/li>\n<li>\ud83c\udff7\ufe0f <strong>AI Tag Match<\/strong> \u2014 semantic tag picks from <em>your<\/em> taxonomy pool.<\/li>\n<li>FAQ Block generation in valid FAQPage JSON-LD<\/li>\n<li>Key Takeaways block<\/li>\n<li>Per-user daily rate limits + transient caching<\/li>\n<\/ul>\n\n<p><strong>\ud83c\udf0d Geo-aware language output<\/strong> \u2014 40+ locales; filter <code>newsai_ai_geo_to_locale<\/code> for custom multilingual newsrooms.<\/p>\n\n<h4>\ud83d\udcac Editorial Comms (Task Threads + Email)<\/h4>\n\n<ul>\n<li>Two-way messaging thread per task \u2014 chief \u2194 assignee, with unread badges<\/li>\n<li>Capability-aware visibility: writers only see their own threads<\/li>\n<li>Configurable email alerts: new assignment, new message, task completed<\/li>\n<li>Auto-purge old threads on a configurable retention window<\/li>\n<\/ul>\n\n<h4>\ud83d\udee1\ufe0f Duplicate-Tag Guard<\/h4>\n\n<p>Site-wide audit for near-duplicate tags; merge and consolidate authority. Integrated with Smart Tags in Gutenberg and Classic.<\/p>\n\n<h4>\ud83d\udcc9 GSC traffic-drop alerts<\/h4>\n\n<p>Compares synced Search Console post-level clicks across two periods and highlights articles with meaningful traffic loss \u2014 in Chief Insights and the weekly desk email. Replaces the retired Content Decay auto-task cron.<\/p>\n\n<h4>\u26a1 Instant Indexing API<\/h4>\n\n<p>Google Indexing API (service account JSON or bearer token) + IndexNow for Bing\/Yandex. Async pings on publish; separate credentials from GSC read-only sync.<\/p>\n\n<h4>\ud83d\udcf0 LiveBlogPosting Schema<\/h4>\n\n<p>One toggle turns a post into valid LiveBlogPosting JSON-LD for Top Stories live coverage.<\/p>\n\n<h4>\ud83d\uddbc\ufe0f Google Discover Image Validator<\/h4>\n\n<p>Pre-publish check for the 1200px-wide featured image minimum Discover expects.<\/p>\n\n<h4>\ud83d\udd27 Priority Support &amp; Updates<\/h4>\n\n<p>License-gated updates through the same plugin. Verify at newsos.io \u2014 no re-uploading a different zip.<\/p>\n\n\n\n<h3>Why publishers choose us<\/h3>\n\n<ul>\n<li><strong>Category:<\/strong> Discover &amp; publishing infrastructure \u2014 not \u201canother SEO plugin\u201d<\/li>\n<li><strong>2.0:<\/strong> Editorial readiness <strong>plus<\/strong> real Search Console traffic per writer<\/li>\n<li>Trusted by <strong>2,000+<\/strong> active installs in <strong>20+<\/strong> countries<\/li>\n<li>Built for high-traffic desks: event-driven editor JS, strict API timeouts, smart caching<\/li>\n<li><strong>Zero conflicts<\/strong> with Yoast \/ Rank Math \/ SureCart \/ WooCommerce<\/li>\n<li><strong>30-day money-back<\/strong> guarantee on Pro<\/li>\n<\/ul>\n\n<p>\ud83d\udc49 <strong>Buy Pro at <a href=\"https:\/\/newsos.io\/\">newsos.io<\/a><\/strong> \u2014 \u20ac29\/month or $233\/year (save 33%). One license key per site, instant delivery via email.<\/p>\n\n\n\n<h3>Translators \/ i18n<\/h3>\n\n<ul>\n<li>Text domain: <strong>newsroom-ai-assistant<\/strong> \u2014 every string uses <code>__()<\/code>, <code>_e()<\/code>, <code>esc_html__()<\/code>, and the editor script is registered with <code>wp_set_script_translations()<\/code> so Gutenberg sidebar strings translate too.<\/li>\n<li>Compiled <code>.mo<\/code> catalogs for <strong>el, en_US, de_DE, es_ES<\/strong> ship under <code>\/languages<\/code>, alongside the corresponding <code>newsroom-ai-assistant-{locale}-newsai-script.json<\/code> files for JS translations.<\/li>\n<li>The plugin loads catalogs directly with the resolved request locale (<code>determine_locale()<\/code>), making it compatible with the WordPress 6.7+ Just-In-Time loader and the new <code>WP_Translation_Controller<\/code>. The Site Details \u2192 Language picker switches the UI language per site without touching the global WP locale.<\/li>\n<li>Want to add another language? Drop a new <code>newsroom-ai-assistant-{locale}.mo<\/code> (and optionally the matching <code>-newsai-script.json<\/code>) into <code>\/languages<\/code>. Loco Translate or <code>wp i18n make-mo<\/code> are the usual tools. See <code>languages\/README.txt<\/code> for details.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>, or install via Plugins \u2192 Add New \u2192 Upload.<\/li>\n<li>Activate \"Newsroom OS \u2013 Google Discover, Google News, Schema &amp; Editorial Workflow\".<\/li>\n<li>Run the 4-step Wizard (it auto-launches on first activation).<\/li>\n<li>Open any post in <strong>Gutenberg<\/strong> or <strong>Classic Editor<\/strong> \u2014 the Newsroom OS sidebar appears on the right.<\/li>\n<li>(Optional) Activate Pro at \"Editorial Control \u2192 \ud83d\ude80 PRO\" with your <a href=\"https:\/\/newsos.io\/\">newsos.io<\/a> license key.<\/li>\n<li>(Pro) <strong>Settings \u2192 PRO \u2192 Indexing<\/strong> \u2014 add your Search Console service account, set the property, run <strong>Test<\/strong> and <strong>Sync now<\/strong> to populate Author Performance.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20newsroom%20os%20a%20google%20discover%20plugin%20for%20wordpress%3F\"><h3>Is Newsroom OS a Google Discover plugin for WordPress?<\/h3><\/dt>\n<dd><p>Yes \u2014 for <strong>publishers and newsrooms<\/strong>, not generic blogs. The free <strong>Discover Score<\/strong> checklist scores hero image (1200px+, 16:9), headline quality, topic\/tags, OG image, and timeliness before publish. <strong>Trend Radar<\/strong> pulls Google Trends and News for your target country. Pro adds <strong>real Discover clicks<\/strong> from Search Console sync (separate metric from the editorial score).<\/p><\/dd>\n<dt id=\"is%20this%20a%20google%20search%20console%20plugin%3F\"><h3>Is this a Google Search Console plugin?<\/h3><\/dt>\n<dd><p><strong>Partially \u2014 built for editorial teams.<\/strong> Pro connects via service account (<code>webmasters.readonly<\/code>), syncs <strong>Discover, Google News, and web search<\/strong> clicks into WordPress, and shows them on <strong>Author Performance<\/strong>, <strong>Chief Insights<\/strong>, <strong>My Inbox<\/strong>, and the Posts list. It does <strong>not<\/strong> replace the Search Console UI \u2014 it surfaces GSC data where writers and chiefs already work.<\/p><\/dd>\n<dt id=\"does%20newsroom%20os%20add%20schema%20markup%3F\"><h3>Does Newsroom OS add schema markup?<\/h3><\/dt>\n<dd><p>Yes. <strong>NewsArticle<\/strong> and <strong>LiveBlogPosting<\/strong> JSON-LD with Organization, WebPage, author <code>Person<\/code>, geo, and entity <code>about<\/code> \/ <code>mentions<\/code> from your tags (Wikidata enrichment). Story timelines output <strong>CollectionPage<\/strong> schema. Works alongside Yoast SEO, Rank Math, AIOSEO, and SEOPress \u2014 Newsroom OS adds newsroom-specific graph enrichment, not duplicate meta tags.<\/p><\/dd>\n<dt id=\"does%20it%20include%20an%20ai%20assistant%20for%20writers%3F\"><h3>Does it include an AI assistant for writers?<\/h3><\/dt>\n<dd><p><strong>Pro (BYOK):<\/strong> OpenAI, Google Gemini, or Groq with your own API key \u2014 titles, optimize, trend keywords, meta description (apply to Yoast\/Rank Math), tag match, and content brief from trends. Free tier: Publication Readiness, Smart Tags, tasks, Discover Score, schema, and Trend Radar without AI.<\/p><\/dd>\n<dt id=\"what%20is%20the%20newsroom%20workflow%20feature%20set%3F\"><h3>What is the newsroom workflow feature set?<\/h3><\/dt>\n<dd><p><strong>Tasks &amp; assignments<\/strong> (deadlines, keywords, briefs, reference links), <strong>Dashboard<\/strong> KPIs and kanban-style desk view, <strong>My Inbox<\/strong> for writers, <strong>task threads<\/strong> + email alerts (Pro), <strong>Breaking news mode<\/strong> with live updates, <strong>GSC traffic-drop alerts<\/strong> (Pro), and <strong>weekly desk report email<\/strong> (Pro). Chiefs use <strong>Chief Insights<\/strong>; writers see only their assignments.<\/p><\/dd>\n<dt id=\"how%20does%20newsroom%20os%20help%20with%20google%20discover%3F\"><h3>How does Newsroom OS help with Google Discover?<\/h3><\/dt>\n<dd><p>The <strong>Discover Score<\/strong> checklist runs before publish: featured image size and aspect ratio, headline length and clickbait cues, topic\/tags, OG image, author signals, and internal links. <strong>Trend Radar<\/strong> surfaces rising topics from Google Trends and News. Pro adds measured <strong>Discover clicks<\/strong> from Search Console so chiefs can coach writers on outcomes, not just checklists.<\/p><\/dd>\n<dt id=\"what%20is%20google%20discover%20optimization%20in%20wordpress%3F\"><h3>What is Google Discover optimization in WordPress?<\/h3><\/dt>\n<dd><p>It means aligning articles with Discover distribution signals \u2014 strong hero images, clear non-clickbait headlines, timely topics, entity-rich tags, and valid publisher schema \u2014 while tracking whether those choices correlate with <strong>real Discover traffic<\/strong> after publish (Pro GSC sync).<\/p><\/dd>\n<dt id=\"can%20newsroom%20os%20improve%20google%20discover%20visibility%3F\"><h3>Can Newsroom OS improve Google Discover visibility?<\/h3><\/dt>\n<dd><p>No plugin can guarantee Discover placement. Newsroom OS gives editors a <strong>repeatable pre-publish workflow<\/strong> (Discover Score + Focus), breaking-news LiveBlog tools, and (Pro) <strong>Search Console Discover metrics<\/strong> per post and author so you can iterate on what actually earns clicks.<\/p><\/dd>\n<dt id=\"does%20newsroom%20os%20support%20google%20news%3F\"><h3>Does Newsroom OS support Google News?<\/h3><\/dt>\n<dd><p>Yes. <strong>Trend Radar<\/strong> includes Google News headlines for your region. <strong>Pro GSC sync<\/strong> stores the <strong>Google News<\/strong> channel separately from Discover and web search \u2014 visible on Author Performance, Chief Insights, My Inbox, and the Posts list.<\/p><\/dd>\n<dt id=\"what%20is%20new%20in%20version%202.0%3F\"><h3>What is new in version 2.0?<\/h3><\/dt>\n<dd><p><strong>Google Search Console integration (Pro):<\/strong> sync Discover, Google News, and web search metrics into WordPress; show real clicks on Author Performance, My Inbox, and the Posts list. Plus a redesigned Author Performance UI (tabs, coaching, search\/sort, 7d\/30d\/90d). Requires a one-time database table on upgrade (<code>wp_newsai_gsc_performance<\/code>).<\/p><\/dd>\n<dt id=\"does%20newsroom%20os%20replace%20google%20search%20console%3F\"><h3>Does Newsroom OS replace Google Search Console?<\/h3><\/dt>\n<dd><p>No. You still use <a href=\"https:\/\/search.google.com\/search-console\">Google Search Console<\/a> for verification and property management. Newsroom OS <strong>reads<\/strong> Search Analytics via API and surfaces the numbers where your editors already work \u2014 next to Focus and Discover readiness scores.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20discover%20score%20and%20gsc%20discover%20clicks%3F\"><h3>What is the difference between Discover Score and GSC Discover clicks?<\/h3><\/dt>\n<dd><p><strong>Discover Score<\/strong> is an <strong>editorial readiness checklist<\/strong> in the post editor (image, headline, topic, OG, etc.) \u2014 it does not read Search Console. <strong>GSC Discover clicks<\/strong> are <strong>real measured traffic<\/strong> from Google after you enable sync. Both appear in Author Performance so chiefs can coach writers on quality <em>and<\/em> outcomes.<\/p><\/dd>\n<dt id=\"how%20do%20i%20connect%20google%20search%20console%3F\"><h3>How do I connect Google Search Console?<\/h3><\/dt>\n<dd><p>Pro license active \u2192 <strong>Settings \u2192 PRO \u2192 Indexing<\/strong> \u2192 enable GSC \u2192 paste a Google Cloud <strong>service account JSON<\/strong> with Search Console access to your property \u2192 enter the property exactly as in GSC (<code>sc-domain:example.com<\/code> or <code>https:\/\/www.example.com\/<\/code>) \u2192 <strong>Test<\/strong> \u2192 <strong>Sync now<\/strong>. Daily sync runs automatically when enabled.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20classic%20editor%20and%20gutenberg%3F\"><h3>Does it work with Classic Editor and Gutenberg?<\/h3><\/dt>\n<dd><p>Yes \u2014 <strong>both<\/strong>, out of the box. Publication Readiness, Discover Score, Trend Radar, Smart Tags, Breaking news mode, and live H3 updates work in <strong>Gutenberg<\/strong> and <strong>Classic Editor<\/strong>. Pro duplicate-tag guard uses REST in Gutenberg and AJAX in Classic.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20wordpress%207%3F\"><h3>Is it compatible with WordPress 7?<\/h3><\/dt>\n<dd><p>Yes. <strong>Tested up to WordPress 7.0<\/strong> on wp-admin, Gutenberg and Classic post editor, and REST\/AJAX flows. Minimum PHP <strong>7.4<\/strong>; PHP <strong>8.1+<\/strong> recommended for production newsrooms.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20my%20theme%3F\"><h3>Does it work with my theme?<\/h3><\/dt>\n<dd><p>Yes. Compatible with standard themes (Astra, GeneratePress, Newspaper, NewsMag, etc.). Frontend output is limited to optional schema, timeline blocks, and breaking badges.<\/p><\/dd>\n<dt id=\"will%20it%20conflict%20with%20yoast%20seo%20or%20rank%20math%3F\"><h3>Will it conflict with Yoast SEO or Rank Math?<\/h3><\/dt>\n<dd><p>No. Newsroom OS reads your SEO meta and adds editorial workflow, smart tags, scores, and JSON-LD enrichment. Yoast\/Rank Math keep meta tags and sitemaps.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20website%3F\"><h3>Will it slow down my website?<\/h3><\/dt>\n<dd><p>No. External requests use strict timeouts; dashboards use transients; editor JS is event-driven (no polling on the post screen). GSC sync runs on a schedule or manual action \u2014 not on every page view.<\/p><\/dd>\n<dt id=\"how%20does%20the%20smart%20tag%20system%20work%3F\"><h3>How does the Smart Tag system work?<\/h3><\/dt>\n<dd><p>In-browser ranking against <em>your<\/em> taxonomy (title, lead, body weighted). HIGH\/MEDIUM\/LOW confidence badges. Pro adds duplicate-tag guard and AI Tag Match (BYOK).<\/p><\/dd>\n<dt id=\"where%20do%20i%20buy%20pro%3F\"><h3>Where do I buy Pro?<\/h3><\/dt>\n<dd><p><a href=\"https:\/\/newsos.io\/\">https:\/\/newsos.io\/<\/a> \u2014 one license per site, 30-day money-back guarantee.<\/p><\/dd>\n<dt id=\"is%20there%20a%20live%20pro%20demo%20before%20i%20buy%3F\"><h3>Is there a live Pro demo before I buy?<\/h3><\/dt>\n<dd><p>Yes \u2014 visit <a href=\"https:\/\/newsos.io\/\">newsos.io<\/a> and open the live demo section to preview Pro dashboards and workflows in action.<\/p><\/dd>\n<dt id=\"what%20if%20i%20cancel%20pro%3F\"><h3>What if I cancel Pro?<\/h3><\/dt>\n<dd><p>Your site keeps working. Articles, tags, schema, tasks, and saved scores remain. GSC sync and Pro dashboards stop updating until you renew.<\/p><\/dd>\n<dt id=\"which%20ai%20providers%20does%20pro%20support%3F%20can%20i%20use%20ai%20for%20free%3F\"><h3>Which AI providers does Pro support? Can I use AI for free?<\/h3><\/dt>\n<dd><p><strong>OpenAI<\/strong>, <strong>Google Gemini<\/strong> (free tier at aistudio.google.com), and <strong>Groq<\/strong> (free tier at console.groq.com). Your key never leaves your server.<\/p><\/dd>\n<dt id=\"will%20the%20ai%20answer%20in%20my%20language%3F\"><h3>Will the AI answer in my language?<\/h3><\/dt>\n<dd><p>Yes \u2014 geo-aware prompts for 40+ locales (Greece \u2192 Greek, Brazil \u2192 Portuguese, etc.).<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20store%20private%20data%20off-site%3F\"><h3>Does the plugin store private data off-site?<\/h3><\/dt>\n<dd><p>No. Tasks, scores, GSC rows, and AI cache live in your database. Pro licensing validates once per day with newsos.io.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.5.1<\/h4>\n\n<ul>\n<li>SCHEMA: <strong>Enriched archive ItemList<\/strong> \u2014 home, blog feed, categories, tags, and author archives emit <code>ListItem<\/code> entries with nested <code>NewsArticle<\/code> (<code>headline<\/code>, <code>url<\/code>, <code>datePublished<\/code>, <code>author<\/code> Person with <code>name<\/code>\/<code>url<\/code>, featured <code>image<\/code>) for Google Discover \/ Rich Results compatibility.<\/li>\n<li>SCHEMA: <strong>Category &amp; tag CollectionPage<\/strong> \u2014 <code>about<\/code> entity from term (auto Place\/Thing + Wikidata <code>sameAs<\/code>), <code>BreadcrumbList<\/code>, and enriched <code>ItemList<\/code> on taxonomy archives.<\/li>\n<li>SCHEMA: <strong>Blog feed fixes<\/strong> \u2014 correct <code>ItemList<\/code> <code>@id<\/code> on posts page; breadcrumb on blog index.<\/li>\n<li>SCHEMA: <strong>About page<\/strong> \u2014 full Organization publisher graph (not slim <code>#organization<\/code> lite) for transparency \/ E-E-A-T.<\/li>\n<li>SCHEMA: <strong>Publisher logo<\/strong> \u2014 registered <code>nros-publisher-logo<\/code> size (600\u00d760); JSON-LD caps display height at 60px (Google guideline). Settings hint updated.<\/li>\n<li>SCHEMA: <strong>Author slim node<\/strong> \u2014 keeps <code>knowsAbout<\/code> on single-post pointer Person; full E-E-A-T remains on author archive only.<\/li>\n<li>SCHEMA: <strong><code>articleBody<\/code> cleanup<\/strong> \u2014 shortcode strip, heading\/paragraph structure preserved, HTML entities decoded in headlines, literal <code>nn<\/code>\/<code>rn<\/code> junk repaired.<\/li>\n<li>SCHEMA: <strong>Wikidata <code>sameAs<\/code> cascade<\/strong> \u2014 tags and mentions resolve Wikidata URLs via confidence gate, city map, soft match (\u226550), or manual term URL.<\/li>\n<li>SCHEMA: <strong>Auto cache invalidation<\/strong> \u2014 bumps schema global + listings version on plugin upgrade (<code>NROS_SCHEMA_BUILD<\/code> in archive cache keys).<\/li>\n<li>TESTS: <strong>SchemaArticleBodyTest<\/strong>, <strong>SchemaAuthorTest<\/strong> (slim <code>knowsAbout<\/code>), <strong>SchemaWikidataConfidenceTest<\/strong>.<\/li>\n<li>NOTE: After upgrade, <strong>Save Settings<\/strong> once (or wait for auto-invalidate) and <strong>re-update<\/strong> posts if cached <code>articleBody<\/code> still shows old <code>nn<\/code> artifacts.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong><\/li>\n<\/ul>\n\n<h4>2.5.0<\/h4>\n\n<ul>\n<li>PERFORMANCE: <strong>Editor DOM scan fix<\/strong> \u2014 removed global <code>keyup<\/code> on all textareas\/contenteditable; SEO meta is read from Gutenberg store or targeted Yoast\/Rank Math fields only.<\/li>\n<li>NEW: <strong>Sidebar tabs<\/strong> \u2014 Desk \/ Tools \/ Radar \/ AI replace accordion clutter; tab choice persists in localStorage.<\/li>\n<li>NEW: <strong>Per-post geo targeting<\/strong> \u2014 Article market select in the editor (post meta \u2192 category \u2192 site default); Trend Radar, Discover momentum, and AJAX feeds respect it. Category-level override on the category edit screen.<\/li>\n<li>NEW: <strong>Publisher transparency URLs<\/strong> \u2014 Settings for <code>publishingPrinciples<\/code>, <code>correctionsPolicy<\/code>, <code>ownershipFundingInfo<\/code>, and <code>actionableFeedbackPolicy<\/code> on homepage Organization schema. <strong>Generate page with AI<\/strong> (BYOK) creates a draft policy page and fills the URL.<\/li>\n<li>NEW: <strong>Yoast \/ Rank Math in Chief Insights<\/strong> \u2014 average SEO score KPI and per-article score column on winning\/losing posts tables (read-only).<\/li>\n<li>IMPROVEMENT: <strong>GSC 12-month backfill hardening<\/strong> \u2014 smaller URL batches, sub-step loop (queries \u2192 site \u2192 post batches), 60-minute lock refresh, longer pause between AJAX steps.<\/li>\n<li>FIX: <strong>Dashboard Trend Radar<\/strong> \u2014 Trends\/News widget on the Dashboard loads <code>script.js<\/code> and auto-fetches on the Alerts tab (was stuck on \u201cTap TRENDS\u201d).<\/li>\n<li>FIX: <strong>Editor Radar tab<\/strong> \u2014 removed broken <code>&lt;details&gt;<\/code> wrapper so Trends\/News panels render in the sidebar.<\/li>\n<li>FIX: <strong>Article market default<\/strong> \u2014 \u201cSite default (GEO)\u201d option in the editor; clears per-post override correctly.<\/li>\n<li>FIX: <strong>AI Daily Brief &amp; Author desk overview<\/strong> \u2014 server-built metrics payload, real API error messages (not generic \u201cAI request failed\u201d), Gemini-first with fallback trail; author desk caps payload at 24 writers.<\/li>\n<li>IMPROVEMENT: <strong>Schema settings UI<\/strong> \u2014 cleaner Article body in JSON-LD row (stacked layout, max-words only when Limited).<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong><\/li>\n<\/ul>\n\n<h4>2.4.3<\/h4>\n\n<ul>\n<li>NEW: <strong>Wikidata confidence gate<\/strong> \u2014 auto tag enrichment picks the best Wikidata hit and stores <code>sameAs<\/code> only when the label match score meets the threshold (default 72\/100). Low-confidence matches are skipped; manual Wikidata URLs in the tag editor always emit <code>sameAs<\/code>.<\/li>\n<li>NEW: <strong>Slim author <code>worksFor<\/code><\/strong> \u2014 article graphs link the slim <code>Person<\/code> author node to the publisher Organization (<code>#organization<\/code>) without expanding full E-E-A-T on every post.<\/li>\n<li>FIX: <strong>JSON-LD quote safety<\/strong> \u2014 sanitize ASCII and curly <code>\"<\/code> quotes across the full <code>@graph<\/code> before encode; prevents invalid schema when article text contains quoted phrases (e.g. <code>\u0395\u03c0\u03b9\u03c4\u03c1\u03bf\u03c0\u03ae \u03b1\u03b3\u03ce\u03bd\u03b1 \"\u03b5\u03bb\u03b5\u03cd\u03b8\u03b5\u03c1\u03bf \u2026\"<\/code>).<\/li>\n<li>FIX: <strong>Schema cache read<\/strong> \u2014 <code>wp_unslash()<\/code> on post meta JSON-LD cache for correct escape round-trip after save.<\/li>\n<li>FIX: <strong>Admin layout &amp; load<\/strong> \u2014 Newsroom Dashboard \/ Settings \/ PRO tabs no longer enqueue the full post-editor <code>script.js<\/code> + <code>style.css<\/code> bundle; fixes broken admin CSS after switching away from Lite profile and reduces wp-admin CPU.<\/li>\n<li>NOTE: Includes all <strong>2.4.2<\/strong> schema fixes (contentLocation\/dateline, articleBody cleanup, optional primary-city fallback). Save Settings after upgrade to rebuild JSON-LD cache.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong><\/li>\n<\/ul>\n\n<h4>2.4.2<\/h4>\n\n<ul>\n<li>FIX: <strong>Article <code>contentLocation<\/code> \/ <code>dateline<\/code><\/strong> \u2014 Primary city no longer copied onto every post by default. International and national stories no longer inherit the publisher HQ (e.g. Patras on a Canada wire story). Story geography comes only from Place tags, city tags, or lede dateline patterns.<\/li>\n<li>NEW: <strong>Optional setting<\/strong> \u2014 \u201cUse primary city on articles when no story place is detected\u201d (off by default; enable only for purely local newsrooms).<\/li>\n<li>FIX: <strong><code>articleBody<\/code> cleanup<\/strong> \u2014 Full and Limited modes sanitize plain text: strip emoji\/pictographs, decode HTML entities, remove literal <code>rn<\/code>\/<code>rnrn<\/code> junk, collapse block whitespace, and replace ASCII\/curly <code>\"<\/code> quotes so JSON-LD stays valid (omit mode unchanged).<\/li>\n<li>FIX: <strong>Admin Dashboard CSS<\/strong> \u2014 stop loading the full post-editor <code>script.js<\/code> \/ <code>style.css<\/code> bundle on Newsroom settings tabs (Dashboard, Settings, PRO); use lightweight palette + tab-specific JS only.<\/li>\n<li>IMPROVEMENT: <strong>Primary city copy<\/strong> \u2014 clarified in Settings that Primary city applies to Organization <code>areaServed<\/code> \/ <code>location<\/code>; article fields are opt-in via the new checkbox.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong> Save Settings once after upgrade to refresh cached JSON-LD.<\/li>\n<\/ul>\n\n<h4>2.4.1<\/h4>\n\n<ul>\n<li>NEW: <strong>GSC 12-month backfill (Pro)<\/strong> \u2014 one-click historical import for top posts and tagged URLs; incremental step loop in Chief Insights; 13-month retention; locks against daily sync overlap.<\/li>\n<li>IMPROVEMENT: <strong>Chief Insights v2<\/strong> \u2014 clearer KPI cards, channel legend, per-table hints, \u201cRefresh now\u201d link, movers show prev\u2192current position and signed click deltas (<code>new<\/code> \/ <code>+N<\/code>), aligned site-wide GSC channel totals.<\/li>\n<li>IMPROVEMENT: <strong>Copy-paste prompts restored<\/strong> \u2014 AI Prompts accordion and Settings \u2192 Prompts tab stay visible even when BYOK \/ AI Assist is active.<\/li>\n<li>IMPROVEMENT: <strong>Settings selects<\/strong> \u2014 Schema richness and output mode use short labels with live detail text; wider dropdowns (no truncated options).<\/li>\n<li>FIX: <strong><code>newsai_vars<\/code> JS error<\/strong> on Chief Insights \u2014 shared <code>newsai_ensure_admin_vars_script()<\/code>; command palette depends on <code>newsai-admin-vars<\/code>; removed unsafe inline that referenced <code>newsai_vars<\/code> before it was defined; editor <code>window.newsai_vars<\/code> copy runs after localize.<\/li>\n<li>FIX: <strong>PHP warning<\/strong> \u2014 <code>$newsai_is_pro_active<\/code> defined once at the start of the settings screen (Site Details \/ usage registry row).<\/li>\n<li>FIX: <strong><code>strip_tags()<\/code> deprecation<\/strong> \u2014 admin page <code>$title<\/code> set per tab (Dashboard, Chief Insights, etc.) so wp-admin header no longer receives null.<\/li>\n<li>PERFORMANCE: <strong>Asset cache-bust<\/strong> \u2014 <code>newsai_asset_ver()<\/code> appends filemtime to Chief Insights \/ palette \/ war-room JS-CSS after plugin updates.<\/li>\n<li>SAFE: <strong>No new database migrations<\/strong> beyond 2.4.0 tables.<\/li>\n<\/ul>\n\n<h4>2.4.0<\/h4>\n\n<ul>\n<li>NEW: <strong>Auto alt text (Pro BYOK)<\/strong> \u2014 AI vision alt on image upload (optional) + \u201cGenerate alt (AI)\u201d in Media Library; never overwrites manual alt; boosts Discover score accessibility bucket.<\/li>\n<li>NEW: <strong>Seasonal radar (Pro)<\/strong> \u2014 YoY GSC keywords &amp; tags with 14\/30\/45-day lead time; daily trend history; Chief Insights panel + weekly email section; feeds AI Daily Brief.<\/li>\n<li>NEW: <strong>GSC search query sync (Pro)<\/strong> \u2014 stores web search queries (query + date) for accurate Seasonal radar YoY forecasting; incremental sync each GSC run, weekly 56-day refresh, 400-day prune.<\/li>\n<li>IMPROVEMENT: <strong>Phase A megasite polish<\/strong> \u2014 clearer UX toggle descriptions; copy prompts hidden when AI Assist active; Content Decay off by default (legacy notice); FAQ block opt-in (no empty placeholders); conditional frontend CSS for editor blocks.<\/li>\n<li>PERFORMANCE: <strong>Phase B<\/strong> \u2014 lean core bundle on anonymous frontend pageviews (~15 admin-only modules skipped); Publisher performance profiles (Lite \/ Standard \/ Full); trend cron uses Google Trends RSS directly (no AI bundle required).<\/li>\n<li>CLEANUP: <strong>Phase D<\/strong> \u2014 Content Decay Radar retired (cron removed); <strong>GSC traffic-drop alerts<\/strong> in Chief Insights + weekly email; Prompts settings tab hidden when BYOK active; Performance settings consolidated.<\/li>\n<li>FIX: <strong>Settings save<\/strong> \u2014 nested Performance profile form no longer breaks the main Save button in wp-admin.<\/li>\n<li>FIX: <strong>AI desk overview<\/strong> \u2014 desk actions render as text (not \u201cArray\u201d); zero-post authors only in silent list; metrics-backed summaries when the model omits detail.<\/li>\n<li>DATABASE: New table <code>wp_newsai_gsc_queries<\/code> (<code>NEWSAI_DB_VERSION<\/code> 1.4).<\/li>\n<\/ul>\n\n<h4>2.3.9<\/h4>\n\n<ul>\n<li>PERFORMANCE: <strong>GSC incremental sync<\/strong> \u2014 post-level rows sync only new dates (3-day overlap, 14-day cap); site charts refresh 14 days daily, full 93-day window weekly.<\/li>\n<li>PERFORMANCE: <strong>Content Decay Radar<\/strong> \u2014 weekly cron (was daily) and lean SQL ID batch fetch instead of <code>WP_Query<\/code>.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong><\/li>\n<\/ul>\n\n<h4>2.3.8<\/h4>\n\n<ul>\n<li>PERFORMANCE: <strong>Home \/ blog \/ category \/ tag schema<\/strong> \u2014 persistent option cache (was 1-hour transient); early exit without org rebuild. Invalidates on schema settings save (<code>nros_schema_global_v<\/code>) or publish\/unpublish (<code>nros_schema_listings_v<\/code> for ItemList freshness).<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong><\/li>\n<\/ul>\n\n<h4>2.3.7<\/h4>\n\n<ul>\n<li>FIX: <strong>Schema cache invalidation<\/strong> \u2014 saving Lite mode, messaging, or other non-schema settings no longer bumps <code>nros_schema_global_v<\/code> and forces a full-site JSON-LD rebuild storm.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong><\/li>\n<\/ul>\n\n<h4>2.3.6<\/h4>\n\n<ul>\n<li>PERFORMANCE: <strong>Schema post_meta cache<\/strong> \u2014 single-post JSON-LD stored in post meta (Rank Math style); early exit on pageview (2 meta reads, no org rebuild). Legacy posts backfill on first visit, existing transients migrate automatically, optional \u201cWarm next 25 posts\u201d + daily cron batch.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong><\/li>\n<\/ul>\n\n<h4>2.3.5<\/h4>\n\n<ul>\n<li>IMPROVEMENT: <strong>Lite mode scope<\/strong> \u2014 also skips Speakable snippet on articles, pauses War-room 30s AJAX polling, and stops loading the full editor bundle for Tag Guard in Lite.<\/li>\n<li>NOTE: Lite mode still keeps JSON-LD schema and background crons active (main load on high-traffic sites).<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong><\/li>\n<\/ul>\n\n<h4>2.3.4<\/h4>\n\n<ul>\n<li>FIX: <strong>Weekly report email<\/strong> \u2014 safer UTF-8\/HTML sending via <code>wp_mail_from<\/code> filters (no broken <code>From:<\/code> header); captures PHPMailer errors; test send works without saving first; clearer admin error messages.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong><\/li>\n<\/ul>\n\n<h4>2.3.3<\/h4>\n\n<ul>\n<li>IMPROVEMENT: <strong>Lazy Trends\/News radar<\/strong> \u2014 live feed loads only when the sidebar section opens or the user taps TRENDS\/NEWS (no RSS fetch on every editor load).<\/li>\n<li>IMPROVEMENT: <strong>Command palette on all admin tabs<\/strong> \u2014 \u2318K\/Ctrl+K works on Chief Insights and Author Performance without loading the full editor script bundle.<\/li>\n<li>IMPROVEMENT: <strong>Schema warm on publish<\/strong> \u2014 JSON-LD transient is pre-built at save\/publish so the first frontend pageview is a cache hit.<\/li>\n<li>IMPROVEMENT: <strong>Lite mode<\/strong> \u2014 hides the Trends\/News radar section entirely in the post editor.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong><\/li>\n<\/ul>\n\n<h4>2.3.2<\/h4>\n\n<ul>\n<li>IMPROVEMENT: <strong>Lite \/ Performance Mode<\/strong> \u2014 optional toggle disables post editor sidebar, Auto-Timeline injection, and Breaking badge only; JSON-LD schema, GSC, indexing, and crons stay active.<\/li>\n<li>IMPROVEMENT: <strong>Admin asset loading<\/strong> \u2014 editor bundle loads only on post editor, Settings, Dashboard, and PRO tabs; Chief Insights \/ Author Performance load tab-specific JS\/CSS.<\/li>\n<li>IMPROVEMENT: <strong>Chief Insights &amp; Author Performance caching<\/strong> \u2014 heavy admin aggregates cached for 24 hours (auto-refresh at UTC midnight or after GSC sync).<\/li>\n<li>IMPROVEMENT: <strong>Large-site load<\/strong> \u2014 schema <code>foundingDate<\/code> cached; cron registration off frontend (<code>wp_next_scheduled<\/code> only in admin\/activation).<\/li>\n<li>FIX: <strong>Wizard \u2014 Manual Timeline preserved<\/strong> \u2014 wizard \"Manual Only\" choice no longer overridden by site-profile defaults.<\/li>\n<li>FIX: <strong>Schema \u2014 duplicate \u0391\u03a6\u039c<\/strong> \u2014 <code>vatID<\/code> omitted when identical to <code>taxID<\/code>.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong> Safe upgrade from 2.3.1 and 2.2.x.<\/li>\n<\/ul>\n\n<h4>2.3.1<\/h4>\n\n<ul>\n<li>IMPROVEMENT: Admin menu unread badge \u2014 cache TTL raised from 30 seconds to 5 minutes (invalidates when a new task message is posted).<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong> Safe upgrade from 2.3.0 and 2.2.x.<\/li>\n<\/ul>\n\n<h4>2.3.0<\/h4>\n\n<ul>\n<li>NEW: <strong>Content brief \u2192 editorial task (Pro)<\/strong> \u2014 after generating a brief in the editor sidebar, chiefs can one-click <strong>Create task<\/strong> with angle, outline, keywords, and competitor link pre-filled in the desk workflow.<\/li>\n<li>NEW: <strong>AI desk overview (Pro BYOK)<\/strong> \u2014 Author Performance tab: AI summary of top\/bottom writers, who did not publish, low traffic, and <strong>why<\/strong> (posts, Focus\/Discover scores, GSC clicks, overdue tasks).<\/li>\n<li>NEW: <strong>Device donut channel toggle (Pro)<\/strong> \u2014 Chief Insights: switch Web \/ Discover \/ Google News for GSC device breakdown.<\/li>\n<li>NEW: <strong>War room live dashboard (Pro)<\/strong> \u2014 desk pulse (publishes, GSC clicks, open\/overdue tasks, latest posts) refreshes every 30s via AJAX.<\/li>\n<li>NEW: <strong>Core Web Vitals monitor (Pro)<\/strong> \u2014 CrUX field data via PageSpeed Insights API key (Settings \u2192 Instant Indexing); full https:\/\/ page URL.<\/li>\n<li>NEW: <strong>Kanban drag-and-drop<\/strong> \u2014 move editorial tasks between Overdue \/ Due Soon \/ Scheduled \/ Done columns on the Dashboard.<\/li>\n<li>IMPROVEMENT: <strong>Category-aware AI prompts<\/strong> \u2014 editorial rules per detected <code>article_type<\/code> (breaking, sports, politics, etc.) in AI Assist.<\/li>\n<li>IMPROVEMENT: Author Performance panel \u2014 desk overview respects 7d\/30d\/90d window toggle.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong> Safe upgrade from 2.2.x.<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>NEW: <strong>Chief Insights command center (Pro)<\/strong> \u2014 redesigned header (LIVE badge, period window, Export PDF, AI Daily Brief), <strong>KPI period-over-period deltas<\/strong>, and <strong>Commands<\/strong> button.<\/li>\n<li>NEW: <strong>Command palette<\/strong> \u2014 <strong>Ctrl+K \/ \u2318K<\/strong> in post editor and Newsroom settings (navigate tabs, AI tasks, content brief, GSC sync, Chief actions).<\/li>\n<li>NEW: <strong>GSC charts (Pro)<\/strong> \u2014 site-wide daily click trend <strong>per channel<\/strong> (Web \/ Discover \/ Google News with totals) and <strong>device breakdown<\/strong> donut (Desktop \/ Mobile \/ Tablet) from real Search Console API data.<\/li>\n<li>NEW: <strong>GSC site sync tables<\/strong> \u2014 <code>wp_newsai_gsc_site_daily<\/code> and <code>wp_newsai_gsc_device<\/code> created automatically on sync\/activation (no manual migration).<\/li>\n<li>NEW: <strong>Weekly desk report email (Pro)<\/strong> \u2014 optional HTML digest to editors\/chiefs (Settings \u2192 Team): KPIs, top stories, test send.<\/li>\n<li>NEW: <strong>Content brief from trend (Pro BYOK)<\/strong> \u2014 generate editorial brief from Google Trends topic in the editor sidebar.<\/li>\n<li>IMPROVEMENT: <strong>Dark mode<\/strong> \u2014 shared <code>--nros-*<\/code> tokens for admin dashboard, Chief Insights, editor sidebar, and Author Performance.<\/li>\n<li>IMPROVEMENT: <strong>Dashboard (Alerts tab)<\/strong> \u2014 inline styles moved to <code>nros-admin-dashboard.css<\/code> (KPIs, kanban, tasks, sidebar cards).<\/li>\n<li>IMPROVEMENT: <strong>Trend Radar resilience<\/strong> \u2014 circuit breaker + stale cache for Google Trends and News RSS feeds.<\/li>\n<li>IMPROVEMENT: <strong>WordPress.org readme SEO<\/strong> \u2014 clearer title and short description for Google Discover, Google News, schema markup, Search Console, and editorial workflow searches; \u201cWho is this for\u201d, schema section, Yoast comparison, and Discover\/News FAQ.<\/li>\n<li>FIX: <strong>Security hardening<\/strong> \u2014 output escaping audit, safer SQL <code>LIKE<\/code> patterns, centralized transient cleanup on uninstall.<\/li>\n<li>FIX: <strong>Accessibility<\/strong> \u2014 <code>:focus-visible<\/code> on editor action buttons and Author Performance controls.<\/li>\n<li>IMPROVEMENT: <strong>Admin notice<\/strong> \u2014 chiefs\/editors see a reminder to run <strong>GSC Sync now<\/strong> until Chief chart tables are populated (dismissible per user).<\/li>\n<li>IMPROVEMENT: <strong>My Inbox<\/strong> \u2014 inline styles moved to <code>nros-admin-dashboard.css<\/code> (performance card, discussions, assignments).<\/li>\n<li>I18N: refreshed <code>.pot<\/code> \/ <code>.po<\/code> \/ <code>.mo<\/code> and JS translation JSON (includes command palette strings).<\/li>\n<li>SAFE: <strong>Upgrade from 2.2.1<\/strong> \u2014 run <strong>GSC Sync now<\/strong> once after update to populate chart tables. Uninstall drops new GSC tables.<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>NEW: <strong>Site registry (NewsOS)<\/strong> \u2014 Pro licenses send site name and plugin version on activate\/check; <strong>Registered with NewsOS<\/strong> URL shown on the PRO tab.<\/li>\n<li>NEW: <strong>Free usage insights (explicit opt-in)<\/strong> \u2014 optional weekly anonymous ping (site URL, name, version, WP\/PHP, locale) to newsos.io only after administrator consent (setup wizard or Settings \u2192 Site Details). Pro sites use license registration instead. Privacy policy text added for site owners.<\/li>\n<li>GDPR: <strong>No ping without recorded consent<\/strong> \u2014 default opt-out on new installs; one-time migration revokes legacy \u201con by default\u201d opt-ins and notifies administrators.<\/li>\n<li>FIX: <strong>Discover Score<\/strong> \u2014 auto Storytelling Timeline counts toward the links bucket when enabled; legacy <code>newsai-story-cluster<\/code> markup detected.<\/li>\n<li>NEW: <strong>Organization Logo URL (Schema)<\/strong> \u2014 override for JSON-LD publisher logo (square image; not favicon).<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong> Safe upgrade from 2.2.0 and 2.1.x.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>IMPROVEMENT: <strong>Story cluster \/ timeline blocks<\/strong> use semantic <code>&lt;aside class=\"newsai-story-cluster\"&gt;<\/code> (complementary related coverage, not main article body) and external <code>story-cluster.css<\/code> instead of heavy inline styles \u2014 better parser clarity and front-end performance.<\/li>\n<li>FIX: <strong>Timeline labels<\/strong> \u2014 empty saved settings no longer output blank <code>&lt;span class=\"newsai-story-cluster__date\"&gt;<\/code> or footer links; defaults apply (\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 \/ \u03a7\u03b8\u03b5\u03c2 \/ dates \/ \u00ab\u038c\u03bb\u03bf \u03c4\u03bf \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03cc\u00bb). Blank label fields are removed from options on save. Timeline HTML cache bumped (<code>v2<\/code> transient).<\/li>\n<li>IMPROVEMENT: <strong>Key takeaways &amp; FAQ blocks<\/strong> \u2014 <code>&lt;aside class=\"newsai-key-points\"&gt;<\/code> and <code>&lt;section class=\"newsai-faq\"&gt;<\/code> (FAQPage schema) replace inline-styled divs; styles in <code>newsai-content-blocks.css<\/code>. No insert when key points cannot be built from content.<\/li>\n<li>IMPROVEMENT: <strong>Chief Insights<\/strong> \u2014 separate <strong>Google Discover<\/strong> and <strong>Google News<\/strong> top-article tables with period-over-period trend arrows (\u25b2 rising, \u25bc falling, new traffic); Web search table includes trends too.<\/li>\n<li>NEW (Pro BYOK): <strong>Shared SEO article analysis<\/strong> \u2014 primary keyword, entities, search intent, and article type extracted once per post (cached) and reused across AI Assist tasks.<\/li>\n<li>IMPROVEMENT (Pro BYOK): <strong>Title suggestions<\/strong> \u2014 Discover\/News headline rules, internal quality scoring, entity\/keyword-aware angles; uses article lede (first paragraphs) for focus.<\/li>\n<li>IMPROVEMENT (Pro BYOK): <strong>Content optimization<\/strong> \u2014 search-oriented suggestions (5W in lede, E-E-A-T, entities, internal linking ideas) without full rewrites.<\/li>\n<li>IMPROVEMENT (Pro BYOK): <strong>Trending keywords<\/strong> \u2014 anti-stuffing guidance, direct vs adjacent relevance; no forced headline weaving.<\/li>\n<li>IMPROVEMENT (Pro BYOK): <strong>Key takeaways<\/strong> \u2014 snippet-friendly bullets with primary entity\/outcome when supported by the article.<\/li>\n<li>IMPROVEMENT (Pro BYOK): <strong>AI Tag Match<\/strong> \u2014 existing tags plus up to three <strong>suggested new tag<\/strong> labels for manual creation.<\/li>\n<li>NEW (Pro BYOK): <strong>Generate meta description<\/strong> \u2014 140\u2013160 character factual snippet; <strong>Apply to SEO fields<\/strong> (Yoast, Rank Math, or post excerpt) with editor sync.<\/li>\n<li>IMPROVEMENT: <strong>Discover Score<\/strong> \u2014 small entities bucket bonus when AI SEO analysis is stored on the post (after running AI Assist).<\/li>\n<li>I18N: refreshed gettext and JS translation catalogs (el, en, de, es).<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong> Safe upgrade from 2.1.x and 2.0.x.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>NEW: <strong>Chief Insights (Pro)<\/strong> \u2014 executive dashboard tab for chiefs with KPI summary, channel table (Web \/ Discover \/ Google News), top categories, top articles by traffic, and top keyword\/entity coverage.<\/li>\n<li>NEW: <strong>AI Daily Brief (Pro)<\/strong> \u2014 one-click brief inside Chief Insights with <strong>Morning \/ Evening<\/strong> mode and structured output (wins, risks, next actions).<\/li>\n<li>NEW: <strong>Print to PDF<\/strong> from Chief Insights for editorial reporting.<\/li>\n<li>NEW: <strong>FREE demo mode<\/strong> for Chief Insights \u2014 same layout with demo metrics and upgrade CTA.<\/li>\n<li>IMPROVEMENT: <strong>Indexing diagnostics<\/strong> (Google + IndexNow) now track and display <strong>Last attempted<\/strong> and <strong>Last successful<\/strong> ping\/URL\/code separately, plus a health badge.<\/li>\n<li>IMPROVEMENT: <strong>AI provider hardening<\/strong> \u2014 retries for transient failures and fallback chain across configured providers.<\/li>\n<li>IMPROVEMENT: <strong>Schema date edge-case guards<\/strong> \u2014 safer datetime resolution for publish\/schedule workflows, with resilient fallback behavior in JSON-LD.<\/li>\n<li>I18N: refreshed gettext\/script catalogs for new 2.1 UI strings (el\/en\/de\/es).<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li><strong>BIG UPDATE \u2014 Google Search Console (Pro):<\/strong> Search Analytics sync via service account (<code>webmasters.readonly<\/code>). Stores Discover, Google News, and web search metrics per post and author in <code>wp_newsai_gsc_performance<\/code> (DB version <strong>1.3<\/strong>).<\/li>\n<li><strong>GSC settings:<\/strong> property helper (<code>sc-domain:<\/code> and URL-prefix), connection test, <strong>Sync now<\/strong>, daily cron at <strong>04:00<\/strong> site time when Pro + enabled.<\/li>\n<li><strong>Author Performance 2.0:<\/strong> redesigned dashboard \u2014 personal card, compact team grid, expandable cards with <strong>Summary \/ Articles \/ Coaching<\/strong> tabs, search &amp; sort, <strong>7d \/ 30d \/ 90d<\/strong> AJAX range, GSC channel chips and totals, top articles by clicks, coaching weak spots + action links, micro-tips on low traffic.<\/li>\n<li><strong>Posts list:<\/strong> <strong>GSC (30d)<\/strong> column for users with <code>edit_others_posts<\/code> (batch prefetch per page).<\/li>\n<li><strong>My Inbox:<\/strong> writers see own GSC totals when sync is active.<\/li>\n<li><strong>Clarity:<\/strong> Discover Score remains <strong>editorial readiness<\/strong>; GSC numbers are <strong>real Google clicks<\/strong> (labeled separately everywhere).<\/li>\n<li><strong>Assets:<\/strong> dedicated <code>author-performance.css<\/code> + <code>author-performance.js<\/code> for the perf tab (tabs, expand, grid refresh).<\/li>\n<li><strong>Includes 1.9.x stability:<\/strong> schema filters on <code>plugins_loaded<\/code>, author E-E-A-T save hardening, holiday import validation, <code>representativeOfPage<\/code> on lead image, PHPUnit smoke tests, editor tag pool cap, Wikidata lazy enrich, AI Tag Match, decay pagination improvements.<\/li>\n<li><strong>Upgrade:<\/strong> creates GSC table on activation\/upgrade; safe from 1.7.4+ and 1.9.x.<\/li>\n<\/ul>\n\n<h4>1.9.1<\/h4>\n\n<ul>\n<li>STABILITY: <strong>Schema SEO conflict filters<\/strong> moved to <code>plugins_loaded<\/code> (no global <code>get_option()<\/code> at file load \u2014 safer for CLI\/imports).<\/li>\n<li>STABILITY: <strong>Author E-E-A-T profile save<\/strong> \u2014 nonce + section gate so partial profile saves cannot wipe custom fields.<\/li>\n<li>STABILITY: <strong>Holiday bulk import<\/strong> \u2014 validates each JSON row (title, day 1\u201331, month 1\u201312, lead 0\u2013365) before insert.<\/li>\n<li>SCHEMA: <strong>Lead image<\/strong> \u2014 <code>representativeOfPage: true<\/code> on the first <code>NewsArticle<\/code> <code>ImageObject<\/code>.<\/li>\n<li>UX: Admin menu icon uses <strong><code>currentColor<\/code><\/strong> (visible in wp-admin dark mode).<\/li>\n<li>DEV: <strong>PHPUnit<\/strong> smoke tests for Discover Score helpers and author slim\/full entity (see <code>composer test<\/code>).<\/li>\n<li>SAFE: <strong>No database migrations<\/strong> (except 2.0.0 GSC table).<\/li>\n<\/ul>\n\n<h4>1.9.0<\/h4>\n\n<ul>\n<li>PERF: <strong>Editor tag pool cap<\/strong> \u2014 separate <strong>Editor tag pool (sidebar JSON)<\/strong> setting (default 300 tags) from the larger tag-guard pool; faster post editor loads on tag-heavy sites.<\/li>\n<li>PERF: <strong>Content Decay Radar<\/strong> \u2014 cursor pagination with <code>newsai_decay_scan_last_id<\/code> instead of slow SQL <code>OFFSET<\/code> on large archives.<\/li>\n<li>PERF: <strong>Dashboard overdue KPIs<\/strong> \u2014 SQL <code>COUNT<\/code> for dated tasks plus PHP only for recurring date rules (year\/month rollover).<\/li>\n<li>PERF: <strong>SQL date thresholds<\/strong> \u2014 static datetime strings in Author Performance and dashboard queries instead of <code>DATE_SUB(UTC_TIMESTAMP())<\/code> in <code>WHERE<\/code>.<\/li>\n<li>NEW: <strong>AI Tag Match (Pro BYOK)<\/strong> \u2014 semantic tag suggestions from your site pool via the editor sidebar button.<\/li>\n<li>NEW: <strong>Wikidata lazy enrich<\/strong> \u2014 auto-fills empty tag entity fields (Wikidata URL, type, geo when known) when a tag is assigned to a post or created; Settings toggle.<\/li>\n<li>AI: <strong>Input limit<\/strong> raised to <strong>25,000<\/strong> characters (filter <code>newsai_ai_max_input_chars<\/code>) for long-form Key Points \/ optimization.<\/li>\n<li>UX: <strong>Timeline<\/strong> \u2014 clearer errors (<code>no_tags<\/code> \/ <code>no_matches<\/code>), Gutenberg <code>post_id<\/code> resolution, improved default message.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong> Upgrade from 1.8.x preserves all data.<\/li>\n<\/ul>\n\n<h4>1.8.2<\/h4>\n\n<ul>\n<li>FIX: <strong>IndexNow rewrite flush<\/strong> \u2014 no longer calls <code>flush_rewrite_rules()<\/code> on public <code>init<\/code>; uses versioned <code>newsai_indexnow_rewrite_ver<\/code>, flushes on plugin activation and when IndexNow is enabled in settings, with a one-time admin migration from the legacy <code>newsai_indexnow_flushed<\/code> flag.<\/li>\n<li>NEW: <strong>My Inbox personal performance (Free)<\/strong> \u2014 every writer sees their own 30-day stats card (posts, tasks, Focus, Discover); Pro CTA for team Author Performance remains on the chief dashboard.<\/li>\n<li>COMPAT: <strong>Discover OG score<\/strong> \u2014 explicit and featured-image fallback for <strong>AIOSEO<\/strong> and <strong>SEOPress<\/strong> (alongside Yoast SEO and Rank Math).<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong> Safe direct upgrade from 1.8.1 or 1.8.0.<\/li>\n<\/ul>\n\n<h4>1.8.1<\/h4>\n\n<ul>\n<li>FIX: <strong>Find archive links<\/strong> \u2014 candidate pool no longer relies on core <code>WP_Query<\/code> search (<code>s<\/code>), which often returned zero rows on large Greek newsrooms. Uses shared tags\/categories, title token SQL (OR), accent-normalized scoring, Gutenberg <code>post_id<\/code> resolution, and does not cache empty \u201cno matches\u201d for 10 minutes.<\/li>\n<li>FIX: <strong>Discover OG score<\/strong> \u2014 counts Yoast SEO \/ Rank Math <strong>featured-image OG fallback<\/strong> (same as front-end HTML) when no explicit <code>og:image<\/code> meta is set; breakdown shows <code>featured_fallback<\/code> vs <code>explicit<\/code> in the editor checklist.<\/li>\n<li>COMPAT: <strong>Tested up to WordPress 7.0<\/strong> \u2014 verified on wp-admin, Gutenberg and Classic post editor, dashboard tasks, and editor AJAX. Readme <code>Tested up to: 7.0<\/code> (major.minor format for WordPress.org).<\/li>\n<li>STANDARDS: GPL <strong><code>License<\/code> + <code>License URI<\/code><\/strong> in main plugin header; <strong>Plugin Check<\/strong> hardening \u2014 output escaping in editor sidebar and admin dashboard; prepared SQL for dynamic task lists, views meta-key detection, semantic archive link queries, and weekly task cleanup.<\/li>\n<li>FIX: <strong>Escaping<\/strong> \u2014 <code>includes\/sidebar.php<\/code> (tasks, summaries, breaking panel, prompts); <code>includes\/admin-ui.php<\/code> (nav tabs, KPI cards, Google status banner, task table, latest posts); task thread close button uses <code>esc_attr__<\/code> with text domain.<\/li>\n<li>FIX: <strong>SQL<\/strong> \u2014 <code>$wpdb-&gt;prepare()<\/code> with spread args for archive link candidate queries; whitelisted <code>ORDER BY<\/code> on task dashboard queries; inline <code>prepare<\/code> for done-task cleanup.<\/li>\n<li>i18n: <strong>Discover checklist &amp; next-action badges<\/strong> \u2014 strings ship from PHP via <code>discover_ui<\/code> (<code>wp_localize_script<\/code>) for <strong>English, Greek, German, and Spanish<\/strong>; removed hardcoded Greek\/English branches in <code>script.js<\/code>. Translators comments for sidebar placeholders; new strings in <code>.pot<\/code> \/ <code>.po<\/code>.<\/li>\n<li>UX: <strong>Publication Readiness sidebar<\/strong> \u2014 full-width stacked <strong>Fix Now<\/strong> (primary) and <strong>Open Detailed Panel<\/strong> (secondary); structured Discover checklist rows with sublines (timeliness cache, OG hints).<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong> Safe direct upgrade from 1.8.0 or 1.7.4+.<\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li>RELEASE: <strong>Major public release<\/strong> since 1.7.4 \u2014 bundles Discover Score v2, Breaking News Mode + live coverage tools, Author Performance Discover layer, Classic Editor stability fixes, duplicate tag guard fix, and readme\/positioning refresh (see 1.7.5\u20131.7.12 entries below for detail).<\/li>\n<li>DOCS: WordPress.org readme \u2014 <code>Stable tag<\/code> 1.8.0, dedicated <strong>Classic Editor &amp; Gutenberg<\/strong> section, FAQ, installation step, and plugin tags for block\/classic editor discoverability.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong> Existing posts, tags, schema, tasks, Focus\/Discover scores, and settings stay intact. Safe direct upgrade from 1.7.4+ on small and large sites.<\/li>\n<\/ul>\n\n<h4>1.7.12<\/h4>\n\n<ul>\n<li>FIX: <strong>Classic tag duplicate guard<\/strong> \u2014 AJAX check used invalid <code>assign_terms<\/code> capability (always denied for Authors\/Editors), so the UI silently added tags without the \u201ckeep or use existing?\u201d prompt. Fixed taxonomy capability check; classic script no longer bypasses on 403. Improved typo detection (e.g. NEWSOS vs NEWSSS). Classic script also loads when the classic Tags metabox is shown alongside the block editor.<\/li>\n<\/ul>\n\n<h4>1.7.11<\/h4>\n\n<ul>\n<li>NEW (Pro): <strong>Author Performance \u2014 Discover readiness layer<\/strong> \u2014 per-writer <strong>avg Discover Score<\/strong>, up to <strong>3 coaching weak spots<\/strong> (16:9 hero, headline, topic, OG, author profile), <strong>Discover<\/strong> column on cards, and <strong>Focus + Discover<\/strong> per article in drill-down. Uses saved <code>_newsai_discover_score<\/code> \/ breakdown meta from the editor (Phase 2 GSC traffic stays separate).<\/li>\n<\/ul>\n\n<h4>1.7.10<\/h4>\n\n<ul>\n<li>CHANGE: <strong>Discover Score v2<\/strong> aligned with <a href=\"https:\/\/developers.google.com\/search\/docs\/appearance\/google-discover\">Google Discover best practices<\/a>: hero <strong>1200px+<\/strong>, <strong>16:9<\/strong>, <strong>300k+ pixels<\/strong>, descriptive alt (35 pts); headline <strong>55\u201370<\/strong> chars with <strong>anti-clickbait<\/strong> penalties (25 pts); softer timeliness\/trends (10 pts); saved <strong>OG image<\/strong> from Yoast\/Rank Math when post is saved (5 pts). Not scored in-editor: <code>max-image-preview:large<\/code>, Core Web Vitals.<\/li>\n<\/ul>\n\n<h4>1.7.9<\/h4>\n\n<ul>\n<li>DOCS: <strong>Positioning &amp; readme refactor<\/strong> \u2014 hero \u201cDiscover &amp; AI-Visibility OS\u201d, five-pillar narrative (Discover \/ Semantic \/ Workflow \/ AI \/ Knowledge), clearer free vs Pro story; updated screenshot list and plugin short description. No feature code changes.<\/li>\n<\/ul>\n\n<h4>1.7.8<\/h4>\n\n<ul>\n<li>FIX: <strong>Classic Editor crash<\/strong> \u2014 <code>Maximum call stack size exceeded<\/code> in <code>blocks.min.js<\/code> when Breaking\/live-update code called Gutenberg APIs (<code>getEditedPostContent<\/code>, <code>createBlock<\/code>, <code>wp.data.subscribe<\/code>) on Classic Editor screens. Block APIs now run only when <code>block-editor-page<\/code> + <code>core\/block-editor<\/code> store are present; Classic uses TinyMCE\/textarea only.<\/li>\n<\/ul>\n\n<h4>1.7.7<\/h4>\n\n<ul>\n<li>NEW: <strong>Live coverage editor tools<\/strong> \u2014 collapsible \u201cHow to write live coverage\u201d guide, <strong>Insert live update (H3)<\/strong> button (Gutenberg heading block or Classic insert), and a <strong>warning<\/strong> when Breaking is active but the post has no H2\/H3 headings (live <code>liveBlogUpdate<\/code> needs structured headings).<\/li>\n<li>FIX: <strong>LiveBlog schema<\/strong> \u2014 no more fallback <code>liveBlogUpdate<\/code> built from the first 24 words when Breaking\/LiveBlog is on or when content looks like a pasted plugin readme; avoids bogus updates on announcement posts.<\/li>\n<li>i18n: Greek, English, German, and Spanish catalogs updated for Discover Score, Breaking News Mode, and new editor strings (PHP <code>.po<\/code> + JS <code>newsai-script.json<\/code>).<\/li>\n<\/ul>\n\n<h4>1.7.6<\/h4>\n\n<ul>\n<li>NEW: <strong>Breaking News Mode<\/strong> \u2014 replaces the editor \u201cLiveBlogPosting\u201d checkbox with a unified workflow: enable breaking coverage (LiveBlog schema + <code>liveBlogUpdate<\/code>), optional <strong>\u201cdeveloping story\u201d<\/strong> badge on the article, <strong>IndexNow \/ Google ping on enable<\/strong>, <strong>Resolve now<\/strong>, and <strong>auto-expire<\/strong> (24\/48\/72h, hourly cron). AJAX toggle works in Gutenberg; classic editor uses the same metabox save path.<\/li>\n<li>NEW: Settings \u2192 Schema: breaking <strong>auto-expire hours<\/strong> and <strong>frontend badge<\/strong> toggle.<\/li>\n<\/ul>\n\n<h4>1.7.5<\/h4>\n\n<ul>\n<li>NEW: <strong>Discover Score<\/strong> \u2014 separate from Editorial (Focus) score: hero image width\/aspect\/alt, cached regional <strong>trend token<\/strong> fit (daily refresh + on-demand when empty), entity\/tag\/category\/geo cues, author E-E-A-T fields, internal links \/ storytelling; <strong>headline<\/strong> subscore (50\u201365 char sweet spot, numbers, power chars, recency cues, specificity) merged in the editor. <strong>Publication Readiness<\/strong> meta box: twin gauges, <strong>Editorial \/ Discover<\/strong> tabs under Score Details, combined <strong>Next Best Action<\/strong> across both tracks. Postmeta: <code>_newsai_discover_score<\/code>, <code>_newsai_discover_score_breakdown<\/code>. Filter: <code>nros_discover_score_weights<\/code>.<\/li>\n<li>NEW: <code>includes\/discover-score.php<\/code> \u2014 AJAX <code>newsai_discover_score_partial<\/code>, <code>newsai_save_discover_score<\/code>, cron <code>nros_refresh_trend_keyword_cache<\/code> (cleared on plugin deactivation).<\/li>\n<\/ul>\n\n<h4>1.7.4<\/h4>\n\n<ul>\n<li>FIX: <strong>JSON-LD dates use site local time<\/strong> \u2014 <code>datePublished<\/code>, <code>dateModified<\/code>, <code>dateCreated<\/code>, LiveBlog coverage times, and video <code>uploadDate<\/code> now output ISO 8601 with the WordPress timezone offset (e.g. <code>2026-05-16T09:45:00+03:00<\/code>) instead of UTC (<code>+00:00<\/code>), aligning with wp-admin display and Rank Math Open Graph.<\/li>\n<li>FIX: <strong>Site Health REST false alarm<\/strong> \u2014 removed a <strong>UTF-8 BOM<\/strong> (3 bytes) at the start of <code>includes\/admin-ui.php<\/code> that WordPress reported as <code>charsout=3<\/code> on activation and that could prefix REST loopback responses so Site Health showed <em>\"The REST API did not process the context query parameter correctly\"<\/em> even when the endpoint returned HTTP 200.<\/li>\n<li>FIX: <strong>REST-safe i18n<\/strong> \u2014 on <code>\/wp-json\/*<\/code> requests the plugin no longer reloads its text domain or overrides <code>plugin_locale<\/code> for <code>newsroom-ai-assistant<\/code>, so core REST and Site Health checks stay stable while the per-site language picker (1.7.1+) continues to work in wp-admin.<\/li>\n<li>FIX: <strong>Per-site UI language picker<\/strong> \u2014 restored the 1.7.3 gettext loading path (<code>load_textdomain<\/code> with <code>determine_locale()<\/code> lookup) after an experimental init-only loader caused the dashboard to stay in English regardless of Settings \u2192 Language.<\/li>\n<li>FIX: Task assignment dropdown uses <code>capability<\/code> =&gt; <code>edit_posts<\/code> instead of deprecated <code>who<\/code> =&gt; <code>authors<\/code> (WordPress 5.9+).<\/li>\n<li>IMPROVEMENT: <code>the_content<\/code> \/ timeline shortcode and speakable snippet bail out during REST\/JSON requests (no mutation of API payloads).<\/li>\n<\/ul>","raw_excerpt":"Optimize WordPress articles for Google Discover and Google News. Add NewsArticle schema markup, Search Console analytics, editorial workflow, and opti &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/287352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=287352"}],"author":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/koskar22"}],"wp:attachment":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=287352"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=287352"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=287352"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=287352"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=287352"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=287352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}