{"id":307671,"date":"2026-07-01T14:11:55","date_gmt":"2026-07-01T14:11:55","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/arcio\/"},"modified":"2026-07-01T15:00:16","modified_gmt":"2026-07-01T15:00:16","slug":"arcio","status":"publish","type":"plugin","link":"https:\/\/sr.wordpress.org\/plugins\/arcio\/","author":23473549,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.2.1","stable_tag":"3.2.1","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Arcio - AI Internal Linking","header_author":"Arcio","header_description":"An advanced internal linking plugin leveraging LLM APIs to analyze content and suggest contextual links.","assets_banners_color":"171936","last_updated":"2026-07-01 15:00:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/getarcio.com\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":67,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"3.1.8":{"tag":"3.1.8","author":"gent3861","date":"2026-07-01 01:03:40"},"3.1.9":{"tag":"3.1.9","author":"gent3861","date":"2026-07-01 14:11:36"},"3.2.1":{"tag":"3.2.1","author":"gent3861","date":"2026-07-01 15:00:16"}},"upgrade_notice":{"3.1.2":"<p>Major change: Arcio now uses a managed AI service. The OpenRouter API key field has been removed \u2014 no third-party accounts or API keys are needed. Existing users will be migrated automatically and the new free plan grants 10 analyses per month.<\/p>","1.6.0":"<p>Critical fix: suggestion action buttons (Approve, Reject, Apply, etc.) were completely non-functional in previous versions. Update recommended.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3592798,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3592798,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3592798,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3592798,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["3.1.8","3.1.9","3.2.1"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Arcio dashboard with post index, analysis controls, and link health overview.","2":"Suggestions table showing AI-recommended internal links with anchor text, target post, and confidence score.","3":"Settings page with analysis preferences and link insertion guardrails."}},"plugin_section":[],"plugin_tags":[2353,19933,6681,11851,186],"plugin_category":[55],"plugin_contributors":[181379,269660],"plugin_business_model":[],"class_list":["post-307671","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-internal-linking","plugin_tags-internal-links","plugin_tags-link-building","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-arcio","plugin_contributors-gent3861","plugin_committers-gent3861"],"banners":{"banner":"https:\/\/ps.w.org\/arcio\/assets\/banner-772x250.png?rev=3592798","banner_2x":"https:\/\/ps.w.org\/arcio\/assets\/banner-1544x500.png?rev=3592798","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/arcio\/assets\/icon-128x128.png?rev=3592798","icon_2x":"https:\/\/ps.w.org\/arcio\/assets\/icon-256x256.png?rev=3592798","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Arcio analyzes your WordPress content with AI and suggests internal links that make genuine editorial sense. Unlike keyword-matching plugins, Arcio understands what your content is actually about and surfaces the contextual links a simple text-match could never find.<\/p>\n\n<p><strong>No API keys. No model setup. No third-party accounts.<\/strong> AI is included with every plan, including the free plan. Just install, activate, and start finding link opportunities.<\/p>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<ol>\n<li><strong>Indexing.<\/strong> Arcio reads each post on your site and builds a structured summary of its topics, themes, and intent. Summaries are stored locally in your WordPress database.<\/li>\n<li><strong>Analysis.<\/strong> When you run analysis on a post, Arcio compares it against every other post you've published and identifies the most relevant linking opportunities \u2014 with suggested anchor text, target URL, and a confidence score for each.<\/li>\n<li><strong>Review.<\/strong> You see every suggestion in your WordPress admin. Approve, reject, or apply with one click. Nothing changes in your published content until you decide to act.<\/li>\n<\/ol>\n\n<p><strong>Key features:<\/strong><\/p>\n\n<ul>\n<li><strong>Managed AI included<\/strong> \u2014 no API keys, no credits to top up, no third-party accounts. AI is bundled with every plan.<\/li>\n<li><strong>Semantic understanding<\/strong> \u2014 Arcio analyzes meaning, not just keywords, so suggestions are contextually relevant.<\/li>\n<li><strong>Two-pass analysis<\/strong> \u2014 efficient indexing followed by a deeper analysis pass for high-quality, low-cost suggestions.<\/li>\n<li><strong>Configurable confidence threshold<\/strong> \u2014 tune suggestion quality to your standards.<\/li>\n<li><strong>Insertion guardrails<\/strong> \u2014 set a maximum number of links per post, max links to the same target post, and minimum word distance between links.<\/li>\n<li><strong>Orphan post detection<\/strong> \u2014 find posts on your site with zero incoming internal links.<\/li>\n<li><strong>Link health monitoring<\/strong> \u2014 see broken internal links and post index status from a single dashboard.<\/li>\n<li><strong>One-click suggestion management<\/strong> \u2014 approve, reject, apply, revert, or delete each suggestion individually, or in bulk.<\/li>\n<li><strong>WordPress revisions integration<\/strong> \u2014 every link insertion creates a revision so you can roll back changes safely.<\/li>\n<li><strong>Custom post type support<\/strong> \u2014 works with posts, pages, and any custom post type.<\/li>\n<li><strong>Zero frontend impact<\/strong> \u2014 no scripts or styles loaded on your site's frontend.<\/li>\n<\/ul>\n\n<p><strong>Plans and quotas:<\/strong><\/p>\n\n<p>Arcio meters by analyses per month. One analysis = running Arcio on one post or page.<\/p>\n\n<ul>\n<li>Free \u2014 10 analyses per month<\/li>\n<li>Starter \u2014 100 analyses per month<\/li>\n<li>Growth \u2014 500 analyses per month<\/li>\n<li>Pro \u2014 1,000 analyses per month<\/li>\n<li>Scale \u2014 5,000 analyses per month<\/li>\n<\/ul>\n\n<p>There are no site limits on any plan. Install Arcio on as many WordPress sites as you like \u2014 analyses are shared across all of them. Upgrade or downgrade at any time.<\/p>\n\n<p><strong>Privacy:<\/strong> Post titles and body text are sent to Arcio's managed AI service when you trigger an analysis. In addition, when a post or page is published or updated, its title and a short excerpt (roughly the first 300 words) are sent to generate a semantic embedding used for finding related content. No personal user data is transmitted. Content is processed in real time and is not permanently stored, logged, or sold. See the full privacy policy at https:\/\/getarcio.com\/privacy-policy\/.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Arcio relies on external services to analyze content and suggest internal links.<\/p>\n\n<p><strong>1. Arcio Managed AI Relay<\/strong>\nThis plugin connects to the Arcio Managed AI Relay (hosted at <code>https:\/\/getarcio.com\/?rest_route=\/arcio-relay\/v1\/<\/code>) to proxy requests to the AI model securely without exposing an API key in the plugin code.\n- <strong>What is sent:<\/strong> When you click \"Analyze Content\" or run bulk analysis, the post titles and body content are sent to this relay service. When a post or page is published or updated, its title and a short excerpt (roughly the first 300 words) are sent to generate a semantic embedding.\n- <strong>When is it sent:<\/strong> Data is sent when you explicitly trigger an analysis, when a background analysis job you started runs, and when a post or page is published or updated (embedding refresh).\n- <strong>Privacy &amp; Terms:<\/strong>\n  - <a href=\"https:\/\/getarcio.com\/terms\/\">Terms of Service<\/a>\n  - <a href=\"https:\/\/getarcio.com\/privacy-policy\/\">Privacy Policy<\/a><\/p>\n\n<p><strong>2. Google Gemini API<\/strong>\nThe Arcio Managed AI Relay forwards requests to the Google Gemini API (<code>generativelanguage.googleapis.com<\/code>) to generate embeddings and analyze text. The plugin itself never contacts Google directly \u2014 all AI traffic goes through the Arcio relay.\n- <strong>What is sent:<\/strong> Post content and titles are forwarded by the relay to the Gemini API to understand semantic context and generate linking suggestions.\n- <strong>When is it sent:<\/strong> Data is sent only when you trigger a post analysis, or when a post embedding is generated after a post is saved or analyzed.\n- <strong>Privacy &amp; Terms:<\/strong>\n  - <a href=\"https:\/\/policies.google.com\/privacy\">Google Privacy Policy<\/a>\n  - <a href=\"https:\/\/policies.google.com\/terms\">Google Terms of Service<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>From your WordPress dashboard, go to <strong>Plugins &gt; Add New<\/strong> and search for \"Arcio\".<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Go to the <strong>Arcio<\/strong> menu in your WordPress admin sidebar.<\/li>\n<li>(Optional) Sign up for a free Arcio account when prompted to enable cloud analysis. No credit card required.<\/li>\n<li>Click <strong>Index Posts<\/strong> to build summaries of your existing content.<\/li>\n<li>Pick a post and run analysis. Review the suggestions, approve the ones you want, and apply them.<\/li>\n<\/ol>\n\n<p>That's it. No API keys to manage, no models to choose, no credits to top up.<\/p>\n\n<p><strong>Manual install:<\/strong><\/p>\n\n<ol>\n<li>Download the plugin ZIP from https:\/\/wordpress.org\/plugins\/arcio\/.<\/li>\n<li>In WordPress, go to <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong> and select the ZIP.<\/li>\n<li>Activate and follow steps 3\u20136 above.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20api%20key%20or%20a%20separate%20ai%20account%3F\"><h3>Do I need an API key or a separate AI account?<\/h3><\/dt>\n<dd><p>No. Arcio's AI runs on our managed infrastructure and is included with every plan, including the free plan. There's nothing to set up beyond activating the plugin.<\/p><\/dd>\n<dt id=\"how%20does%20the%20free%20plan%20work%3F\"><h3>How does the free plan work?<\/h3><\/dt>\n<dd><p>The free plan gives you 10 analyses per calendar month with full access to all suggestion features. It's genuinely useful for small sites and a great way to evaluate Arcio before committing to a paid plan.<\/p><\/dd>\n<dt id=\"what%20counts%20as%20one%20analysis%3F\"><h3>What counts as one analysis?<\/h3><\/dt>\n<dd><p>One analysis = running Arcio on one post or page. The analysis examines that post against your entire content library and produces suggested links. Indexing posts (the initial summary step) does not count toward your analysis quota.<\/p><\/dd>\n<dt id=\"are%20there%20site%20limits%3F\"><h3>Are there site limits?<\/h3><\/dt>\n<dd><p>No. You can install Arcio on as many WordPress sites as you want on any plan. Your monthly analysis quota is shared across all of them.<\/p><\/dd>\n<dt id=\"will%20arcio%20change%20my%20posts%20automatically%3F\"><h3>Will Arcio change my posts automatically?<\/h3><\/dt>\n<dd><p>No \u2014 and that's intentional. Arcio surfaces suggestions, but nothing changes in your content until you click <strong>Apply<\/strong>. You stay in full editorial control. If you do apply a link and want to undo it, every insertion uses WordPress revisions so you can roll back from the post editor.<\/p><\/dd>\n<dt id=\"is%20my%20content%20secure%3F\"><h3>Is my content secure?<\/h3><\/dt>\n<dd><p>Yes. Post content is sent to Arcio's managed AI service when you trigger an analysis, and a short excerpt (title plus roughly the first 300 words) is sent when a post is published or updated so its semantic embedding stays current. Content is processed in real time and is never permanently stored, logged, or sold. Authentication uses an HMAC signature derived from your Freemius install credentials \u2014 no plain credentials are ever transmitted.<\/p><\/dd>\n<dt id=\"how%20quickly%20will%20i%20see%20seo%20results%3F\"><h3>How quickly will I see SEO results?<\/h3><\/dt>\n<dd><p>Internal linking improvements typically show up within 4\u201312 weeks as Googlebot recrawls and reweights your pages. Sites with larger archives generally see faster, more significant gains. Internal linking is a structural improvement that compounds over time, not a one-time quick fix.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20slow%20down%20my%20site%3F\"><h3>Does this plugin slow down my site?<\/h3><\/dt>\n<dd><p>No. Arcio loads no scripts or styles on your site's frontend. All processing happens in the WordPress admin area, only when you trigger it.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20deactivate%20the%20plugin%3F\"><h3>What happens if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Links you applied to your post content remain in place \u2014 they're standard HTML links in your published content. Suggestion data and post indexes are retained in the database. If you uninstall the plugin entirely, its database tables are removed.<\/p><\/dd>\n<dt id=\"can%20i%20cancel%20my%20paid%20plan%3F\"><h3>Can I cancel my paid plan?<\/h3><\/dt>\n<dd><p>Yes, anytime, from your Arcio account. Your plan stays active through the end of the current billing period.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.2.1<\/h4>\n\n<ul>\n<li>Fixed: Plugin incorrectly showed as the free version with an upgrade prompt after activating a Pro license, since it was configured to expect a separate downloadable Pro package that doesn't exist. Pro now unlocks in place, no separate download needed.<\/li>\n<li>Updated: Bundled Freemius SDK to 2.13.2 (from 2.13.0) \u2014 includes a license-sync cron race-condition fix, multisite opt-in fix, PHP 8.5 compatibility, and hardened direct file-access checks.<\/li>\n<\/ul>\n\n<h4>3.1.9<\/h4>\n\n<ul>\n<li>Fixed: Premium license status was never recognized after upgrading \u2014 the plugin checked a code-package flag instead of the actual license, so paying customers kept seeing free-plan quota limits and upgrade prompts. License status now unlocks correctly as soon as it syncs, no reinstall needed.<\/li>\n<\/ul>\n\n<h4>3.1.8<\/h4>\n\n<ul>\n<li>Compatibility: Tested up to WordPress 7.0.<\/li>\n<li>Security: Suggestions list filter, search, and sort parameters now require a verified nonce before being read; filter, sort, and pagination links carry the nonce automatically.<\/li>\n<li>Security: Added an explicit capability check to the Suggestions admin page.<\/li>\n<li>Security: Status filter links are now escaped at output with wp_kses().<\/li>\n<li>Removed: Deprecated OpenRouter client class \u2014 the plugin only communicates with the Arcio relay.<\/li>\n<li>Removed: Unused Gemini API endpoint constant.<\/li>\n<li>Removed: set_time_limit() calls from AJAX handlers.<\/li>\n<li>Improved: Admin page scripts moved to dedicated .js files loaded via wp_enqueue_script() \u2014 no output buffering.<\/li>\n<li>Removed: Temporary fatal-error debug instrumentation from AJAX handlers \u2014 errors now route through the standard plugin logger.<\/li>\n<li>Updated: Bulk-operation confirmation dialogs and admin copy now reflect managed AI plan quotas instead of legacy token\/cost estimates.<\/li>\n<li>Clarified: External services disclosure now accurately states that Google Gemini is reached via the Arcio relay, never directly from the plugin.<\/li>\n<\/ul>\n\n<h4>3.1.7<\/h4>\n\n<ul>\n<li>Fixed: Converted line endings from CRLF to LF to resolve strict plugin header parsing issues.<\/li>\n<\/ul>\n\n<h4>3.1.6<\/h4>\n\n<ul>\n<li>Fixed: Formatted plugin header to comply with strict WordPress parsing rules.<\/li>\n<\/ul>\n\n<h4>3.1.5<\/h4>\n\n<ul>\n<li>Fixed: Updated Terms of Service and Privacy Policy links to comply with WordPress directory guidelines.<\/li>\n<\/ul>\n\n<h4>3.1.4<\/h4>\n\n<ul>\n<li>Security: Implemented strict nonce verification across all AJAX actions to prevent CSRF attacks.<\/li>\n<li>Security: Improved sanitization and validation for API relay payload signatures.<\/li>\n<li>Improved: Refactored admin UI to use strictly enqueued external stylesheets and scripts, eliminating all inline styles.<\/li>\n<li>Improved: Ensured zero-error compatibility under strict <code>WP_DEBUG<\/code> environments for official repository standards.<\/li>\n<\/ul>\n\n<h4>3.1.2<\/h4>\n\n<ul>\n<li>Migrated all AI processing to Arcio's managed relay \u2014 users no longer need an OpenRouter API key or any third-party AI account.<\/li>\n<li>Added: HMAC-signed authentication for relay requests using Freemius install credentials.<\/li>\n<li>Added: Server-side quota enforcement to prevent client-side bypass.<\/li>\n<li>Improved: Connection status caching reduces redundant relay pings.<\/li>\n<li>Removed: OpenRouter API key field, model selection UI, and related settings.<\/li>\n<li>Updated: Plan structure now uses graduated monthly analysis quotas (Free 10 \/ Starter 100 \/ Growth 500 \/ Pro 1,000 \/ Scale 5,000).<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li>Improved: Replaced wp_cache_flush() with targeted cache clear to avoid nuking Redis\/Memcached on license changes.<\/li>\n<li>Improved: Freemius reset endpoint now restricted to dev mode only (WP_FS__DEV_MODE).<\/li>\n<li>Added: Freemius lifecycle hooks for license activation, deactivation, premium activation, and free reactivation.<\/li>\n<li>Added: Tabs navigation for Freemius Account\/Pricing pages to reduce admin menu clutter.<\/li>\n<li>Added: Checkout trust signals (refund badge, customer reviews) on Freemius checkout overlay.<\/li>\n<li>Added: Custom opt-in connect screen message explaining data collection.<\/li>\n<li>Added: Arcio-specific deactivation survey reasons for better feedback.<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>Fixed: Freemius license checks referenced wrong function name (arc_fs vs arcio_fs), causing Pro users to be treated as free.<\/li>\n<li>Fixed: CSRF vulnerability on Freemius reset endpoint \u2014 now requires nonce verification.<\/li>\n<li>Fixed: Race condition in monthly quota counter \u2014 uses atomic DB increment.<\/li>\n<li>Added: Freemius license\/plan change hooks to clear cached premium status on upgrade\/downgrade.<\/li>\n<li>Added: Stale monthly usage counter cleanup on license change.<\/li>\n<li>Added: Fallback upgrade URL when Freemius SDK is unavailable.<\/li>\n<li>Improved: Premium status check is now cached per-request to reduce redundant SDK calls.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Current stable release.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Fixed: All suggestion action buttons (Approve, Reject, Apply, Revert, Delete) were non-functional due to a CSS class mismatch between PHP and JavaScript.<\/li>\n<li>Fixed: Buttons did not update their state after a successful action.<\/li>\n<li>Fixed: \"Apply Link\" returned an \"Invalid action type\" error.<\/li>\n<li>Fixed: \"Load Models\" only populated the main model dropdown, not the indexing model dropdown.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Fixed: Settings never saved due to mismatched form field names between JavaScript and PHP. All settings now save correctly.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Fixed: Indexing errors now display a helpful tooltip instead of failing silently.<\/li>\n<li>Fixed: Clear error message when no model or API key is configured before indexing.<\/li>\n<li>Added: Public API key accessor for pre-flight validation checks.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Removed legacy WP-Cron batch indexing system in favor of synchronous AJAX-based indexing.<\/li>\n<\/ul>","raw_excerpt":"AI-powered internal linking for WordPress. Find every missing internal link on your site and improve SEO in minutes \u2014 no API keys required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/307671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=307671"}],"author":[{"embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gent3861"}],"wp:attachment":[{"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=307671"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=307671"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=307671"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=307671"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=307671"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=307671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}