{"id":305117,"date":"2026-06-05T22:24:48","date_gmt":"2026-06-05T22:24:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-view-sync\/"},"modified":"2026-06-05T22:24:24","modified_gmt":"2026-06-05T22:24:24","slug":"ai-view-sync","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ai-view-sync\/","author":23485530,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.4","stable_tag":"1.1.4","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"AI View Sync","header_author":"GCCO LLC","header_description":"Publish LLMS.txt at \/llms.txt \u2014 connect to GcCo AI View for automatic sync or paste your content manually. No API keys or wp-config changes required.","assets_banners_color":"","last_updated":"2026-06-05 22:24:24","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/gcco.io\/ai-view","header_author_uri":"https:\/\/gcco.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":44,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.4":{"tag":"1.1.4","author":"gcco","date":"2026-06-05 22:24:24"}},"upgrade_notice":{"1.1.4":"<p>Security hardening: nonce verification added to admin notice display; POST inputs sanitized earlier; physical llms.txt copy now writes to uploads directory instead of site root. No configuration changes needed.<\/p>","1.1.3":"<p>Prefix rename for WordPress.org compliance. If you used wp-config.php constants (<code>AI_VIEW_APP_URL<\/code>, etc.) rename them to <code>AIVISY_APP_URL<\/code>, <code>AIVISY_CONNECT_BASE<\/code>, <code>AIVISY_SYNC_API_URL<\/code>, <code>AIVISY_PROPERTIES_API_URL<\/code>, <code>AIVISY_BIND_API_URL<\/code>.<\/p>","1.1.2":"<p>Maintenance release (WordPress.org compliance). No behavior change for sites already on 1.1.x.<\/p>","1.1.0":"<p>First public release on this slug; if you used a development copy under another folder name, deactivate the old plugin and activate this one.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings \u2014 connect, GA4 property, exclusions, and sync for <strong>llms.txt<\/strong>.","2":"Connected state \u2014 last sync and GA4 vs appended URL counts for your <strong>LLMS.txt<\/strong>.","3":"Manual paste and preview of the live <strong>llms.txt<\/strong> output."}},"plugin_section":[],"plugin_tags":[2353,193472,266013,244604,186],"plugin_category":[55],"plugin_contributors":[266014],"plugin_business_model":[],"class_list":["post-305117","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-ga4","plugin_tags-llms-file","plugin_tags-llms-txt","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-gcco","plugin_committers-gcco"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/ai-view-sync.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>AI View Sync<\/strong> is a WordPress plugin built around the <strong>llms.txt<\/strong> convention: a small text file at <strong><code>https:\/\/yoursite.com\/llms.txt<\/code><\/strong> that tells AI systems and crawlers how to interpret your site\u2014similar in spirit to <code>robots.txt<\/code>, but aimed at <strong>LLM<\/strong> and AI discovery rather than crawl rules alone.<\/p>\n\n<h3>Why llms.txt \/ LLMS.txt?<\/h3>\n\n<p>The <strong>llms.txt<\/strong> file (often written <strong>LLMS.txt<\/strong>) is becoming a common way to publish machine-readable hints for large language models: preferred pages, policies, and pointers to content you want highlighted. This plugin makes it straightforward to <strong>host llms.txt on WordPress<\/strong> at the standard location so tools that look for <strong><code>\/llms.txt<\/code><\/strong> find your file.<\/p>\n\n<h3>What this plugin does for your llms.txt<\/h3>\n\n<ul>\n<li><strong>Connect to GcCo AI View<\/strong> \u2014 Link your site and pick a GA4 property. Each sync pulls <strong>LLMS.txt<\/strong> content from your account so your <strong>llms.txt<\/strong> reflects traffic-ranked, GA4-informed URLs.<\/li>\n<li><strong>Merge with WordPress<\/strong> \u2014 Optionally append published URLs from your site that are not already in the <strong>llms.txt<\/strong> body: GA4-ranked lines stay first; extra pages follow. Use path patterns and post-type exclusions so your <strong>llms.txt<\/strong> stays clean.<\/li>\n<li><strong>Manual llms.txt<\/strong> \u2014 Prefer full control? Paste and save your own <strong>LLMS.txt<\/strong> body; the plugin still serves it at <strong><code>\/llms.txt<\/code><\/strong> when that mode is active.<\/li>\n<li><strong>WordPress-only URL list (no account)<\/strong> \u2014 If you do not connect to GcCo AI View, use <strong>Add published URLs from WordPress<\/strong> to append your site's published URLs to your saved manual file (or a short starter if the box was empty). No GA4 ranking\u2014just your WordPress content.<\/li>\n<li><strong>Optional physical file<\/strong> \u2014 If your host allows writes, the plugin can also create a real <strong><code>llms.txt<\/code><\/strong> file in the site root (in addition to the pretty URL).<\/li>\n<\/ul>\n\n<h3>Who should use this llms.txt plugin?<\/h3>\n\n<p>Site owners who want a maintained <strong>llms.txt for WordPress<\/strong>, care about <strong>AI SEO<\/strong> and <strong>LLM<\/strong> visibility, and optionally want <strong>GA4<\/strong>-aware content combined with a full sitemap-style URL list\u2014without hand-editing <strong>llms.txt<\/strong> every week.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to <strong>GcCo AI View<\/strong> (gcco.io), a third-party analytics and LLMS.txt generation service operated by GCCO LLC.<\/p>\n\n<p><strong>What the service does:<\/strong> AI View uses your Google Analytics 4 (GA4) data to rank your site's pages by traffic and generate an LLMS.txt file tailored to your content.<\/p>\n\n<p><strong>When data is sent:<\/strong> Data is transmitted to gcco.io only when you actively use the Connect flow or click \"Sync now.\" Specifically:<\/p>\n\n<ul>\n<li><strong>Connect flow<\/strong> \u2014 Your WordPress site URL and a temporary OAuth state token are sent to gcco.io\/ai-dashboard so you can authorize the plugin with your AI View account.<\/li>\n<li><strong>Sync<\/strong> \u2014 Your connection token, site URL, and selected GA4 property ID are sent to gcco.io to fetch the generated LLMS.txt content for your account.<\/li>\n<li><strong>Property list<\/strong> \u2014 Your connection token and site URL are sent to retrieve the list of GA4 properties associated with your account.<\/li>\n<li><strong>Property bind<\/strong> \u2014 Your connection token, site URL, and chosen property ID are sent to link that property to this WordPress installation.<\/li>\n<\/ul>\n\n<p>No data is sent automatically (no cron or background requests). All requests are made over HTTPS.<\/p>\n\n<p>Service provider: GCCO LLC\nService website: https:\/\/gcco.io\nTerms of Service: https:\/\/gcco.io\/terms\/\nPrivacy Policy: https:\/\/gcco.io\/privacy-policy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>ai-view-sync<\/code> folder to <code>\/wp-content\/plugins\/<\/code> (or install the ZIP from Plugins \u2192 Add New \u2192 Upload). The ZIP root should be <code>ai-view-sync\/<\/code> containing <code>ai-view-sync.php<\/code>.<\/li>\n<li>Activate <strong>AI View Sync<\/strong> through the <strong>Plugins<\/strong> screen. If you are replacing an older folder named <code>gcco-ai-view-sync<\/code>, deactivate and delete that copy first, then install this one (WordPress treats it as a new plugin path).<\/li>\n<li>Open <strong>AI View Sync<\/strong> from the WordPress admin menu (left sidebar).<\/li>\n<li>Either <strong>Connect to GcCo AI View<\/strong> and complete GA4 setup, or paste your <strong>llms.txt<\/strong> \/ <strong>LLMS.txt<\/strong> content manually and save.<\/li>\n<\/ol>\n\n<p>After activation, visitors and crawlers can request your file at <strong><code>https:\/\/example.com\/llms.txt<\/code><\/strong> (pretty permalinks recommended). Verify in a browser or with <code>curl<\/code> that <strong><code>\/llms.txt<\/code><\/strong> returns your text.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20llms.txt%3F\"><h3>What is llms.txt?<\/h3><\/dt>\n<dd><p><strong>llms.txt<\/strong> (often written <strong>LLMS.txt<\/strong>) is a plain-text file at <strong><code>\/llms.txt<\/code><\/strong>. It signals to AI and LLM tools what to prioritize on your site (separate from <strong>robots.txt<\/strong>, which controls crawling). This plugin helps you <strong>publish and update llms.txt on WordPress<\/strong> without FTP.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20api%20key%3F\"><h3>Do I need an API key?<\/h3><\/dt>\n<dd><p>No. A normal install does not require API keys. Optional <strong>wp-config.php<\/strong> constants (for example <code>AIVISY_APP_URL<\/code> or custom sync URLs) exist only for advanced or self-hosted setups.<\/p><\/dd>\n<dt id=\"do%20i%20need%20gcco%20ai%20view%20to%20use%20the%20plugin%3F\"><h3>Do I need GcCo AI View to use the plugin?<\/h3><\/dt>\n<dd><p>No. You can paste <strong>LLMS.txt<\/strong> manually, or use <strong>Add published URLs from WordPress<\/strong> (when not connected) to append published URLs without an account. Connecting to <strong>GcCo AI View<\/strong> adds automatic sync and GA4-informed prioritization from your account.<\/p><\/dd>\n<dt id=\"what%20makes%20this%20different%20from%20other%20llms.txt%20plugins%3F\"><h3>What makes this different from other llms.txt plugins?<\/h3><\/dt>\n<dd><p>Many plugins only <strong>serve<\/strong> a file you write yourself. <strong>AI View Sync<\/strong> can <strong>fill<\/strong> that file using traffic-aware ordering from <strong>GA4<\/strong> (via GcCo AI View), then <strong>merge<\/strong> in extra WordPress URLs so newer or sitemap-only pages are not missed. You can also set <strong>path and post-type exclusions<\/strong> (connected flow) and optionally write a physical <strong><code>llms.txt<\/code><\/strong> on disk in addition to the pretty URL.<\/p><\/dd>\n<dt id=\"where%20does%20the%20file%20get%20published%3F\"><h3>Where does the file get published?<\/h3><\/dt>\n<dd><p>Your live file is served at <strong><code>https:\/\/yoursite.com\/llms.txt<\/code><\/strong> (pretty permalinks recommended). The plugin may also write <strong><code>llms.txt<\/code><\/strong> in your site root when the server allows it.<\/p><\/dd>\n<dt id=\"can%20i%20resync%20the%20file%20later%3F\"><h3>Can I resync the file later?<\/h3><\/dt>\n<dd><p>Yes. After you connect, use <strong>Sync now<\/strong> in the plugin admin whenever you want to pull the latest <strong>LLMS.txt<\/strong> from GcCo AI View and re-run the WordPress merge. There is <strong>no built-in WordPress cron<\/strong> in this plugin yet\u2014refresh is <strong>on demand<\/strong> unless you add your own automation outside the plugin.<\/p><\/dd>\n<dt id=\"can%20i%20include%20wordpress%20pages%20that%20are%20new%20and%20not%20yet%20in%20ga4%3F\"><h3>Can I include WordPress pages that are new and not yet in GA4?<\/h3><\/dt>\n<dd><p>Yes. On sync, the plugin can <strong>append<\/strong> eligible published URLs from WordPress that are not already listed in the synced body, subject to your exclusion rules.<\/p><\/dd>\n<dt id=\"can%20i%20build%20llms.txt%20from%20wordpress%20only%2C%20without%20ga4%3F\"><h3>Can I build llms.txt from WordPress only, without GA4?<\/h3><\/dt>\n<dd><p>Yes. When you are <strong>not<\/strong> connected, use <strong>Add published URLs from WordPress<\/strong> on the manual panel. That uses your saved manual text as the base (or a short starter if empty). It does <strong>not<\/strong> apply GA4 ranking\u2014that comes from connecting and syncing.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20%22sync%22%20%28connected%29%3F\"><h3>What happens on \"Sync\" (connected)?<\/h3><\/dt>\n<dd><p>The plugin fetches <strong>LLMS.txt<\/strong> from your GcCo AI View account, merges in additional WordPress URLs, applies exclusions, updates what is served at <strong><code>\/llms.txt<\/code><\/strong>, and shows last sync time plus counts (URLs from the synced body vs appended).<\/p><\/dd>\n<dt id=\"will%20this%20replace%20my%20theme%20or%20seo%20plugin%3F\"><h3>Will this replace my theme or SEO plugin?<\/h3><\/dt>\n<dd><p>No. It only registers the <strong>llms.txt<\/strong> route and settings; it does not change posts or theme output.<\/p><\/dd>\n<dt id=\"where%20is%20content%20stored%3F\"><h3>Where is content stored?<\/h3><\/dt>\n<dd><p>Settings and the synced or manual <strong>llms.txt<\/strong> body are stored in the WordPress options table (<code>aivisy_settings<\/code>).<\/p><\/dd>\n<dt id=\"wordpress.org%20says%20my%20text%20domain%20does%20not%20match%20the%20plugin%20slug.%20what%20should%20i%20do%3F\"><h3>WordPress.org says my text domain does not match the plugin slug. What should I do?<\/h3><\/dt>\n<dd><p>The Text Domain is <strong><code>ai-view-sync<\/code><\/strong>. It must match your <strong>WordPress.org plugin slug<\/strong> and the <strong>top-level folder name<\/strong> in the ZIP (<code>ai-view-sync\/<\/code>). That is independent of the admin URL parameter <code>page=aivisy-settings<\/code> used for OAuth callbacks.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>WordPress.org review: replaced FILTER_DEFAULT (unsanitized) in Connector helper methods with direct $_GET access followed by proper sanitization (sanitize_text_field \/ esc_url_raw).<\/li>\n<li>WordPress.org review: added nonce verification to admin notice display (maybe_notice, render_settings_page). All post-action redirects now embed a nonce via aivisy_make_notice_url() and the display layer verifies it with wp_verify_nonce().<\/li>\n<li>WordPress.org review: added sanitize_textarea_field() at the point of reading $_POST for manual LLMS.txt content and exclude-path patterns, before passing to Settings sanitizer.<\/li>\n<li>WordPress.org review: physical file copy now written to wp-content\/uploads\/ai-view-sync\/llms.txt (uses wp_upload_dir()) instead of the site root (ABSPATH). The canonical \/llms.txt URL continues to be served virtually via the existing rewrite rule; the uploads copy is a backup only.<\/li>\n<li>WordPress.org review: plain-text output (class-output.php) now uses esc_html() as the late-escaping wrapper, satisfying WPCS EscapeOutput requirements while preserving all LLMS.txt markdown characters. The text\/plain Content-Type header remains the primary XSS barrier.<\/li>\n<li>WordPress.org review: updated readme.txt External services section with correct Terms of Service (https:\/\/gcco.io\/terms\/) and Privacy Policy (https:\/\/gcco.io\/privacy-policy\/) URLs.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>WordPress.org review: replaced generic <code>AI_VIEW_*<\/code> \/ <code>ai_view_llms_*<\/code> prefixes with unique <code>AIVISY_*<\/code> \/ <code>aivisy_*<\/code> prefix throughout (constants, options, transients, hooks, admin slugs).<\/li>\n<li>WordPress.org review: added External Services section to readme with Terms of Service and Privacy Policy links for gcco.io.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>WordPress.org: readme \"Tested up to\" and Stable tag aligned with the plugin version; Text Domain <code>ai-view-sync<\/code>; package folder and main file use the same slug (<code>ai-view-sync\/ai-view-sync.php<\/code>).<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>GA4 + WordPress URL merge with path\/post-type exclusions for richer <strong>llms.txt<\/strong> output.<\/li>\n<li>Admin dashboard: last sync, counts, manual sync, link to live <strong><code>\/llms.txt<\/code><\/strong>.<\/li>\n<li><strong>Add published URLs from WordPress<\/strong> \u2014 build <strong>llms.txt<\/strong> from site URLs without connecting (manual panel).<\/li>\n<li>First release track as <strong>AI View Sync<\/strong>; earlier dev copies may have used a different folder name.<\/li>\n<\/ul>","raw_excerpt":"LLMS.txt plugin: publish at \/llms.txt, GA4-ranked sync (AI View), merge WordPress URLs, exclusions. No API keys by default.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/305117","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=305117"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gcco"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=305117"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=305117"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=305117"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=305117"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=305117"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=305117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}