Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions citecue.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
* Plugin Name: CiteCue AI Auto-Fix
* Plugin URI: https://github.com/citecue/wordpress-plugin
* Description: Serves CiteCue-optimized versions of your pages to AI bots and crawlers, adds CiteCue's enriched SEO metadata to your live pages, and lets CiteCue push brand-building draft content into WordPress.
* Version: 1.2.0
* Version: 1.2.1
* Requires at least: 5.8
* Requires PHP: 7.4
* Author: CiteCue
* Author URI: https://app.citecue.com
* Author URI: https://citecue.com
* License: GPL-2.0-or-later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Text Domain: citecue-ai-auto-fix
Expand Down Expand Up @@ -138,7 +138,7 @@
return;
}

define( 'CITECUE_VERSION', '1.2.0' );
define( 'CITECUE_VERSION', '1.2.1' );
define( 'CITECUE_PLUGIN_FILE', __FILE__ );
define( 'CITECUE_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );

Expand Down
40 changes: 40 additions & 0 deletions includes/class-citecue-admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ public function register() {
add_action( 'admin_post_citecue_flush_cache', array( $this, 'handle_flush_cache' ) );
add_action( 'admin_post_citecue_regen_secret', array( $this, 'handle_regen_secret' ) );
add_filter( 'plugin_action_links_' . plugin_basename( CITECUE_PLUGIN_FILE ), array( $this, 'action_links' ) );
add_filter( 'plugin_row_meta', array( $this, 'row_meta' ), 10, 2 );
}

/**
Expand Down Expand Up @@ -112,6 +113,27 @@ public function action_links( $links ) {
return $links;
}

/**
* Adds a link to CiteCue in this plugin's row on the Plugins screen.
*
* `plugin_row_meta` fires for every row, so the file has to be checked —
* unlike `plugin_action_links_{$file}`, which is already ours.
*
* @param array $meta Existing row meta.
* @param string $file Plugin file the row is for.
* @return array
*/
public function row_meta( $meta, $file ) {
if ( plugin_basename( CITECUE_PLUGIN_FILE ) !== $file ) {
return $meta;
}

$meta[] = '<a href="' . esc_url( Citecue_Settings::SITE_URL ) . '" target="_blank" rel="noopener noreferrer">'
. esc_html__( 'CiteCue.com', 'citecue-ai-auto-fix' ) . '</a>';

return $meta;
}

/**
* The settings page URL.
*
Expand Down Expand Up @@ -607,6 +629,15 @@ private function render_setup() {
<?php wp_nonce_field( 'citecue_connect_start' ); ?>
<?php submit_button( __( 'Connect to CiteCue', 'citecue-ai-auto-fix' ), 'primary', 'submit', false ); ?>
</form>
<p class="description">
<?php
printf(
/* translators: %s: link to citecue.com. */
esc_html__( 'No CiteCue account yet? The plugin does nothing without one — see what CiteCue does and sign up at %s.', 'citecue-ai-auto-fix' ),
'<a href="' . esc_url( Citecue_Settings::SITE_URL ) . '" target="_blank" rel="noopener noreferrer">citecue.com</a>'
);
?>
</p>
</div>

