{"id":302375,"date":"2026-04-30T02:27:38","date_gmt":"2026-04-30T02:27:38","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/spectra-content\/"},"modified":"2026-10-08T04:05:20","modified_gmt":"2026-10-08T04:05:20","slug":"supan-content","status":"publish","type":"plugin","link":"https:\/\/ku.wordpress.org\/plugins\/supan-content\/","author":14742673,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.3","stable_tag":"1.1.3","tested":"7.1.3","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Supan Content","header_author":"Ashish Ganda (Ganda Tech Services Pty Ltd)","header_description":"Internal link graph analysis, topic clusters, link suggestions, and duplicate content detection.","assets_banners_color":"644280","last_updated":"2026-10-08 04:05:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/supan.cchk.info\/supan-content","header_author_uri":"https:\/\/g-t-s.com.au","rating":0,"author_block_rating":0,"active_installs":0,"downloads":450,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"ashishgurprit","date":"2026-04-30 02:36:39","revision":3519097},"1.1.1":{"tag":"1.1.1","author":"ashishgurprit","date":"2026-05-24 00:32:47","revision":3545694},"1.1.2":{"tag":"1.1.2","author":"ashishgurprit","date":"2026-09-19 14:05:12","revision":3703350},"1.1.3":{"tag":"1.1.3","author":"ashishgurprit","date":"2026-10-08 04:05:20","revision":3733640}},"upgrade_notice":{"1.1.3":"<p>Recommended ahead of a server-side change: the plugin can now explain a declined request and what to do, rather than showing a generic connection error.<\/p>","1.1.2":"<p>Fixes the editor sidebar showing a bare &quot;Error 404&quot; on drafts and custom post types; it now explains that a published post or page is required. Adds WordPress 7.1 compatibility: the sidebar loads correctly in 7.1&#039;s always-iframed post editor.<\/p>","1.1.1":"<p>Listing update only \u2014 improved title and description for discoverability. No functional changes.<\/p>","1.1.0":"<p>Adds a Gutenberg sidebar with AI-powered link suggestions directly in the block editor. Recommended for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3519094,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3519094,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3519094,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3519094,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0","1.1.1","1.1.2","1.1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3519094,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3519094,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3519094,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3519094,"resolution":"4","location":"assets","locale":"","width":1280,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3519094,"resolution":"5","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"Internal Link Graph \u2014 total pages, orphan pages, and linked pages shown as stat cards above a sortable table of every post with outgoing\/incoming link counts and orphan status.","2":"AI Link Suggestions \u2014 pick any post and get relevance-scored linking opportunities with shared tags and topic similarity.","3":"Topic Clusters \u2014 automatic detection of content groups by topic, with every post slug grouped into the cluster it belongs to.","4":"Duplicate Content \u2014 near-duplicate post pairs surfaced with a configurable similarity threshold and a side-by-side slug comparison.","5":"Settings panel \u2014 set the API URL and key. Updates take effect immediately."}},"plugin_section":[],"plugin_tags":[253498,17013,6681,252136,186],"plugin_category":[55],"plugin_contributors":[260232],"plugin_business_model":[],"class_list":["post-302375","plugin","type-plugin","status-publish","hentry","plugin_tags-content-clusters","plugin_tags-duplicate-content","plugin_tags-internal-links","plugin_tags-orphan-pages","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-ashishgurprit","plugin_committers-ashishgurprit"],"banners":{"banner":"https:\/\/ps.w.org\/supan-content\/assets\/banner-772x250.png?rev=3519094","banner_2x":"https:\/\/ps.w.org\/supan-content\/assets\/banner-1544x500.png?rev=3519094","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/supan-content\/assets\/icon-128x128.png?rev=3519094","icon_2x":"https:\/\/ps.w.org\/supan-content\/assets\/icon-256x256.png?rev=3519094","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/supan-content\/assets\/screenshot-1.png?rev=3519094","caption":"Internal Link Graph \u2014 total pages, orphan pages, and linked pages shown as stat cards above a sortable table of every post with outgoing\/incoming link counts and orphan status."},{"src":"https:\/\/ps.w.org\/supan-content\/assets\/screenshot-2.png?rev=3519094","caption":"AI Link Suggestions \u2014 pick any post and get relevance-scored linking opportunities with shared tags and topic similarity."},{"src":"https:\/\/ps.w.org\/supan-content\/assets\/screenshot-3.png?rev=3519094","caption":"Topic Clusters \u2014 automatic detection of content groups by topic, with every post slug grouped into the cluster it belongs to."},{"src":"https:\/\/ps.w.org\/supan-content\/assets\/screenshot-4.png?rev=3519094","caption":"Duplicate Content \u2014 near-duplicate post pairs surfaced with a configurable similarity threshold and a side-by-side slug comparison."},{"src":"https:\/\/ps.w.org\/supan-content\/assets\/screenshot-5.png?rev=3519094","caption":"Settings panel \u2014 set the API URL and key. Updates take effect immediately."}],"raw_content":"<!--section=description-->\n<p>Orphan pages don't rank. Poorly-linked content doesn't rank. But most WordPress sites have hundreds of posts that are one internal link away from a traffic boost \u2014 and no way to find them.<\/p>\n\n<p><strong>Supan Content<\/strong> analyses your entire WordPress site to build a visual internal link graph, surface orphan pages instantly, suggest high-value linking opportunities using AI-powered semantic matching, and detect topic clusters \u2014 all without leaving wp-admin.<\/p>\n\n<p>Stop publishing new content. Start unlocking the traffic in what you already have.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Internal link graph<\/strong> \u2014 see exactly which pages link to which, with orphan pages flagged at a glance<\/li>\n<li><strong>Orphan page detection<\/strong> \u2014 instantly find pages with zero inbound internal links dragging down your authority<\/li>\n<li><strong>AI-powered link suggestions<\/strong> \u2014 semantic engine matches your posts by topic and recommends the highest-impact linking opportunities<\/li>\n<li><strong>Topic cluster mapping<\/strong> \u2014 group your content by semantic category to build true topical authority<\/li>\n<li><strong>Near-duplicate content finder<\/strong> \u2014 configurable similarity threshold to catch keyword cannibalisation before it costs you rankings<\/li>\n<li><strong>One-click graph build<\/strong> \u2014 analyses up to 200 published posts and pages automatically<\/li>\n<li><strong>Copy-to-paste anchor HTML<\/strong> \u2014 insert suggested links without writing a single line of code<\/li>\n<\/ul>\n\n<p><em>About the name: \"Supan\" (\u30b9\u30d1\u30f3) is a Japanese loanword meaning \"span\" \u2014 the arc or spectrum of connections. It reflects what this plugin does: mapping the full span of internal links across your site.<\/em><\/p>\n\n<h4>External Services<\/h4>\n\n<p>This plugin sends post content (title, body text, URLs) to the <strong>GTS SEO API<\/strong> (hosted on Google Cloud Run) to perform link analysis, clustering, and duplicate detection.<\/p>\n\n<ul>\n<li><strong>Service URL:<\/strong> https:\/\/gts-seo-engine-e467edaxoq-ts.a.run.app<\/li>\n<li><strong>Terms of Service:<\/strong> https:\/\/supan.cchk.info\/terms<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/supan.cchk.info\/privacy<\/li>\n<\/ul>\n\n<p>Data sent: published post titles, content body, and canonical URLs. No user data or PII is transmitted.<\/p>\n\n<h4>Source Code<\/h4>\n\n<p>The full React\/TypeScript source for the compiled JavaScript assets is included directly in this plugin under the <code>src\/<\/code> directory. Build tooling configuration is in <code>vite.config.ts<\/code> and <code>vite.gutenberg.config.ts<\/code>.<\/p>\n\n<p>To regenerate the compiled assets from source:<\/p>\n\n<ol>\n<li>Install Node.js and pnpm<\/li>\n<li>Run <code>pnpm install<\/code> in the plugin root<\/li>\n<li>Run <code>pnpm build<\/code> to produce <code>build\/supaco-content.js<\/code> and <code>build\/supaco-content-gutenberg.js<\/code><\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>supan-content<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate through <strong>Plugins \u2192 Installed Plugins<\/strong><\/li>\n<li>Navigate to <strong>Supan Content<\/strong> in the left menu<\/li>\n<li>Enter your <strong>API Key<\/strong> from <a href=\"https:\/\/supan.cchk.info\/supan-content\">supan.cchk.info<\/a><\/li>\n<li>Click <strong>Build Graph<\/strong> to scan your site and build your first link graph<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20many%20posts%20can%20it%20analyse%20at%20once%3F\"><h3>How many posts can it analyse at once?<\/h3><\/dt>\n<dd><p>Up to 200 published posts and pages per analysis run.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20to%20the%20api%3F\"><h3>What data is sent to the API?<\/h3><\/dt>\n<dd><p>Published post titles, content body text, and canonical URLs. No user data and no personally identifiable information.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20custom%20post%20types%3F\"><h3>Does it work with custom post types?<\/h3><\/dt>\n<dd><p>Currently standard <code>post<\/code> and <code>page<\/code> types are analysed. Custom post type support is on the roadmap.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20site%3F\"><h3>Will it slow down my site?<\/h3><\/dt>\n<dd><p>No. Analysis runs only when you trigger it in wp-admin. There are no frontend scripts and zero visitor-facing performance impact.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Clearer messages when the Supan API declines a request. The plugin now tells you\nwhich of two things happened \u2014 your key is missing or not yours, or you have used\nthis month's allowance \u2014 and what to do about it, instead of reporting a generic\nconnection failure.<\/li>\n<li>The API Key field now explains that the key is personal to your site rather than\nshared, with a link to get one free.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>The editor sidebar now explains why suggestions are unavailable \u2014 \"needs a published post or page\" \u2014 instead of showing a bare \"Error 404\" on drafts and custom post types.<\/li>\n<li>Tested against WordPress 7.1.<\/li>\n<li>The block editor sidebar now resolves its panel components from <code>wp.editor<\/code> instead of the deprecated <code>wp.editPost<\/code>. WordPress 6.6 moved them, and reading the old location logged a deprecation notice in the browser console on every post edit screen. WordPress 6.0\u20136.5 still works via a runtime fallback.<\/li>\n<li>Editor scripts now declare <code>wp-editor<\/code> as a dependency so the panel loads correctly under 7.1's always-iframed post editor.<\/li>\n<li>Packaging: the plugin now ships the full GPL-2.0 licence text rather than a summary of it.<\/li>\n<li>Plugin, terms and privacy links now point at the current supan.cchk.info product domain, and the author link at g-t-s.com.au. The previous spectra.cchk.info URLs were left over from the Spectra to Supan rename. No functional changes.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Refreshed the plugin title and listing copy for clarity and discoverability. Documentation only \u2014 no functional changes.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Gutenberg block editor sidebar with AI-powered semantic link suggestions<\/li>\n<li>Copy-to-paste anchor HTML for one-click link insertion<\/li>\n<li>Renamed to Supan Content; updated plugin and author URLs<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<li>Internal link graph with orphan detection<\/li>\n<li>AI-powered link suggestions<\/li>\n<li>Topic cluster detection<\/li>\n<li>Near-duplicate content finder<\/li>\n<\/ul>","raw_excerpt":"Find orphan pages, fix internal linking, and unlock rankings hiding in content you already have \u2014 with an AI-powered internal link graph.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/302375","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=302375"}],"author":[{"embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ashishgurprit"}],"wp:attachment":[{"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=302375"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=302375"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=302375"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=302375"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=302375"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ku.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=302375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}