{"id":337142,"date":"2026-07-09T11:38:16","date_gmt":"2026-07-09T11:38:16","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/audiscale-connector\/"},"modified":"2026-08-03T20:59:53","modified_gmt":"2026-08-03T20:59:53","slug":"audiscale-connector","status":"publish","type":"plugin","link":"https:\/\/bg.wordpress.org\/plugins\/audiscale-connector\/","author":23528889,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"5.2.0","stable_tag":"5.2.0","tested":"7.0.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"AudiScale Connector","header_author":"AudiScale","header_description":"Server-side companion for AudiScale in WordPress: SEO output in the <head> (meta description, canonical, robots, Open Graph, JSON-LD), redirects, and an enumerated catalog of operations driven by AudiScale over an HMAC-signed channel. No arbitrary code execution.","assets_banners_color":"416e71","last_updated":"2026-08-03 20:59:53","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/audiscale.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":141,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"5.1.1":{"tag":"5.1.1","author":"platinumwp","date":"2026-07-09 11:38:04"},"5.2.0":{"tag":"5.2.0","author":"platinumwp","date":"2026-08-03 20:59:53"}},"upgrade_notice":{"5.1.1":"<p>First public WordPress.org release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3633458,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3633458,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3601417,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3601417,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["5.1.1","5.2.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[5777,6487,726,1117,186],"plugin_category":[55],"plugin_contributors":[270706],"plugin_business_model":[],"class_list":["post-337142","plugin","type-plugin","status-publish","hentry","plugin_tags-meta-description","plugin_tags-open-graph","plugin_tags-redirects","plugin_tags-schema","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-platinumwp","plugin_committers-platinumwp"],"banners":{"banner":"https:\/\/ps.w.org\/audiscale-connector\/assets\/banner-772x250.png?rev=3601417","banner_2x":"https:\/\/ps.w.org\/audiscale-connector\/assets\/banner-1544x500.png?rev=3601417","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/audiscale-connector\/assets\/icon-128x128.png?rev=3633458","icon_2x":"https:\/\/ps.w.org\/audiscale-connector\/assets\/icon-256x256.png?rev=3633458","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>AudiScale Connector is the companion component for the hosted AudiScale service (https:\/\/audiscale.com). It unlocks the SEO actions that WordPress core and the standard REST API do not allow \u2014 most notably printing a <code>&lt;meta name=\"description\"&gt;<\/code> tag in the <code>&lt;head&gt;<\/code> without forcing you to install another SEO plugin.<\/p>\n\n<h4>Service disclosure (SaaS)<\/h4>\n\n<p>This plugin communicates with the third-party AudiScale service. <strong>No data is\nsent until you have explicitly paired<\/strong> your site from your AudiScale dashboard.\nOnce paired, AudiScale can remotely apply a <strong>fixed catalog of operations<\/strong>\n(listed below), each of which is:<\/p>\n\n<ul>\n<li>signed with HMAC-SHA256 using a per-site secret (rotatable and revocable);<\/li>\n<li>subject to a WordPress capability check (<code>manage_options<\/code>);<\/li>\n<li>logged (who, what, when, before\/after value);<\/li>\n<li>reversible where possible (draft\/revision, dry-run).<\/li>\n<\/ul>\n\n<p>The plugin <strong>never executes arbitrary code<\/strong>: there is no code-evaluation\nendpoint and no remote code download. \"Almost everything\" means an enumerated,\nhand-coded, audited catalog.<\/p>\n\n<ul>\n<li>Terms of service: https:\/\/audiscale.com\/en\/terms<\/li>\n<li>Privacy policy: https:\/\/audiscale.com\/en\/privacy<\/li>\n<\/ul>\n\n<h4>Operation catalog<\/h4>\n\n<ul>\n<li>SEO \/ <code>&lt;head&gt;<\/code>: meta description, SEO title, canonical, robots, Open Graph, Twitter cards<\/li>\n<li>Redirects: create \/ update \/ delete (301, 302, 410)<\/li>\n<li>Structured data: per-content JSON-LD<\/li>\n<li>Content &amp; media: field updates (via revision), draft creation, alternative text<\/li>\n<li>Site (read-only): robots.txt, public settings, content inventory<\/li>\n<li>Connector: status, pairing, audit log<\/li>\n<\/ul>\n\n<p>The plugin detects Yoast, Rank Math and SEOPress and <strong>stands down<\/strong>\nautomatically if one of them already manages the <code>&lt;head&gt;<\/code>, to avoid duplicate\ntags.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin (from wordpress.org or by uploading the ZIP).<\/li>\n<li>From your AudiScale dashboard, start pairing: AudiScale calls <code>POST \/wp-json\/audiscale\/v1\/pair<\/code> with a secret generated on the AudiScale side.<\/li>\n<li>That's it \u2014 subsequent operations are signed with that secret.<\/li>\n<\/ol>\n\n<p>To revoke access at any time: \"Settings \u2192 AudiScale \u2192 Disconnect\", or disconnect\nthe site from AudiScale.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20send%20data%20without%20my%20consent%3F\"><h3>Does the plugin send data without my consent?<\/h3><\/dt>\n<dd><p>No. No communication happens until the site is paired, and pairing requires an\nadministrator (<code>manage_options<\/code>).<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20already%20have%20an%20seo%20plugin%3F\"><h3>What happens if I already have an SEO plugin?<\/h3><\/dt>\n<dd><p>AudiScale Connector detects Yoast \/ Rank Math \/ SEOPress and prints nothing in\nthe <code>&lt;head&gt;<\/code> to avoid duplicates.<\/p><\/dd>\n<dt id=\"how%20do%20i%20revoke%20access%3F\"><h3>How do I revoke access?<\/h3><\/dt>\n<dd><p>Unpairing erases the pairing secret: the command channel becomes inert\nimmediately.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>5.2.0<\/h4>\n\n<ul>\n<li>SEO title and meta description now write into the meta key of the SEO plugin\nthat actually renders the page (Yoast, Rank Math, SEOPress) instead of the\nplugin's own key. While one of those is active this plugin does not print its\nown tags \u2014 so a value you approved was stored but never appeared on the site.\nApproved changes now take effect. Sites with no third-party SEO plugin are\nunaffected.<\/li>\n<li>The approval screen reads the current value from that same key, so the\n\"current\" column no longer shows empty against a field that is set.<\/li>\n<li>The audit log records the key really written.<\/li>\n<\/ul>\n\n<h4>5.1.1<\/h4>\n\n<ul>\n<li>First public WordPress.org release: English readme and service disclosure,\npackaging hygiene, and internationalization (text domain loading).<\/li>\n<li><code>plugins.update<\/code> now keeps the target plugin active after upgrading it (the\nWordPress upgrader deactivates during the file swap and does not restore it on a\nprogrammatic call).<\/li>\n<\/ul>\n\n<h4>5.0.0<\/h4>\n\n<ul>\n<li>Actionable <code>security.*<\/code> operation family: hardenings applied at the PHP\nruntime, without touching wp-config and always reversible in a single call\n(file editor, REST user enumeration, XML-RPC + pingbacks, HTTP headers\nHSTS\/nosniff\/X-Frame-Options\/Referrer-Policy, minor core auto-updates,\nversion masking, <code>?author=N<\/code> scan blocking).<\/li>\n<li>Each op accepts <code>dryRun<\/code> (simulation without writing) and logs the before\/after\nvalue for an undo via the inverse op. <code>security.state.get<\/code> exposes the current\nstate. Disconnecting (<code>unpair<\/code>) resets all hardenings.<\/li>\n<li><code>hsts<\/code> is set only if HTTPS is actually enforced (anti-lockout guard).<\/li>\n<\/ul>\n\n<h4>4.0.0<\/h4>\n\n<ul>\n<li>New <code>security.audit<\/code> operation (read-only, <code>manage_options<\/code> capability):\nfree hardening snapshot (versions, configuration flags, admin accounts, core\nintegrity via wordpress.org checksums). No secret is returned.<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>New plugin-management operations: <code>plugins.list<\/code> (read, <code>activate_plugins<\/code>\ncapability) and <code>plugins.update<\/code> (live, irreversible update, <code>update_plugins<\/code>\ncapability).<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li><code>content.update_fields<\/code> op: URL targeting + <code>fields<\/code> object\n(title\/excerpt\/content), respecting <code>publishMode<\/code>.<\/li>\n<li>The body is written faithfully (no destructive filtering on our side,\nGutenberg block delimiters preserved); <code>filtered<\/code> flag if the user lacks the\n  unfiltered_html capability.<\/li>\n<li><code>draft<\/code> mode for content: the proposal is queued and approved from the\n\"AudiScale pending\" screen.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li><code>draft<\/code> mode: proposed values are stored \"pending\" without changing the live\nrender.<\/li>\n<li>Approval surface: \"Pending AudiScale change\" metabox on the edit screen + a\ncentral screen (Settings \u2192 AudiScale pending) to approve\/reject (nonce +\ncapability).<\/li>\n<li><code>promote<\/code> operation to approve a field from AudiScale (consent equivalent to\n  direct).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial version: SEO <code>&lt;head&gt;<\/code> output, redirects, structured data, HMAC-signed\noperation catalog, audit log.<\/li>\n<\/ul>","raw_excerpt":"Server-side companion for AudiScale: SEO  tags, redirects, and an enumerated catalog of operations over an HMAC-signed channel.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/337142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=337142"}],"author":[{"embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/platinumwp"}],"wp:attachment":[{"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=337142"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=337142"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=337142"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=337142"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=337142"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=337142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}