{"id":374197,"date":"2026-09-28T14:20:48","date_gmt":"2026-09-28T14:20:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/semly-ai-visibility-geo\/"},"modified":"2026-10-13T22:26:38","modified_gmt":"2026-10-13T22:26:38","slug":"semly-ai-visibility-geo","status":"publish","type":"plugin","link":"https:\/\/kea.wordpress.org\/plugins\/semly-ai-visibility-geo\/","author":23571270,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.1","stable_tag":"0.2.1","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Semly - AI Visibility & GEO","header_author":"Semly","header_description":"Connect WordPress to Semly for AI visibility and GEO. Publish and update articles from your Semly account.","assets_banners_color":"e2ebfb","last_updated":"2026-10-13 22:26:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/semly.ai\/integrations","header_author_uri":"https:\/\/semly.ai","rating":5,"author_block_rating":0,"active_installs":0,"downloads":168,"num_ratings":3,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.1":{"tag":"0.1.1","author":"semly","date":"2026-09-28 14:20:22","revision":3717352},"0.2.1":{"tag":"0.2.1","author":"semly","date":"2026-10-13 22:26:38","revision":3744984}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":3},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3717352,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3717352,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3717352,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500-pl.png":{"filename":"banner-1544x500-pl.png","revision":3717352,"resolution":"1544x500","location":"assets","locale":"pl","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3717352,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250-pl.png":{"filename":"banner-772x250-pl.png","revision":3717352,"resolution":"772x250","location":"assets","locale":"pl","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3717352,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.1","0.2.1"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3744984,"resolution":"1","location":"assets","locale":"","width":1280,"height":509},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3744984,"resolution":"2","location":"assets","locale":"","width":1248,"height":1402},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3744984,"resolution":"3","location":"assets","locale":"","width":1248,"height":524}},"screenshots":{"1":"Connect your WordPress site to Semly using a pairing token.","2":"Example visibility report with competitor comparisons, citation share, average positions across AI models and Share of Voice. Demonstration data.","3":"Autopilot workflow overview: monitoring, planning, writing and publishing content."}},"plugin_section":[],"plugin_tags":[529,2591,597,7143,283200],"plugin_category":[49],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-374197","plugin","type-plugin","status-publish","hentry","plugin_tags-content","plugin_tags-geo","plugin_tags-integration","plugin_tags-publishing","plugin_tags-semly","plugin_category-maps-and-location","plugin_committers-semly"],"banners":{"banner":"https:\/\/ps.w.org\/semly-ai-visibility-geo\/assets\/banner-772x250.png?rev=3717352","banner_2x":"https:\/\/ps.w.org\/semly-ai-visibility-geo\/assets\/banner-1544x500.png?rev=3717352","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/semly-ai-visibility-geo\/assets\/icon.svg?rev=3717352","icon":"https:\/\/ps.w.org\/semly-ai-visibility-geo\/assets\/icon.svg?rev=3717352","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/semly-ai-visibility-geo\/assets\/screenshot-1.jpg?rev=3744984","caption":"Connect your WordPress site to Semly using a pairing token."},{"src":"https:\/\/ps.w.org\/semly-ai-visibility-geo\/assets\/screenshot-2.jpg?rev=3744984","caption":"Example visibility report with competitor comparisons, citation share, average positions across AI models and Share of Voice. Demonstration data."},{"src":"https:\/\/ps.w.org\/semly-ai-visibility-geo\/assets\/screenshot-3.jpg?rev=3744984","caption":"Autopilot workflow overview: monitoring, planning, writing and publishing content."}],"raw_content":"<!--section=description-->\n<p>Semly - AI Visibility &amp; GEO connects your WordPress website to <a href=\"https:\/\/semly.ai\">Semly<\/a>, a platform for understanding and improving how your brand appears in answers from ChatGPT, Gemini and other AI platforms.<\/p>\n\n<p>Use Semly to move from visibility analysis to content planning, creation and publishing. Monitor relevant questions, compare your brand with competitors, explore cited sources and identify content opportunities. Turn recommendations into articles, then publish and update them on WordPress through this plugin.<\/p>\n\n<h4>What you can do in Semly<\/h4>\n\n<ul>\n<li>Monitor brand visibility across AI platforms and track relevant prompts.<\/li>\n<li>Compare visibility with competitors and identify content gaps.<\/li>\n<li>Analyze the sources cited in AI answers.<\/li>\n<li>Get recommendations to guide your next content actions.<\/li>\n<li>Create articles and manage their publication on WordPress.<\/li>\n<\/ul>\n\n<p>The WordPress dashboard shows a free one-time report, connected brand monitoring for the last 30 days and linked articles. Advanced analysis and content creation take place in the Semly platform. Visibility and recommendations in third-party AI answers are not guaranteed.<\/p>\n\n<h4>What this WordPress plugin does<\/h4>\n\n<ul>\n<li>Generate a free one-time visibility report without a Semly account.<\/li>\n<li>View real monitoring metrics for the paired brand, compared with the previous 30 days.<\/li>\n<li>Connect your site using a short-lived pairing token from Semly. No WordPress application password is needed.<\/li>\n<li>Send articles from Semly to WordPress as drafts or publish them directly.<\/li>\n<li>List and synchronize linked articles while keeping their WordPress post IDs, draft\/published\/scheduled status and publication dates. Confirm before overwriting manual edits.<\/li>\n<li>Let a WordPress administrator approve existing posts before Semly can update them.<\/li>\n<li>Disconnect the integration without deleting previously published articles.<\/li>\n<\/ul>\n\n<p>An active Semly account with the appropriate brand and module permissions is required for connected monitoring and article publishing. The free report does not require an account. The Semly service may require a paid subscription. The plugin itself is free to download.<\/p>\n\n<p>Generate a token in Semly and paste it into Semly &gt; Connection. Your site address is detected automatically. The connection supports ordinary posts, titles, slugs, safe HTML, drafts, publication and preservation of scheduled posts. It does not import all existing articles.<\/p>\n\n<p>Semly can update only posts it created or posts explicitly approved by a WordPress administrator. If you previously used the Semly API integration, disconnect that method in Semly before pairing the plugin. To link an existing article, try saving it from Semly, approve the pending link in the plugin settings, then retry the save. Its WordPress post ID stays unchanged.<\/p>\n\n<h4>External service and data<\/h4>\n\n<p>The plugin contacts https:\/\/platform.semly.ai\/api\/wordpress\/plugin\/ when an administrator creates or reads a free visibility report, pairs a site, opens connected monitoring, checks or disconnects a connection, or synchronizes a linked article. A free report sends the domain, email, site name, language and country to Semly; the existing report service saves a lead and applies retention and request limits. Polling runs only while the report is generating. Connected monitoring reads the paired brand\u2019s real data for the last 30 days compared with the previous 30 days. It sends the pairing token, site URL, WordPress username and random installation\/connection identifiers. These are needed to associate the installation with the selected brand and verify the connection. Semly sends a separate communication credential; WordPress stores only its SHA-256 hash and does not store the pairing token itself.<\/p>\n\n<p>After pairing, Semly makes authenticated HTTPS requests to this site's semly\/v1 endpoints. These requests carry the article identifier and, for writes, the title, slug, HTML content and draft\/publish status. WordPress returns connection capabilities or the linked post's identifier, status and URL. The plugin does not send unrelated post content, passwords or a list of all posts to Semly. No analytics or tracking scripts are included.<\/p>\n\n<p>Read the <a href=\"https:\/\/semly.ai\/terms\">Semly terms<\/a> and <a href=\"https:\/\/semly.ai\/privacy-policy\">privacy policy<\/a> before connecting. Contact support through your <a href=\"https:\/\/platform.semly.ai\">Semly account<\/a>.<\/p>\n\n<h4>Security and revocation<\/h4>\n\n<p>HTTPS with a valid public certificate is required. The credential is accepted only by the plugin's endpoints and cannot sign in to WordPress or access its general REST API. Administrator configuration and approvals require WordPress capabilities and a nonce. Each request checks the current permissions of the user who paired the installation.<\/p>\n\n<p>Unsafe HTML and WordPress block directives are rejected. Shortcode brackets from Semly are stored as HTML entities and displayed as text. The integration does not accept arbitrary authors, metadata or post types.<\/p>\n\n<p>Disconnect in Semly &gt; Connection to revoke access immediately. Deactivation disables the endpoints; explicit reactivation requires new pairing. Existing posts and their protected Semly identity metadata are preserved. Normal WordPress plugin upgrades preserve the publication connection and posts. Installations paired before 0.2.0 must disconnect and pair again before they can read monitoring data.<\/p>\n\n<p>Disconnecting in Semly stops new synchronization and attempts remote revocation. If the site is unavailable, Semly displays a warning; disconnect locally in WordPress to finish revocation.<\/p>\n\n<p>The plugin logs fixed security event names through the semly_connector_security_event action and, when WP_DEBUG_LOG is enabled, the WordPress debug log. It never intentionally logs tokens, communication credentials or article content.<\/p>\n\n<!--section=installation-->\n<p>Use a WordPress site on a publicly accessible HTTPS server with MySQL or MariaDB. The plugin requires database advisory locks to serialize publishing and revocation safely.<\/p>\n\n<ol>\n<li>In Semly, select your brand, open Integrations &gt; WordPress \u2014 plugin and generate a token. It expires in 30 minutes and is shown only once.<\/li>\n<li>In WordPress, open Plugins &gt; Add New, search for Semly - AI Visibility &amp; GEO, then install and activate it. Alternatively, upload the plugin ZIP through Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Open Semly &gt; Connection, review the service terms and paste the token. Click Connect to Semly.<\/li>\n<li>Return to Semly to publish or save articles. An existing post requires explicit approval in WordPress before Semly may update it.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20semly%20account%3F\"><h3>Do I need a Semly account?<\/h3><\/dt>\n<dd><p>The free one-time report works without an account. Connected monitoring and publishing require a Semly account with the appropriate brand and module permissions. The plugin is free; the connected Semly service may require a paid subscription.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20monitor%20ai%20visibility%20inside%20wordpress%3F\"><h3>Does the plugin monitor AI visibility inside WordPress?<\/h3><\/dt>\n<dd><p>Yes. The Overview screen displays the free report or real monitoring data for the paired brand. Advanced analysis and content creation remain available in Semly.<\/p><\/dd>\n<dt id=\"can%20i%20connect%20wordpress%20playground%3F\"><h3>Can I connect WordPress Playground?<\/h3><\/dt>\n<dd><p>No. Browser-based Playground runs WordPress locally in your browser with SQLite. It cannot receive Semly's server-to-server verification or publishing requests, and SQLite does not provide the MySQL advisory locks required by this plugin. Use a publicly accessible WordPress test site with HTTPS and MySQL or MariaDB.<\/p><\/dd>\n<dt id=\"can%20i%20use%20the%20old%20api%20integration%20at%20the%20same%20time%3F\"><h3>Can I use the old API integration at the same time?<\/h3><\/dt>\n<dd><p>No. Each brand uses one connection method. Existing API connections continue to work until you choose to switch.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20pairing%20fails%3F\"><h3>What happens if pairing fails?<\/h3><\/dt>\n<dd><p>Retry with the same token before it expires. The plugin preserves the installation identity and any credential hash already saved. If you generated a new token, disconnect the pending attempt in WordPress first.<\/p><\/dd>\n<dt id=\"can%20it%20edit%20all%20my%20content%3F\"><h3>Can it edit all my content?<\/h3><\/dt>\n<dd><p>No. Only normal posts created by Semly or explicitly approved by an administrator may be updated. Other post types and unlinked posts are rejected.<\/p><\/dd>\n<dt id=\"does%20it%20support%20sites%20in%20a%20subdirectory%3F\"><h3>Does it support sites in a subdirectory?<\/h3><\/dt>\n<dd><p>Yes. The detected public site URL retains the subdirectory. Both pretty REST URLs and the rest_route form are supported. HTTP redirects are not followed; use the site's final HTTPS address.<\/p><\/dd>\n<dt id=\"does%20php%207.4%20compatibility%20make%20an%20old%20server%20secure%3F\"><h3>Does PHP 7.4 compatibility make an old server secure?<\/h3><\/dt>\n<dd><p>No. PHP 7.4 is no longer supported by the PHP project. Use a supported PHP version and keep WordPress, themes and plugins updated. See https:\/\/www.php.net\/supported-versions.php.<\/p><\/dd>\n<dt id=\"how%20are%20updates%20delivered%3F\"><h3>How are updates delivered?<\/h3><\/dt>\n<dd><p>Updates use WordPress.org after the plugin has been approved and published. Before then, install an updated ZIP manually. There is no custom updater.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Add category selection and a default category for new posts published from Semly.<\/li>\n<li>Update the overview and report layout, illustrations and charts.<\/li>\n<li>Keep the plugin interface consistent with the selected WordPress language.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Add Semly overview, connection and linked articles screens.<\/li>\n<li>Add free reports, signed requests and real brand monitoring.<\/li>\n<li>Preserve publication status and schedule when synchronizing from WordPress.<\/li>\n<li>Existing installations retain publishing and require re-pairing to access monitoring.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Align the translation domain with the WordPress.org slug and use WordPress language packs.<\/li>\n<li>Distribute directory graphics separately from the installable plugin.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: token pairing, scoped publishing, explicit existing-post approval and revocation.<\/li>\n<\/ul>","raw_excerpt":"Connect WordPress to Semly for AI visibility and GEO. Publish and update articles from your Semly account.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/374197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=374197"}],"author":[{"embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/semly"}],"wp:attachment":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=374197"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=374197"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=374197"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=374197"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=374197"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=374197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}