{"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-08-23T17:30:07","modified_gmt":"2026-08-23T17:30:07","slug":"newsroom-ai-assistant","status":"publish","type":"plugin","link":"https:\/\/de-ch.wordpress.org\/plugins\/newsroom-ai-assistant\/","author":20490193,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.9.0","stable_tag":"2.9.0","tested":"7.1","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-08-23 17:30:07","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":20,"downloads":2757,"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"},"2.5.2":{"tag":"2.5.2","author":"koskar22","date":"2026-06-27 15:08:41"},"2.6.0":{"tag":"2.6.0","author":"koskar22","date":"2026-07-04 08:57:46"},"2.7.0":{"tag":"2.7.0","author":"koskar22","date":"2026-07-09 17:39:22"},"2.8.0":{"tag":"2.8.0","author":"koskar22","date":"2026-07-25 08:15:51"},"2.9.0":{"tag":"2.9.0","author":"koskar22","date":"2026-08-23 17:30:07"}},"upgrade_notice":{"2.9.0":"<p><strong>All Pro included<\/strong> \u2014 no license key needed. GSC, Chief Insights, AI Assist, IndexNow, and every Pro module are active. Anonymous install ping on activation\/upgrade. To re-enable paid licenses later: <code>NEWSAI_PRO_UNLOCKED<\/code> false in wp-config. Safe from 2.8.x.<\/p>","2.8.0":"<p><strong>Schema performance for megasites<\/strong> \u2014 Lite Mode stops daytime schema backfill; enable <strong>Nightly schema warm<\/strong> (e.g. 02:00\u201306:00) to migrate old posts off-peak. New articles still get full schema on publish. Optional Background warm toggle + slim JSON-LD on cache miss. Unicode word counts and story-cluster contrast fixes. No database migration \u2014 safe from 2.7.x.<\/p>","2.7.0":"<p><strong>Classic command center<\/strong> \u2014 redesigned Dashboard (Kanban-first), Chief Insights, Author Performance, and Settings with vertical sidebar shell. <strong>AI Content brief<\/strong> from Trend Radar is on the <strong>Dashboard<\/strong> for desk planning (not the post editor). React admin is <strong>parked<\/strong> (off by default; Coming Soon in Settings). Run <strong>GSC Sync now<\/strong> once if you use Chief charts. No database migration \u2014 safe from 2.6.x.<\/p>","2.6.0":"<p>Major release for megasites: schema serve-stale + warm cron, smarter Auto-Timeline (blocks generic tags like \u0391\u039b\u039b\u0391\u0393\u0395\u03a3), GSC\/Indexing service-account AJAX save, AI alt feedback, floating editor toolbar, GEO summary, ClaimReview, wizard site scan. Run GSC Sync once after upgrade; Save Settings to refresh schema. No database migration \u2014 safe from 2.5.x.<\/p>","2.5.2":"<p>Recommended schema patch: fixes <code>wordCount:0<\/code> and missing <code>articleBody<\/code> on cached singles, cleans literal <code>nn<\/code>\/<code>rnrn<\/code> junk in <code>articleBody<\/code>, shared plain-text normalization, and site-wide lazy rebuild (first visit \/ Warm next 25 \/ daily cron picks stale body cache too). Deploy once per site \u2014 no global cache wipe. No database migration \u2014 safe from 2.5.1.<\/p>","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","2.5.2","2.6.0","2.7.0","2.8.0","2.9.0"],"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<\/strong> \u2014 Author Performance: team cards, GSC clicks, Summary \/ Articles \/ Coaching tabs","3":"<strong>Google Search Console WordPress sync<\/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<\/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<\/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>Search Console clicks<\/strong> \u2014 real <strong>Discover<\/strong> and <strong>Google News<\/strong> traffic via GSC sync (separate from the editorial Discover 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<\/li>\n<li><strong>NewsArticle \/ LiveBlogPosting<\/strong> publisher schema graph<\/li>\n<li>Editorial <strong>workflow<\/strong> \u2014 tasks, My Inbox, chief dashboard, <strong>Chief Insights<\/strong><\/li>\n<li><strong>Author performance<\/strong> coaching tied to real traffic<\/li>\n<li>Smart tags, duplicate-tag guard, archive internal links, GSC traffic-drop alerts<\/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.9 \u2014 All Pro features included + install registry<\/h4>\n\n<p><strong>Newsroom OS 2.9<\/strong> unlocks <strong>every Pro feature without a license key<\/strong> (GSC sync, Chief Insights, Author Performance, AI Assist BYOK, IndexNow, Auto-Timeline, task messaging, and more). A lightweight anonymous install\/upgrade ping helps NewsOS count active sites. To restore paid license gating later, set <code>NEWSAI_PRO_UNLOCKED<\/code> to <code>false<\/code> in wp-config.php \u2014 all license code stays in place.<\/p>\n\n<h4>Update 2.8 \u2014 Schema performance for megasites + nightly warm<\/h4>\n\n<p><strong>Newsroom OS 2.8<\/strong> keeps JSON-LD on high-traffic sites without daytime CPU spikes: <strong>Lite Mode<\/strong> no longer runs the schema backfill cron, <strong>Background schema warm<\/strong> is optional, and <strong>Nightly schema warm<\/strong> runs migration only in an off-peak window (default 02:00\u201306:00, site timezone). New\/edited posts still get <strong>full schema on save<\/strong>. On cache miss under Megasite mode, visitors get a <strong>slim NewsArticle<\/strong> graph while full caches backfill overnight. Also: Unicode-safe word counts (Greek), story-cluster accessibility contrast, and safer warm scheduling (hourly \/ 15-min only with backlog).<\/p>\n\n<h4>Update 2.7 \u2014 Classic command center (stable) + parked React UI<\/h4>\n\n<p><strong>Newsroom OS 2.7<\/strong> ships a <strong>premium classic admin<\/strong> redesign: vertical sidebar shell, bento Dashboard (Kanban-first), refreshed <strong>Chief Insights<\/strong> and <strong>Author Performance<\/strong>, and a cleaner <strong>Settings<\/strong> workspace. <strong>Classic is the default<\/strong> on all sites. An experimental <strong>React admin<\/strong> remains in the codebase for a future opt-in release \u2014 it is <strong>off by default<\/strong>; the Settings banner shows <strong>Coming Soon<\/strong> until the redesign is ready.<\/p>\n\n<p><strong>Desk workflow:<\/strong> AI <strong>Content brief<\/strong> from Trend Radar now lives on the <strong>Dashboard<\/strong> (chief plans \u2192 assigns task \u2192 writer sees brief in the editor). The editor Radar tab stays lightweight (live trends\/news + copy headline).<\/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 the product at <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><em>(From 2.9 onward, GSC sync and all former \u201cPro\u201d modules ship unlocked in the same plugin \u2014 no license key.)<\/em><\/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 (BYOK) 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<\/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 GSC is enabled.<\/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<\/strong> \u2014 surfaces articles losing Search Console clicks vs the prior period.<\/li>\n<\/ul>\n\n<p><strong>5. AI newsroom (BYOK \u2014 your API key)<\/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.<\/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.<\/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>Everything included (2.9+) \u2014 100% free, no license<\/h3>\n\n<p><strong>Newsroom OS 2.9<\/strong> ships the <strong>complete newsroom stack<\/strong> in one plugin. No signup, no license key, no paywall inside WordPress. The only optional cost is <strong>AI Assist (BYOK)<\/strong> \u2014 you bring your own OpenAI, Gemini, or Groq API key if you want in-editor AI; Groq and Gemini offer generous free tiers.<\/p>\n\n<h4>Editorial &amp; Discover (free)<\/h4>\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<\/li>\n<li><strong>Smart Tag Suggester<\/strong> \u2014 confidence levels, one-click insert, duplicate-tag guard<\/li>\n<li><strong>Editorial dashboard<\/strong> \u2014 tasks, deadlines, keywords, briefings, Kanban, My Inbox<\/li>\n<li><strong>Trend Radar<\/strong> \u2014 Google Trends + Google 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, megasite-safe caching<\/li>\n<li><strong>SEO auditor<\/strong>, <strong>4-step wizard<\/strong>, <strong>4-language UI<\/strong> (el, en, de, es)<\/li>\n<\/ul>\n\n<h4>Analytics &amp; desk command (free since 2.9)<\/h4>\n\n<ul>\n<li><strong>Google Search Console sync<\/strong> \u2014 Discover, Google News, and web search clicks per post and author<\/li>\n<li><strong>Chief Insights<\/strong> \u2014 desk-wide KPIs, channel breakdown, top categories\/articles, AI Daily Brief, PDF export<\/li>\n<li><strong>Author Performance<\/strong> \u2014 team cards, GSC coaching tabs, 7d \/ 30d \/ 90d windows<\/li>\n<li><strong>GSC traffic-drop alerts<\/strong> \u2014 in Chief Insights and weekly desk email<\/li>\n<li><strong>Posts list GSC column<\/strong> \u2014 30-day clicks for chiefs<\/li>\n<li><strong>Seasonal radar<\/strong> \u2014 YoY keyword forecasting from GSC queries<\/li>\n<li><strong>War room<\/strong> \u2014 live desk KPIs (AJAX refresh)<\/li>\n<\/ul>\n\n<h4>AI &amp; indexing (free since 2.9; AI is BYOK)<\/h4>\n\n<ul>\n<li><strong>AI Assist<\/strong> \u2014 headline suggestions, optimize hints, trend keywords, tag match, meta description, content brief, floating toolbar, GEO summary, auto alt text<\/li>\n<li><strong>IndexNow + Google Indexing API<\/strong> \u2014 async pings on publish<\/li>\n<li><strong>Task threads + email alerts<\/strong> \u2014 chief \u2194 writer messaging per assignment<\/li>\n<\/ul>\n\n<p><strong>Privacy:<\/strong> GSC data and AI cache stay in <strong>your<\/strong> database. Newsroom OS does not proxy article text or API keys through newsos.io. An anonymous install\/upgrade ping (site URL, version, locale) helps NewsOS count active installs \u2014 no post content included.<\/p>\n\n\n\n<h3>Feature reference (formerly \u201cPro\u201d)<\/h3>\n\n<h4>\ud83d\udcca Google Search Console integration<\/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 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 when GSC is enabled with 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<\/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>Live desk data<\/strong> \u2014 real GSC-backed metrics when sync is configured.<\/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 fast hosted open-weight models with API keys from the same dashboard. Recommended default: <code>openai\/gpt-oss-120b<\/code>; alternative: <code>qwen\/qwen3.6-27b<\/code>. Deprecated Groq model IDs like <code>llama-3.3-70b-versatile<\/code> should be replaced. 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  &hellip;<\/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><strong>Settings \u2192 Indexing<\/strong> \u2014 (optional) add your Search Console service account, set the property, run <strong>Test<\/strong> and <strong>Sync now<\/strong> to populate Author Performance and Chief Insights.<\/li>\n<li><strong>Settings \u2192 AI<\/strong> \u2014 (optional) add your OpenAI, Gemini, or Groq API key for AI Assist (BYOK).<\/li>\n<li>(Optional, 2.7+) <strong>Settings &amp; Prompts<\/strong> \u2014 click <strong>Enable modern settings UI<\/strong> for the guided React settings screen, or toggle <strong>Editorial \u2192 Editor UX \u2192 Modern settings UI<\/strong>. Classic form stays at <code>?tab=settings&amp;ui=classic<\/code>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20enable%20the%20new%20react%20admin%20ui%20%282.7%29%3F\"><h3>How do I enable the new React admin UI (2.7)?<\/h3><\/dt>\n<dd><p>No wp-config edit needed. After upgrade, open <strong>Settings &amp; Prompts<\/strong> and click <strong>Enable modern settings UI<\/strong>, or enable <strong>Modern admin UI<\/strong> under <strong>Editorial \u2192 Editor UX<\/strong> and save. The setup wizard (step 4) can turn it on during first run. You get the full <strong>React admin<\/strong> \u2014 Dashboard (Kanban + radar), Chief Insights, Author Performance, and Settings \u2014 with sidebar navigation. Switch back anytime via <strong>Classic<\/strong> links or <code>?ui=classic<\/code> on any tab.<\/p><\/dd>\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 <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. <strong>Search Console sync<\/strong> adds real Discover clicks per post and author (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> Connect via service account (<code>webmasters.readonly<\/code>), sync <strong>Discover, Google News, and web search<\/strong> clicks into WordPress, and show 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.<\/p><\/dd>\n<dt id=\"is%20everything%20really%20free%20in%202.9%3F\"><h3>Is everything really free in 2.9?<\/h3><\/dt>\n<dd><p><strong>Yes.<\/strong> GSC sync, Chief Insights, Author Performance, IndexNow, Auto-Timeline, task messaging, duplicate-tag guard, and all desk modules are included \u2014 no license key. <strong>AI Assist<\/strong> is also included but uses <strong>your own<\/strong> OpenAI, Gemini, or Groq API key (BYOK); provider free tiers work. Optional anonymous install ping sends site URL + version to NewsOS (no post content).<\/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>Yes (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. Without an API key you still get Publication Readiness, Smart Tags, tasks, Discover Score, schema, GSC, and Trend Radar.<\/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, <strong>Breaking news mode<\/strong> with live updates, <strong>GSC traffic-drop alerts<\/strong>, and <strong>weekly desk report email<\/strong>. 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. <strong>Search Console sync<\/strong> adds measured <strong>Discover clicks<\/strong> 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 (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 <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>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:<\/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=\"how%20do%20i%20connect%20google%20search%20console%3F\"><h3>How do I connect Google Search Console?<\/h3><\/dt>\n<dd><p><strong>Settings \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%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 in the editorial desk.<\/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 \u2014 it does not read Search Console. <strong>GSC Discover clicks<\/strong> are <strong>real measured traffic<\/strong> from Google after you enable sync.<\/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>. 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>. Minimum PHP <strong>7.4<\/strong>; PHP <strong>8.1+<\/strong> recommended.<\/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.<\/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; GSC sync runs on a schedule \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. Duplicate-tag guard and AI Tag Match (BYOK) included.<\/p><\/dd>\n<dt id=\"which%20ai%20providers%20are%20supported%3F%20can%20i%20use%20ai%20for%20free%3F\"><h3>Which AI providers are supported? 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. No Newsroom OS license required.<\/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>Article text and API keys stay on your server. GSC rows and AI cache live in your database. An anonymous <strong>install\/upgrade ping<\/strong> (site URL, plugin version, locale) may be sent to newsos.io on activation \u2014 no post content. Optional weekly opt-in heartbeat under Settings \u2192 Site Details.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.9.0<\/h4>\n\n<ul>\n<li>NEW: <strong>All Pro features unlocked<\/strong> \u2014 no NewsOS license key required (<code>NEWSAI_PRO_UNLOCKED<\/code>, default true). GSC, Chief Insights, Author Performance, AI Assist, IndexNow, Auto-Timeline, task messaging, and all Pro settings work out of the box.<\/li>\n<li>NEW: <strong>Install registry<\/strong> \u2014 anonymous <code>install_id<\/code> ping on activation and on version upgrade (<code>action<\/code>: install|upgrade) to NewsOS registry API. No post content or API keys sent. Weekly opt-in heartbeat unchanged.<\/li>\n<li>REVERT PATH: Set <code>define( 'NEWSAI_PRO_UNLOCKED', false );<\/code> in wp-config.php to restore license-only Pro \u2014 no code removal needed.<\/li>\n<li>FIX: Homepage <strong>WebPage<\/strong> JSON-LD on static front pages (was missing Organization graph node).<\/li>\n<li>FIX: Groq default model \u2192 <code>openai\/gpt-oss-120b<\/code> with auto-migration from deprecated <code>llama-3.3-70b-versatile<\/code>.<\/li>\n<li>SAFE: No database migrations. License options and PRO tab remain for future paid tier.<\/li>\n<\/ul>\n\n<h4>2.8.0<\/h4>\n\n<ul>\n<li>NEW: <strong>Nightly schema warm<\/strong> \u2014 optional off-peak backfill window (default 02:00\u201306:00, site timezone). Works with <strong>Lite Mode ON<\/strong>: daytime CPU stays calm; full JSON-LD migrates overnight for thousands of posts.<\/li>\n<li>NEW: <strong>Background schema warm<\/strong> toggle \u2014 disable the migration cron on overloaded servers without turning schema output off. Manual <strong>Warm next 25 posts<\/strong> still works.<\/li>\n<li>PERF: <strong>Lite Mode<\/strong> no longer schedules the schema legacy warm cron (was the main 80\u2013100% load cause when \u201conly schema\u201d was enabled with Megasite + Lite).<\/li>\n<li>PERF: <strong>Megasite warm schedule<\/strong> \u2014 hourly \/ twice-daily by default; 15-minute cadence only with a large backlog or forced kick. Frontend cache misses no longer run backlog-probe SQL.<\/li>\n<li>PERF: On megasite cache miss, emit <strong>slim NewsArticle<\/strong> JSON-LD immediately; queue full rebuild for cron\/nightly (new posts still warm inline on save\/publish).<\/li>\n<li>FIX: <strong>Unicode-safe word count<\/strong> for Information Gain \/ AI readiness (Greek and other multibyte languages) \u2014 PHP + live Structure tab JS.<\/li>\n<li>FIX: <strong>Story cluster CSS<\/strong> \u2014 WCAG AA contrast, clearer dates\/links; asset version via <code>newsai_asset_ver<\/code> for cache busting.<\/li>\n<li>IMPROVEMENT: Editor Structure quick-check also reports geo summary, external sources, word count, and information-gain %.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong> New options only (<code>nros_schema_background_warm<\/code>, <code>nros_schema_nightly_warm<\/code>, start\/end times). Safe upgrade from <strong>2.7.x<\/strong>.<\/li>\n<\/ul>\n\n<h4>2.7.0<\/h4>\n\n<ul>\n<li>NEW: <strong>Classic admin shell (stable default)<\/strong> \u2014 vertical sidebar navigation (Dashboard, Chief Insights, Author Performance, Settings, PRO) with SaaS-style layout across all Newsroom OS admin tabs (<code>nros-classic-shell<\/code>, <code>nros-admin-dashboard.css<\/code>).<\/li>\n<li>NEW: <strong>Dashboard polish<\/strong> \u2014 bento KPI cards with <strong>sparklines<\/strong>, <strong>Kanban-first<\/strong> task board (table toggle), workflow <strong>filter chips<\/strong>, collapsible inline task form, <strong>Latest Published<\/strong> thumbnails, enhanced kanban cards (SEO tag, avatar, filter attrs).<\/li>\n<li>NEW: <strong>Chief Insights refresh<\/strong> \u2014 command-center <strong>bento layout<\/strong>, KPI strips, channel breakdown bars, seasonal radar card, accordions, dedicated <code>nros-chief-insights.css<\/code> \/ JS.<\/li>\n<li>NEW: <strong>Author Performance refresh<\/strong> \u2014 vertical accordion author rows, progress bars, <strong>AI Desk Overview<\/strong> header, tab underline polish (<code>author-performance.css<\/code> \/ JS).<\/li>\n<li>NEW: <strong>Settings bento<\/strong> \u2014 section sidebar nav (Site, Schema, Timeline, UX, AI, Team, Indexing, Performance), publisher profile cards, cleaner form layout.<\/li>\n<li>NEW: <strong>Cross-cutting classic polish<\/strong> \u2014 <code>nros-classic-polish.css<\/code> \/ JS: semantic Trend Radar rows, competitor <strong>+ Brief<\/strong> buttons, kanban title links.<\/li>\n<li>NEW: <strong>Desk AI Content Brief<\/strong> \u2014 generate brief from <strong>Dashboard \u2192 Trend Radar<\/strong> (not the post editor); <strong>Create task<\/strong> + assignee in one flow (<code>nros-content-brief.js<\/code>). Editor Radar keeps <strong>Copy headline<\/strong> + toast for writers.<\/li>\n<li>NEW: <strong>Dashboard Trend Radar fix<\/strong> \u2014 dedicated <code>nros-dashboard-radar.js<\/code> loads trends\/news on the Alerts tab (no longer depends on editor <code>script.js<\/code>).<\/li>\n<li>NEW: <strong>Editor Radar CSS fix<\/strong> \u2014 shared radar row styles in <code>nros-theme.css<\/code> so AJAX trends\/news render correctly in the post sidebar.<\/li>\n<li>NEW: <strong>Separate editor vs desk radar cache<\/strong> \u2014 trends\/news HTML cached per context (<code>v4<\/code> \/ <code>v7<\/code> keys) so editor Copy buttons and desk Brief buttons stay correct.<\/li>\n<li>IMPROVEMENT: <strong>Settings UX<\/strong> \u2014 hide overlapping WordPress <code>#wpfooter<\/code> on classic Newsroom settings; version shown in plugin sidebar footer.<\/li>\n<li>IMPROVEMENT: <strong>Command palette (\u2318K)<\/strong> \u2014 content brief action scrolls to Dashboard Trend Radar (desk workflow).<\/li>\n<li>IMPROVEMENT: <strong>React UI parked<\/strong> \u2014 experimental unified React admin remains in <code>assets\/admin-app\/<\/code> (pre-built) for a future opt-in; <strong>disabled by default<\/strong> on upgrade (<code>newsai_settings_ui<\/code> \u2192 <code>classic<\/code>). Settings shows <strong>Coming Soon<\/strong> instead of enabling React. One-time admin notice after update.<\/li>\n<li>NEW (codebase, opt-in later): <strong>Unified React admin shell<\/strong> \u2014 React Dashboard (Kanban, radar, KPIs), Chief Insights (charts, PDF, AI brief), Author Performance, Settings registry (14 sections), PRO tab, REST <code>\/newsroom-os\/v1\/*<\/code> + AJAX fallbacks, inline task form, GSC\/Indexing tools, AI policy page generator.<\/li>\n<li>FIX: <strong>Dashboard radar<\/strong> regression from 2.5.0 (Trends widget stuck on \u201cLoading\u2026\u201d without editor bundle).<\/li>\n<li>FIX: <strong>Settings save<\/strong> \u2014 React mode toggle blocked until redesign ships; classic remains authoritative.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong> New options only (<code>newsai_settings_ui<\/code>, admin UI policy version). Safe upgrade from <strong>2.6.x<\/strong>.<\/li>\n<\/ul>\n\n<h4>2.6.0<\/h4>\n\n<ul>\n<li>PERF: <strong>Megasite schema mode<\/strong> (default on) \u2014 serve-stale cached JSON-LD on version mismatch, 15-minute warm cron (40 posts\/batch), per-post invalidation; avoids mass cold rebuilds on high-traffic sites.<\/li>\n<li>NEW: <strong>Setup wizard site scan<\/strong> \u2014 posts count, cache\/object cache, SEO plugin, PHP; auto-picks Standard \/ Busy \/ Megasite performance profile.<\/li>\n<li>NEW: <strong>Floating AI toolbar<\/strong> \u2014 highlight text in the editor for Rewrite \/ Shorten \/ Expand \/ Simplify (Pro BYOK; Settings \u2192 UX &amp; AI).<\/li>\n<li>NEW: <strong>GEO summary block<\/strong> \u2014 AI generates <code>&lt;section class=\"nros-geo-summary\"&gt;<\/code> with lead + Q&amp;A for AI Overviews.<\/li>\n<li>NEW: <strong>ClaimReview schema<\/strong> \u2014 optional fact-check meta in the AI tab emits ClaimReview JSON-LD on debunk articles.<\/li>\n<li>NEW: <strong>GSC 12-month backfill<\/strong> \u2014 chunked AJAX backfill with progress UI (queries, site metrics, post batches).<\/li>\n<li>NEW: <strong>Per-post geo targeting<\/strong> \u2014 Article market select; category-level override; Trend Radar and Discover respect locale.<\/li>\n<li>FIX: <strong>Auto-Timeline intelligence<\/strong> \u2014 IDF topic tag selection, generic-tag blocklist (e.g. \u0391\u039b\u039b\u0391\u0393\u0395\u03a3), accent-insensitive title match (\u03a0\u03b1\u03c4\u03af\u03bd\u03b9\u03b1 \u2194 \u03a0\u0391\u03a4\u0399\u039d\u0399), topic-first candidate pool, same-category boost, optional GSC click tiebreaker.<\/li>\n<li>FIX: <strong>Internal archive links<\/strong> \u2014 GSC click boost ranks high-performing evergreen pages; clearer scoring.<\/li>\n<li>FIX: <strong>GSC service account JSON<\/strong> \u2014 dedicated AJAX save (megasite-safe), PEM normalization, Settings tab redirect; GSC Sync JSON response hardened (output buffer + graceful parse).<\/li>\n<li>FIX: <strong>AI alt text button<\/strong> \u2014 visible success\/error messages, manual regenerate overwrites existing alt, attachment ID detection feedback.<\/li>\n<li>FIX: <strong>GSC Sync now<\/strong> \u2014 survives long megasite runs; auto-refresh on non-JSON AJAX response.<\/li>\n<li>UX: <strong>Idle editor scoring<\/strong> \u2014 publication readiness runs after 1.2s typing pause via <code>requestIdleCallback<\/code>; tag suggestions load on Readiness tab only.<\/li>\n<li>UX: <strong>3-tab editor sidebar<\/strong> \u2014 Readiness \/ AI \/ Radar; gauges stay visible above tabs.<\/li>\n<li>SCHEMA: <strong>Hybrid default<\/strong> \u2014 new installs and wizard keep Yoast\/Rank Math JSON-LD; Strict is opt-in.<\/li>\n<li>GLOBAL: <strong>WPML \/ Polylang AI prompts<\/strong> \u2014 output language from post locale, then per-post geo.<\/li>\n<li>SAFE: <strong>Duplicate plugin folder notice<\/strong> on activate; expanded uninstall cleanup for new options\/crons.<\/li>\n<li>TESTS: <strong>SchemaArticleBodyTest<\/strong>, <strong>SchemaWikidataConfidenceTest<\/strong> (plus existing author\/body coverage).<\/li>\n<li>NOTE: After deploy on megasites, run <strong>GSC Sync now<\/strong> once; re-save service account JSON if Indexing\/GSC tokens fail. Timeline cache bumps to v5 automatically.<\/li>\n<\/ul>\n\n<h4>2.5.2<\/h4>\n\n<ul>\n<li>FIX: <strong>articleBody stability<\/strong> \u2014 rolled back aggressive <code>nn<\/code>\/line-break rewriting that could empty <code>articleBody<\/code> after post Update; body is now plain extract + JSON quote safety only (<code>NROS_SCHEMA_BUILD<\/code> 263).<\/li>\n<li>FIX: <strong>articleBody cache<\/strong> \u2014 post_meta stores JSON-LD as base64 so WP slash\/unslash cannot break <code>\\\\n<\/code> escapes (<code>NROS_SCHEMA_BUILD<\/code> 265).<\/li>\n<li>SCHEMA: <strong>Publisher trust node on singles<\/strong> \u2014 posts, categories, tags, and author archives emit the same <code>#organization<\/code> with description, sameAs, contact, address, and policy URLs (no taxID\/VAT repeat); full legal org remains on home\/About (<code>NROS_SCHEMA_BUILD<\/code> 266).<\/li>\n<li>SCHEMA: <strong>E-E-A-T pack A<\/strong> \u2014 singles add WebSite\/WebPage <code>description<\/code>, <code>inLanguage<\/code>, dates; trust org adds <code>foundingDate<\/code>\/<code>areaServed<\/code>; slim Person keeps <code>sameAs<\/code> (<code>NROS_SCHEMA_BUILD<\/code> 267).<\/li>\n<li>FIX: <strong>Empty body fallback<\/strong> \u2014 when HTML extract is empty but <code>post_content<\/code> exists, retries <code>the_content<\/code> and raw strip_shortcodes\/strip_tags so <code>articleBody<\/code> and <code>wordCount<\/code> stay populated on all sites.<\/li>\n<li>NOTE: After deploy, Update one post to refresh cached schema. Legacy plain meta is still read until rebuild.<\/li>\n<li>TESTS: <strong>SchemaArticleBodyTest<\/strong> \u2014 extract\/fallback and JSON quote safety.<\/li>\n<li>SAFE: <strong>No database migrations.<\/strong><\/li>\n<\/ul>\n\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  &hellip;<\/li>\n<\/ul>","raw_excerpt":"Optimize WordPress articles for Google Discover and Google News. Newsroom OS 2.9+ includes the full publisher stack for free: NewsArticle schema, Sear &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/de-ch.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/287352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/de-ch.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/de-ch.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/de-ch.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=287352"}],"author":[{"embeddable":true,"href":"https:\/\/de-ch.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/koskar22"}],"wp:attachment":[{"href":"https:\/\/de-ch.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=287352"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/de-ch.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=287352"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/de-ch.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=287352"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/de-ch.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=287352"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/de-ch.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=287352"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/de-ch.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=287352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}