{"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-07-09T11:38:04","modified_gmt":"2026-07-09T11:38:04","slug":"audiscale-connector","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/audiscale-connector\/","author":23528889,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"5.1.1","stable_tag":"5.1.1","tested":"7.0.1","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-07-09 11:38:04","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":30,"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"}},"upgrade_notice":{"5.1.1":"<p>First public WordPress.org release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3601417,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3601417,"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"],"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=3601417","icon_2x":"https:\/\/ps.w.org\/audiscale-connector\/assets\/icon-256x256.png?rev=3601417","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.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:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/337142","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=337142"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/platinumwp"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=337142"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=337142"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=337142"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=337142"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=337142"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=337142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}