{"id":383484,"date":"2026-10-11T07:58:18","date_gmt":"2026-10-11T07:58:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/manny-wenas-seo\/"},"modified":"2026-10-11T07:58:03","modified_gmt":"2026-10-11T07:58:03","slug":"manny-wenas-seo","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/manny-wenas-seo\/","author":23574194,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.5","stable_tag":"1.0.5","tested":"7.1.3","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Manny Wenas SEO","header_author":"Manny Wenas","header_description":"Lean SEO for WordPress: semantic keyphrase scoring, connected JSON-LD schema, sitemaps, llms.txt, Search Console and AI-agent abilities.","assets_banners_color":"","last_updated":"2026-10-11 07:58:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/mannywenas.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":41,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"mannywenas","date":"2026-10-11 07:58:03","revision":3739097}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[244604,1117,127115,186,1557],"plugin_category":[55],"plugin_contributors":[283023],"plugin_business_model":[],"class_list":["post-383484","plugin","type-plugin","status-publish","hentry","plugin_tags-llms-txt","plugin_tags-schema","plugin_tags-search-console","plugin_tags-seo","plugin_tags-sitemap","plugin_category-seo-and-marketing","plugin_contributors-mannywenas","plugin_committers-mannywenas"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/manny-wenas-seo.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>At a copywriting conference around 2011, a group of journalists asked their SEO tool \u2014 half sarcastically \u2014 whether they should just repeat their keyword phrase fifteen times in a row.<\/p>\n\n<p>The tool essentially said yes.<\/p>\n\n<p>That's the problem Manny Wenas SEO was built to fix.<\/p>\n\n<p>Every other SEO plugin on the market was designed to make Google happy. Manny Wenas SEO was designed to make writers happy. The difference matters. Mechanical writing ranks worse than good writing. Always has. We just happen to be the first plugin to build that conviction into the scoring.<\/p>\n\n<p>Our core principle: reward writers for organically placing their keyphrase. Never make them feel like they're writing for a search engine algorithm. Mechanical writing is the enemy.<\/p>\n\n<h4>What makes this different<\/h4>\n\n<p>We check five things: your keyphrase in the title, in the opening paragraph, in a subheading, in the slug, and in the meta description. That's it. We don't count how many times you used it in the body. We don't penalise you for not hitting a density percentage. We don't tell you to stuff it into places it doesn't belong.<\/p>\n\n<p>If you wrote a good article and placed your keyphrase naturally in those five locations, you'll score well. If you wrote a great article but missed one, you'll still score well \u2014 and we'll tell you which one you missed, not scold you for it.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Focus keyphrase (semantic matching) plus up to two related keyphrases<\/li>\n<li>SEO title, meta description, noindex\/nofollow per post<\/li>\n<li>Open Graph and X\/Twitter cards<\/li>\n<li>Sitemaps: posts, news, images, videos, categories, tags, authors, plus an HTML sitemap shortcode<\/li>\n<li>robots.txt management and weekly-generated llms.txt (anchor posts first)<\/li>\n<li>Connected @graph JSON-LD, server-side rendered<\/li>\n<li>Yoast SEO and Rank Math coexistence (we defer: no duplicate meta, schema or sitemaps)<\/li>\n<li>Google Search Console (OAuth), per-post query data<\/li>\n<li>WordPress Abilities API (WP 6.9+)<\/li>\n<li>0-100 SEO and readability score with a written verdict in the editor<\/li>\n<\/ul>\n\n<p>Deliberately excluded: redirects, 404 monitor, analytics dashboard, AI writer.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin optionally connects to the following third-party services. All external connections are disabled by default and must be explicitly enabled by the site administrator.<\/p>\n\n<p><strong>IndexNow<\/strong> (optional, disabled by default)\nWhen enabled, notifies search engines of new or updated content via the IndexNow protocol.\nSends: the URL of the published\/updated post, plus the site's IndexNow API key.\nTriggered: when a post is published or updated, if the feature is enabled (Manny Wenas SEO &gt; Verification &amp; IndexNow).\nService provider: IndexNow (Microsoft\/Bing)\nTerms of use: https:\/\/www.indexnow.org\/documentation\nPrivacy policy: https:\/\/privacy.microsoft.com\/en-us\/privacystatement<\/p>\n\n<p><strong>Google Trends<\/strong> (optional, disabled by default)\nWhen enabled, shows a search-interest score for your focus keyphrase in the post editor.\nSends: the focus keyphrase you typed, to trends.google.com (unofficial endpoint, no account or API key).\nTriggered: about 800 milliseconds after you stop typing the focus keyphrase in the SEO metabox, if the feature is enabled (Manny Wenas SEO &gt; General). Results are cached for 24 hours, failed requests for 1 hour.\nService provider: Google LLC\nTerms of use: https:\/\/policies.google.com\/terms\nPrivacy policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<p><strong>Google Search Console<\/strong> (optional, OAuth-based)\nWhen enabled, connects to your GSC account to display search query data for a post.\nSends: OAuth tokens managed by the site administrator and, when the metabox asks for query data, the URL of the post. No post content is sent.\nTriggered: only after the GSC integration is manually authorized by the administrator.\nService provider: Google LLC\nTerms of use: https:\/\/policies.google.com\/terms\nPrivacy policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<p><strong>OpenAI \/ Anthropic<\/strong> (pro tier only, not included in this plugin)\nThe pro version of this plugin (distributed separately, not through WordPress.org) optionally connects to OpenAI or Anthropic APIs for AI-assisted meta generation. This functionality is not present in the version hosted on WordPress.org.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>manny-wenas-seo<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install directly through the WordPress Plugins screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>Manny Wenas SEO \u2192 Settings<\/strong> to configure your site-wide defaults (site name, separator, home page meta).<\/li>\n<li>Open any post or page in the block editor \u2014 the SEO metabox appears below the content area.<\/li>\n<li>Enter your focus keyphrase, SEO title, and meta description. Your score updates in real time.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20doesn%27t%20this%20check%20keyword%20density%3F\"><h3>Why doesn't this check keyword density?<\/h3><\/dt>\n<dd><p>Because keyword density is not a Google ranking signal, and chasing it produces worse writing. The plugin checks that your keyphrase appears in the five places that actually matter for crawling and indexing: the title, the opening paragraph, a subheading, the slug, and the meta description. That's where placement counts.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20alongside%20yoast%20seo%20or%20rank%20math%3F\"><h3>Can I use this alongside Yoast SEO or Rank Math?<\/h3><\/dt>\n<dd><p>Yes. Manny Wenas SEO detects both plugins and defers automatically \u2014 it will not output duplicate meta tags, schema, or sitemaps when either is active. You can use Manny Wenas SEO for scoring and writing guidance while keeping your existing SEO plugin for other features.<\/p><\/dd>\n<dt id=\"what%20is%20the%20scoring%20based%20on%3F\"><h3>What is the scoring based on?<\/h3><\/dt>\n<dd><p>The 0-100 score is split across four areas: Text &amp; Content (45 points), Placement (30 points), Technical (15 points), and Optional signals (10 points). The written verdict in the editor tells you exactly what you scored and what, if anything, to fix \u2014 in plain language, not a traffic light colour.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20use%20ai%3F\"><h3>Does this plugin use AI?<\/h3><\/dt>\n<dd><p>The free version on WordPress.org does not. A separate pro version (distributed outside the directory) includes optional AI-assisted meta generation via OpenAI or Anthropic. That functionality is not present here.<\/p><\/dd>\n<dt id=\"what%20is%20llms.txt%3F\"><h3>What is llms.txt?<\/h3><\/dt>\n<dd><p>An emerging standard that helps AI language models understand your site's content structure. The plugin generates it automatically on a weekly schedule, listing your anchor posts first.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20the%20classic%20editor%3F\"><h3>Does this work with the classic editor?<\/h3><\/dt>\n<dd><p>The metabox renders in both the block editor and the classic editor. The real-time score preview requires the block editor.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fixed: Search Console \"Suggest\" button now shows a clear \"not connected\" message when GSC is not linked<\/li>\n<li>Removed: Dead internal methods pages_report() and youtube_id()<\/li>\n<li>Fixed: Uninstall now cleans up Trends transients (mwseo_trends_*)<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Compliance: the ABSPATH direct-access guard (<code>defined( 'ABSPATH' ) || exit;<\/code>) is now the first statement of every file in includes\/<\/li>\n<li>Packaging: removed the Domain Path header until translation files ship<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Compliance: every PHP file in includes\/ now starts with the standard ABSPATH direct-access guard<\/li>\n<li>Packaging: the languages\/ folder (Domain Path) is always present in the distribution<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Compliance: removed pro-tier licence gate; all included features are now fully functional<\/li>\n<li>Security: replaced wp_salt('auth') with a neutral site-specific hash seed in schema output<\/li>\n<li>Code quality: replaced inline script tag in importer with wp_add_inline_script()<\/li>\n<li>Privacy: IndexNow and Google Trends integrations are now disabled by default and require explicit opt-in<\/li>\n<li>Docs: added External Services section to readme.txt disclosing all third-party connections<\/li>\n<li>Hardening: tightened REST API permission callback for low-scoring posts endpoint<\/li>\n<li>Branding: updated Plugin URI to mannywenas.com<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>New 100-point scoring system (Text &amp; Content 45, Placement 30, Technical 15, Optional 10)<\/li>\n<li>Optional keyphrases field: shows N\/A instead of 0 when empty<\/li>\n<li>Alt text check is now accessibility-based (any non-empty alt passes)<\/li>\n<li>Word count under 300 words is now a notice, not a score deduction<\/li>\n<li>External links: advisory notice only, no point deduction<\/li>\n<li>Rank Math \/ Yoast title templates rendered before scoring<\/li>\n<li>All user-facing strings are now i18n-ready (.pot included)<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Lean SEO: semantic keyphrase scoring, connected JSON-LD schema, sitemaps, llms.txt, Search Console and AI-agent abilities.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/383484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=383484"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mannywenas"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=383484"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=383484"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=383484"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=383484"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=383484"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=383484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}