{"id":365562,"date":"2026-09-15T15:51:18","date_gmt":"2026-09-15T15:51:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/mose-companion\/"},"modified":"2026-09-15T20:51:34","modified_gmt":"2026-09-15T20:51:34","slug":"mose-companion","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/mose-companion\/","author":23560578,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.7.1","stable_tag":"1.7.1","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Mose - SEO & AI Visibility Companion","header_author":"","header_description":"Secure WordPress health and SEO bridge for Mose.","assets_banners_color":"90a992","last_updated":"2026-09-15 20:51:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":82,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.6.0":{"tag":"1.6.0","author":"trymose","date":"2026-09-15 15:50:46","revision":3697309},"1.6.1":{"tag":"1.6.1","author":"trymose","date":"2026-09-15 16:25:41","revision":3697362},"1.7.0":{"tag":"1.7.0","author":"trymose","date":"2026-09-15 17:37:49","revision":3697472},"1.7.1":{"tag":"1.7.1","author":"trymose","date":"2026-09-15 20:51:34","revision":3697684}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3697309,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3697309,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3697309,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3697309,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3697309,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.6.0","1.6.1","1.7.0","1.7.1"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3697309,"resolution":"1","location":"assets","locale":"","width":1567,"height":698},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3697309,"resolution":"2","location":"assets","locale":"","width":1567,"height":698}},"screenshots":{"1":"AI-crawler visits per day and per crawler, as reported by the plugin to the Mose panel.","2":"Connections in the Mose panel: the WordPress site connected through Mose Companion."}},"plugin_section":[],"plugin_tags":[2353,323,529,7143,186],"plugin_category":[55],"plugin_contributors":[280907],"plugin_business_model":[],"class_list":["post-365562","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-blog","plugin_tags-content","plugin_tags-publishing","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-trymose","plugin_committers-trymose"],"banners":{"banner":"https:\/\/ps.w.org\/mose-companion\/assets\/banner-772x250.png?rev=3697309","banner_2x":"https:\/\/ps.w.org\/mose-companion\/assets\/banner-1544x500.png?rev=3697309","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/mose-companion\/assets\/icon.svg?rev=3697309","icon":"https:\/\/ps.w.org\/mose-companion\/assets\/icon.svg?rev=3697309","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/mose-companion\/assets\/screenshot-1.jpg?rev=3697309","caption":"AI-crawler visits per day and per crawler, as reported by the plugin to the Mose panel."},{"src":"https:\/\/ps.w.org\/mose-companion\/assets\/screenshot-2.jpg?rev=3697309","caption":"Connections in the Mose panel: the WordPress site connected through Mose Companion."}],"raw_content":"<!--section=description-->\n<p><strong>Mose Companion<\/strong> connects your WordPress site to <a href=\"https:\/\/trymose.com\/\">Mose<\/a>, the content platform that finds what your customers already search for, writes the article, and hands you a draft to approve.<\/p>\n\n<p>Install the plugin, press Connect with Mose and approve in your Mose panel. WordPress finishes the connection and takes you back to Mose. Nothing is published without your approval.<\/p>\n\n<h4>What you get<\/h4>\n\n<ul>\n<li><strong>Two-click setup<\/strong> - press Connect with Mose, approve in your Mose panel. No codes or API keys to copy between tabs.<\/li>\n<li><strong>Drafts, not surprises<\/strong> - every article lands in WordPress as a draft (or on your schedule, if you turn auto-publish on in Mose).<\/li>\n<li><strong>SEO fields filled in<\/strong> - title, meta description, focus keyword and FAQ schema, written straight into Rank Math or Yoast SEO; a built-in fallback covers sites without either.<\/li>\n<li><strong>Cover images<\/strong> - the article's featured image is uploaded to your media library under the article's own slug.<\/li>\n<li><strong>AI visibility<\/strong> - see which AI crawlers (ChatGPT, Perplexity, Gemini, Claude and others) read your site, per page and per day, in your Mose panel.<\/li>\n<li><strong>\/llms.txt<\/strong> - Mose publishes an up-to-date llms.txt for your site so AI engines know what you offer.<\/li>\n<li><strong>Works behind firewalls<\/strong> - your site sends its pages to Mose, so hosts that block outside crawlers still get a full analysis.<\/li>\n<li><strong>Lightweight<\/strong> - no page-builder changes, no theme changes, no front-end scripts.<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Install and activate the plugin. WordPress opens its <strong>Mose<\/strong> page.<\/li>\n<li>Press <strong>Connect with Mose<\/strong> and approve in your Mose panel.\n\n<ul>\n<li>or paste a pairing code under <strong>Connect another way<\/strong><\/li>\n<\/ul><\/li>\n<li>Mose reads your published pages, learns how your brand writes, and starts proposing articles. You review each draft in Mose; approved articles arrive in WordPress.<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>A Mose account (<a href=\"https:\/\/trymose.com\/\">sign up at trymose.com<\/a>)<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>The plugin only talks to Mose, and only after you connect the site. It sends your published pages (so Mose can learn your brand and link between your articles) and an aggregate count of AI-crawler visits. It never sends reader data, IP addresses or your account password. Deactivating the plugin stops all sending. Every payload is listed under \"Does this plugin send my data anywhere?\" in the FAQ.<\/p>\n\n<!--section=installation-->\n<h4>From the WordPress dashboard<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins &gt; Add New<\/strong>.<\/li>\n<li>Search for <strong>Mose<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Press <strong>Connect with Mose<\/strong> and approve in your Mose panel.\n\n<ul>\n<li>or paste a pairing code under <strong>Connect another way<\/strong><\/li>\n<\/ul><\/li>\n<\/ol>\n\n<h4>Manual installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP from <a href=\"https:\/\/wordpress.org\/plugins\/mose-companion\/\">wordpress.org\/plugins\/mose-companion<\/a>.<\/li>\n<li>Go to <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong>, choose the ZIP, click <strong>Install Now<\/strong>.<\/li>\n<li>Activate the plugin and connect it from the <strong>Mose<\/strong> menu as above.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20mose%20account%3F\"><h3>Do I need a Mose account?<\/h3><\/dt>\n<dd><p>Yes. The plugin is the bridge between your site and Mose; on its own it does nothing. Sign up at <a href=\"https:\/\/trymose.com\/\">trymose.com<\/a>.<\/p><\/dd>\n<dt id=\"can%20i%20review%20articles%20before%20they%20are%20published%3F\"><h3>Can I review articles before they are published?<\/h3><\/dt>\n<dd><p>Yes. By default every article arrives as a draft and waits for you. Auto-publish is a separate switch in your Mose panel that you turn on deliberately.<\/p><\/dd>\n<dt id=\"which%20seo%20plugins%20are%20supported%3F\"><h3>Which SEO plugins are supported?<\/h3><\/dt>\n<dd><p>Rank Math and Yoast SEO are written to directly. If neither is active, the plugin stores the SEO fields itself and prints them.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20builders%3F\"><h3>Does it work with page builders?<\/h3><\/dt>\n<dd><p>Yes. Mose reads your pages the way a visitor sees them (rendered HTML), so Elementor, Divi and other builders are read correctly. Articles are created as standard posts.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20send%20my%20data%20anywhere%3F\"><h3>Does this plugin send my data anywhere?<\/h3><\/dt>\n<dd><p>Only to Mose, and only after you connect the site. In full:<\/p>\n\n<p>This plugin connects to the Mose API (<a href=\"https:\/\/api.trymose.com\/\">api.trymose.com<\/a>, operated by <a href=\"https:\/\/trymose.com\/\">Mose<\/a>):<\/p>\n\n<ul>\n<li>When an administrator presses Connect with Mose, the browser opens the Mose panel\n(<a href=\"https:\/\/app.trymose.com\/\">app.trymose.com<\/a>) with this site's address and the address of\nits Mose page. The panel sends back a pairing code, which is used only when it returns to the\nMose page of the administrator who pressed the button, within half an hour.<\/li>\n<li>When that code returns, or an administrator submits a pairing code, it sends the code, site URL, WordPress username,\na newly created application password, the shared signing secret and software versions over\nHTTPS to connect the site. The account password is not sent.<\/li>\n<li>Once connected, it sends published pages for analysis, including their URLs and rendered HTML.\nPage content can include information published by the site owner, such as contact details.\nA full-site push happens after pairing or a plugin upgrade; published page changes are queued.<\/li>\n<li>Every six hours it POSTs the AI-agent visit report - per AI crawler, the visited URL path, the\n15-minute slot and the hit count, plus the plugin version and the reporting window. The request\nis signed with a secret Mose provisions when the site owner connects the site; it carries no IP\naddresses, user agent strings, reader data or post content. Nothing is sent until the site is\nconnected in Mose; deactivating or uninstalling the plugin stops it, and Mose rejects reports\nfrom a site that is no longer connected. Authenticated Mose requests can also read this site's\nREST endpoints. The plugin does not send data to an AI model provider directly.<\/li>\n<\/ul>\n\n<p>The authenticated endpoints report site health, identify the active SEO adapter, write SEO fields\nand return the stored values, find a post by its idempotency key, and return rendered HTML only for\nURLs belonging to the same WordPress site. When the site is removed in Mose, a signed request tells\nthe plugin to forget the connection. Requests are authenticated with either a WordPress\nApplication Password or an HMAC-SHA256 signature.<\/p>\n\n<p>Terms of Service: <a href=\"https:\/\/trymose.com\/terms\/\">trymose.com\/terms<\/a><\/p>\n\n<p>Privacy Policy: <a href=\"https:\/\/trymose.com\/privacy\/\">trymose.com\/privacy<\/a><\/p><\/dd>\n<dt id=\"where%20are%20the%20pairing%20code%20and%20the%20secret%20shown%3F\"><h3>Where are the pairing code and the secret shown?<\/h3><\/dt>\n<dd><p>You do not need to copy a pairing code: Connect with Mose brings one back and uses it. To connect by hand, get a code in your Mose panel and paste it under <strong>Connect another way<\/strong>. The plugin's own signing secret is shown once, right after it is generated under <strong>Mose &gt; Advanced<\/strong>; afterwards only a masked prefix is displayed.<\/p><\/dd>\n<dt id=\"is%20php%207.4%20supported%3F\"><h3>Is PHP 7.4 supported?<\/h3><\/dt>\n<dd><p>Yes. On older PHP versions the plugin stops before loading, instead of breaking the site.<\/p><\/dd>\n<dt id=\"is%20composer%20required%20on%20the%20server%3F\"><h3>Is Composer required on the server?<\/h3><\/dt>\n<dd><p>No. Composer, PHPUnit and PHPCS are development dependencies only; the released plugin has no build step.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.7.1<\/h4>\n\n<ul>\n<li>Approving in your Mose panel finishes the connection: WordPress uses the returned code and\ntakes you back to Mose. The second confirmation is gone.<\/li>\n<li>When Mose asks for pages, the first ones are sent in that request instead of waiting for\nWP-Cron.<\/li>\n<li>Other plugins' notices are hidden on the Mose page.<\/li>\n<li>Removing the site in Mose disconnects the plugin: the secret is replaced, Mose's application\npassword is revoked and the page asks to connect again.<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>Two-click connection: press Connect with Mose, approve in your Mose panel, confirm in\nWordPress. Pasting a pairing code is still available under Connect another way.<\/li>\n<li>Mose has its own admin menu. Old Settings &gt; Mose links, pairing links included, open it.<\/li>\n<li>After activation WordPress opens the Mose page once; bulk and network activations are left\nalone.<\/li>\n<li>The page shows one card for the site's state. The secret, the connection check, the AI\ncounter and the health data are in a closed Advanced section.<\/li>\n<li>Turkish translation included.<\/li>\n<\/ul>\n\n<h4>1.6.1<\/h4>\n\n<ul>\n<li>Directory release. Installation now goes through Plugins &gt; Add New; the readme is rewritten\nfor site owners, with the same external-service disclosure kept in full.<\/li>\n<li>Display name is now \"Mose - SEO &amp; AI Visibility Companion\". Slug, endpoints and behaviour\nare unchanged.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Security: enqueued admin assets, input sanitization, admin-only secret\/llms.txt endpoints,\natomic replay guard.<\/li>\n<li>The settings screen's CSS and JavaScript are enqueued files loaded only on that screen, instead\nof being printed into the page.<\/li>\n<li>Server variables read by the plugin are unslashed and sanitized at the point they are read.<\/li>\n<li>Setting the shared secret and writing the site's \/llms.txt now require an administrator.<\/li>\n<li>A signed request is claimed with a single atomic database write, so two copies of the same\nrequest arriving together can no longer both be accepted.<\/li>\n<\/ul>\n\n<h4>1.5.3<\/h4>\n\n<ul>\n<li>Keep a durable identity for each full-site transfer so retries cannot open another scan or\noverwrite a later scan's pages on compatible Mose servers.<\/li>\n<li>Protect transfer initialization with a lifecycle lock and recover empty transfer queues.<\/li>\n<\/ul>\n\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>Allow reconnecting when a Mose application password already exists. Retry a duplicate name\nonce with a unique suffix while preserving existing connection passwords.<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Remove the application password created by an attempt whose pairing code was definitively\nrejected as missing, expired or already used. Existing passwords remain unchanged; ambiguous\nnetwork responses do not revoke a connection that may have succeeded.<\/li>\n<li>Clarify pairing and published-page data transfers in the external-service disclosure.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Sending the whole site now starts an analysis on its own, so a site that was connected before\nthis plugin could send pages no longer sits connected and silent. Upgrading an already\nconnected site sends everything once.<\/li>\n<li>Each batch says whether it is the whole site or a single page that was just published, so\npublishing a post no longer looks like a new analysis.<\/li>\n<li>When Mose cannot reach this site to ask for pages, it asks in its reply to this plugin's own\nscheduled report instead - a connection this site opens, which a firewall cannot refuse.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Connect a site with a single pairing code from the Mose panel. The plugin creates its own\napplication password on the server, so nobody has to open the Application Passwords screen or\ncopy a password between two tabs.<\/li>\n<li>Send this site's rendered pages to Mose instead of waiting to be crawled. On sites behind a\nfirewall that refuses outside crawlers, this is the only way the analysis can be built at all;\npages are rendered the way a visitor sees them, page builders included.<\/li>\n<li>The settings screen says how many pages have been sent, how many are still queued, and why the\nlast attempt failed if it did.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Let Mose read this install's reporting secret over the connection it already has, so the\nAI-agent counter starts working without anyone copying a key by hand.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Count visits by known AI crawlers per URL and 15-minute slot and report them to Mose every six\nhours; the settings screen shows when the last report went and, if it did not, why.<\/li>\n<li>Serve \/llms.txt with the content Mose publishes for this site, refreshed after every publish.<\/li>\n<li>Unify the version stated in the plugin header, the code and this readme.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Store and print the JSON-LD schema Mose builds for a published article.<\/li>\n<li>Print only the FAQ block when Rank Math or Yoast already writes its own schema graph.<\/li>\n<li>Skip rewriting an identical schema, so republishing an unchanged article changes nothing.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial companion plugin.<\/li>\n<li>Application Password and HMAC-SHA256 authentication.<\/li>\n<li>Rank Math, Yoast, and generic SEO adapter layer.<\/li>\n<li>Site health, idempotency lookup, and same-site rendered HTML endpoints.<\/li>\n<\/ul>","raw_excerpt":"Connect your WordPress site to Mose: SEO article drafts written from your own search data, SEO fields filled in, and a report of which AI engines read &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/365562","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=365562"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/trymose"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=365562"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=365562"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=365562"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=365562"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=365562"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=365562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}