<details style="margin-top:20px;max-width:720px;">
Expand Down Expand Up @@ -981,6 +1012,15 @@ private function render_status_card() {
<?php $this->action_button( 'citecue_verify_install', __( 'Verify installation', 'citecue-ai-auto-fix' ) ); ?>
<?php $this->action_button( 'citecue_disconnect', __( 'Disconnect', 'citecue-ai-auto-fix' ) ); ?>
</p>
<p class="description">
<?php
printf(
/* translators: %s: link to citecue.com. */
esc_html__( 'The optimized pages, metadata and content this site serves are produced by CiteCue — %s.', 'citecue-ai-auto-fix' ),
'<a href="' . esc_url( Citecue_Settings::SITE_URL ) . '" target="_blank" rel="noopener noreferrer">citecue.com</a>'
);
?>
</p>
</div>
<?php
}
Expand Down
8 changes: 8 additions & 0 deletions includes/class-citecue-settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ class Citecue_Settings {
*/
const DEFAULT_API_BASE = 'https://app.citecue.com';

/**
* The CiteCue site. Not overridable the way the app origin is: a
* self-hosted or staging deployment moves the API, not the service the
* plugin is an end of, and this is only ever used for links out of the
* admin screens.
*/
const SITE_URL = 'https://citecue.com';

/**
* Cached option value for this request.
*
Expand Down
25 changes: 19 additions & 6 deletions readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ Tags: ai, ai-crawlers, gptbot, ai-seo, woocommerce
Requires at least: 5.8
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.2.0
Stable tag: 1.2.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

AEO for WordPress: answers AI crawlers with a CiteCue-optimized version of the page they asked for, and fills your SEO plugin's metadata gaps.

== Description ==

CiteCue AI Auto-Fix is the WordPress end of CiteCue, an answer engine optimization (AEO) platform. It decides, per request, which version of a page WordPress returns — the optimized one to a recognised AI crawler, your normal page to everyone else — and it can do that only from inside WordPress, before the theme renders.
CiteCue AI Auto-Fix is the WordPress end of [CiteCue](https://citecue.com), an answer engine optimization (AEO) platform. It decides, per request, which version of a page WordPress returns — the optimized one to a recognised AI crawler, your normal page to everyone else — and it can do that only from inside WordPress, before the theme renders.

* **Per-request delivery to AI crawlers** — when GPTBot, ClaudeBot, PerplexityBot, ChatGPT-User or any other agent in the crawler registry requests a page, the plugin returns the CiteCue-optimized version of that URL. Human visitors always see your normal site, and optimized responses are never cached for regular traffic. Any miss, timeout or outage passes straight through to the normal page.
* **Gap-filling page metadata** — adds CiteCue's title, meta description, OpenGraph, canonical and structured-data tags to your live pages, so search engines and AI answer engines see them on the page a human sees. It fills gaps only: it reads what your theme, WordPress and your SEO plugin actually printed into `<head>` and adds only what none of them emitted, so there is never a second title or canonical.
Expand All @@ -22,7 +22,7 @@ CiteCue AI Auto-Fix is the WordPress end of CiteCue, an answer engine optimizati
* **Content from CiteCue** — a signed endpoint through which CiteCue can push new brand-building content (content briefs, FAQ packs, gap-filling pages) into WordPress as drafts for your review.
* **WooCommerce-aware** — cart, checkout, account pages and cart-modifying links are never intercepted, while product and shop pages are served optimized. Pushed content can also create or enrich WooCommerce products (draft by default, matched by SKU with explicit consent).

This plugin requires a CiteCue account (citecue.com) and does nothing until you connect one. See "External services" below for exactly what is sent where.
This plugin requires a CiteCue account — [citecue.com](https://citecue.com) — and does nothing until you connect one. See "External services" below for exactly what is sent where.

= What the plugin actually does =

Expand All @@ -34,8 +34,12 @@ Everything above happens on a live request, and that is where the design decisio
* **It never makes a visitor wait on a third party.** The render path reads cache only; a URL with nothing cached yet renders untouched and the fetch is queued to WP-Cron.
* **Content flows back in.** The signed `citecue/v1` endpoint is how CiteCue delivers new content into WordPress — as drafts, with replayed signatures rejected — so the loop from "this page is missing" to "this page exists" closes without anyone copying and pasting.

The service behind all of it is at [citecue.com](https://citecue.com).

== Installation ==

You need a CiteCue account before step 2 — sign up at [citecue.com](https://citecue.com).

1. Install and activate the plugin from Plugins → Add New, or upload it under Plugins → Add New → Upload Plugin.
2. Go to Settings → CiteCue and click "Connect to CiteCue".
3. Confirm the project for this site in CiteCue. You are redirected back and the plugin checks itself.
Expand All @@ -47,10 +51,10 @@ Until you complete step 2, the plugin makes no outbound requests at all.

== External services ==

This plugin is the WordPress end of CiteCue, a hosted service at https://citecue.com that generates AI-optimized versions of your pages. The optimized pages, your llms.txt and the pushed draft content are all produced by that service, so the plugin cannot work without it. Nothing below happens until an administrator connects the site.
This plugin is the WordPress end of CiteCue, a hosted service at [citecue.com](https://citecue.com) that generates AI-optimized versions of your pages. The optimized pages, your llms.txt and the pushed draft content are all produced by that service, so the plugin cannot work without it. Nothing below happens until an administrator connects the site.

Terms of Service: https://citecue.com/terms
Privacy Policy: https://citecue.com/privacy
Terms of Service: [citecue.com/terms](https://citecue.com/terms)
Privacy Policy: [citecue.com/privacy](https://citecue.com/privacy)

The service is reached at `https://app.citecue.com` (or the origin you pin with the `CITECUE_API_BASE` constant, for self-hosted CiteCue deployments).

Expand Down Expand Up @@ -136,6 +140,9 @@ Yes. Store pages (cart, checkout, account, all WooCommerce endpoints) are never

== Upgrade Notice ==

= 1.2.1 =
Adds links to citecue.com from the settings screen, the Plugins list and this page. No change to what the plugin does on a request; nothing to reconfigure.

= 1.2.0 =
Adds page enhancements: a facts-and-FAQ section CiteCue composes for pages you already have, placed on the live page. Existing connections need one reconnect before CiteCue will send them — Settings → CiteCue will ask.

Expand All @@ -153,6 +160,12 @@ The plugin folder is now citecue-ai-auto-fix. If you installed 1.0.0 by uploadin

== Changelog ==

= 1.2.1 =
* The settings screen now says where a CiteCue account comes from. Before connecting it links to citecue.com; once connected it names CiteCue as the source of what the site serves. The Plugins list gets a CiteCue.com link in the plugin's row.
* This page now links to citecue.com in its own text. The directory does not turn a bare URL into a link, so the URLs in "External services" — including the terms and privacy policy — have been rendered as links rather than left as plain text.
* The `Author URI` header points at citecue.com rather than at `app.citecue.com`, the login app. That is the link behind "By CiteCue" on the Plugins screen in wp-admin.
* Documentation only otherwise: the description no longer leads with llms.txt, and several claims about coverage and speed were narrowed to what the code actually guarantees.

= 1.2.0 =
* New: page enhancements. CiteCue composes a collapsed facts-and-FAQ section for a page you already have — built from your answered facts and grounded FAQ entries, never generated by a model — and this release places it on that page, immediately before `</body>`.
* The block is placed exactly as CiteCue composed it. It is sanitized before it is sent and capped at 32 KB on the wire, and this plugin checks the cap again before placing it; nothing is re-escaped or run through the content filters, either of which would break the markup or run a shortcode quoted inside an answer.
Expand Down
Loading