WP Manifestindependent plugin directory
manifest / seo / aioradar-plugin

AIO Optimiser

WordPress plugin for AI/LLM visibility optimisation — LLM.txt generation, schema markup, and readiness scoring.

by AIO Optimiser · github.com/wearegodigital/aioradar-plugin · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/wearegodigital/aioradar-plugin/archive/refs/heads/main.zip

A WordPress plugin that helps tour operators optimize their sites for AI discovery platforms like ChatGPT, Perplexity, and other AI-powered search engines. AIO Optimiser connects to a SaaS dashboard via API to automate optimizations including page summaries, alt text generation, schema markup, and llm.txt file management.

Features

  • Content Scanner - Automatically inventories all pages, posts, and images on your WordPress site
  • API Integration - Secure connection to the AIO Optimiser SaaS dashboard for centralized management
  • Automated Syncing - Weekly cron job plus debounced sync on content save to keep your optimization data current
  • Schema Detection - Detects existing SEO plugins (Yoast, RankMath, AIOSEO, Schema Pro) to avoid conflicts
  • LLM.txt Support - Checks for and manages llm.txt files to help AI systems understand your content
  • Secure Storage - API keys encrypted using industry-standard sodium cryptography (with fallback for older PHP versions)
  • Dedicated Logging - Plugin-specific log file with automatic rotation for easy debugging
  • Auto-publish Mode - Choose to automatically apply optimizations or review them before publishing
  • Page Summaries - Generate AI-optimized summaries for your content
  • Alt Text Generation - Automatically create descriptive alt text for images
  • Schema Markup - Inject JSON-LD structured data to enhance AI understanding

Requirements

  • WordPress: 6.0 or higher
  • PHP: 8.0 or higher
  • PHP Extensions: Recommended: sodium extension for secure encryption (graceful fallback if unavailable)

Installation

From WordPress Admin

  1. Download the plugin ZIP file from the AIO Optimiser dashboard
  2. Go to Plugins > Add New in your WordPress admin
  3. Click Upload Plugin and select the downloaded ZIP file
  4. Click Install Now and then Activate

Manual Installation

  1. Upload the aio-optimiser folder to /wp-content/plugins/
  2. Activate the plugin through the Plugins menu in WordPress
  3. Navigate to Settings > AIO Optimiser to configure

Via WP-CLI

wp plugin install aio-optimiser.zip --activate

Configuration

Initial Setup

  1. Get Your API Key

    • Log in to your AIO Optimiser dashboard at https://aiooptimiser.com
    • Navigate to Settings > API Keys
    • Generate a new API key for your WordPress site
    • Copy the API key to your clipboard
  2. Configure the Plugin

    • In WordPress, go to Settings > AIO Optimiser
    • Paste your API key into the API Key field
    • Click Validate to verify the connection
    • Choose your Auto Publish preference:
      • Enabled: Optimizations are applied automatically
      • Disabled: You'll review and approve each optimization
    • Click Save Changes
  3. Initial Sync

    • Once configured, the plugin will perform an initial scan of your site
    • This inventory is sent to the AIO Optimiser dashboard
    • You'll see your site's content appear in the dashboard within minutes

Settings

  • API Key: Your secure authentication token for the AIO Optimiser service. This is encrypted using sodium cryptography and stored securely in your WordPress database.

  • Auto Publish: Controls whether optimizations are applied automatically or require manual approval. When disabled, you'll be able to review each suggested optimization in the dashboard before it's applied to your site.

How It Works

Content Scanning

AIO Optimiser continuously monitors your WordPress site for content changes:

  1. Weekly Full Scan: A comprehensive inventory runs weekly via WordPress cron
  2. Debounced Sync: When you save content, a sync is scheduled for 5 minutes later to catch any additional rapid edits
  3. Inventory Data: Each scan captures:
    • All published pages and posts
    • All images in your media library
    • Existing schema markup sources
    • Current llm.txt file status

Optimization Workflow

  1. Scan: Plugin sends content inventory to AIO Optimiser dashboard
  2. Analyze: Dashboard analyzes your content for AI optimization opportunities
  3. Generate: AI-powered optimizations are created (summaries, alt text, schema)
  4. Apply: Optimizations are either auto-applied or queued for your approval
  5. Monitor: Track performance and updates through the dashboard

Data Storage

The plugin stores optimization data as WordPress post meta:

  • _aio_summary - AI-generated page summary
  • _aio_schema - JSON-LD schema markup
  • _wp_attachment_image_alt - Image alt text (standard WordPress meta)

All data remains in your WordPress database. The plugin never sends content off-site except the inventory metadata needed for optimization.

Security

  • Encrypted API Keys: Uses PHP's sodium extension for authenticated encryption (AEAD)
  • Fallback Encryption: Graceful degradation to obfuscated storage if sodium is unavailable
  • No Plain Text Storage: API keys are never stored in plain text
  • Automatic Key Rotation: Re-encrypts using stronger methods when available
  • Sanitized Logging: Sensitive data automatically redacted from logs

Development

For Developers

AIO Optimiser follows WordPress coding standards and provides several hooks for extensibility:

Action Hooks

// Runs after content inventory is synced
do_action( 'aio_after_inventory_sync', $inventory, $result );

// Runs when schema is injected into page head
do_action( 'aio_schema_injected', $post_id, $schema_data );

// Runs when a summary is saved
do_action( 'aio_summary_saved', $post_id, $summary );

Filter Hooks

// Modify inventory data before sending to API
apply_filters( 'aio_inventory_data', $inventory );

// Modify schema markup before injection
apply_filters( 'aio_schema_markup', $schema, $post_id );

// Modify which post types are scanned
apply_filters( 'aio_scannable_post_types', $post_types );

Project Structure

aio-optimiser/
├── aio-optimiser.php          # Main plugin file, hooks, activation
├── includes/
│   ├── class-aio-api-client.php   # REST API communication
│   ├── class-aio-scanner.php      # Content/image/schema scanner
│   ├── class-aio-llm-txt.php      # LLM.txt file management
│   ├── class-aio-schema.php       # JSON-LD schema injection
│   ├── class-aio-summaries.php    # Page summary handling
│   ├── class-aio-alt-text.php     # Alt text generation
│   ├── class-aio-logger.php       # Logging functionality
│   ├── class-aio-encryption.php   # Encryption handler
│   └── class-aio-loader.php       # Autoloader
├── admin/
│   ├── class-aio-admin.php        # Admin initialization
│   ├── class-aio-settings.php     # Settings page
│   └── views/
│       └── settings-page.php      # Settings template
├── assets/
│   ├── css/
│   │   └── admin.css
│   └── js/
│       └── admin.js
└── readme.txt                     # WordPress.org plugin readme

Local Development

# Clone the repository
git clone https://github.com/wearegodigital/aioradar-plugin.git

# Symlink to WordPress plugins directory
ln -s /path/to/aioradar-plugin /path/to/wordpress/wp-content/plugins/aio-optimiser

# Activate via WP-CLI
wp plugin activate aio-optimiser

Running Tests Locally

The plugin includes PHPUnit tests for endpoint contract validation. To run tests locally:

# Install PHP dependencies
composer install

# Run all tests
./vendor/bin/phpunit

# Run specific test file
./vendor/bin/phpunit tests/Test_Endpoint_Contracts.php

Requirements for testing:

  • PHP 8.0+
  • Composer
  • PHPUnit 9.5+

What the tests validate:

  • Endpoint contract JSON syntax and structure
  • URL pattern consistency (e.g., /llm-txt vs /llms-txt)
  • API client file existence
  • Cross-validation with the parent aioradar API contracts

The CI workflow runs these tests automatically on push and pull requests to main and develop branches.

Coding Standards

The plugin follows WordPress Coding Standards:

# Check PHP code standards
phpcs --standard=WordPress aio-optimiser.php includes/ admin/

# Auto-fix simple issues
phpcbf --standard=WordPress aio-optimiser.php includes/ admin/

Troubleshooting

Connection Issues

Problem: API key validation fails

Solutions:

  • Verify your API key is copied correctly (no extra spaces)
  • Check your server can make outbound HTTPS connections
  • Ensure WordPress HTTP API is functioning: wp option get home
  • Review the debug log for detailed error messages

Syncing Issues

Problem: Content not appearing in dashboard

Solutions:

  • Verify API key is configured and validated
  • Check WordPress cron is running: wp cron event list
  • Manually trigger sync: wp cron event run aio_weekly_scan
  • Review logs at: /wp-content/uploads/aio-optimiser-logs/aio-debug.log

Debug Logging

The plugin maintains a dedicated log file for troubleshooting:

Log Location: /wp-content/uploads/aio-optimiser-logs/aio-debug.log

Log Features:

  • Automatic rotation when file exceeds 5MB
  • Sensitive data (API keys, passwords) automatically redacted
  • Protected from public access via .htaccess
  • Four log levels: DEBUG, INFO, WARNING, ERROR

View Recent Logs:

// In WordPress admin, view last 100 log entries
$logger = new AIO_Logger();
$entries = $logger->get_recent_entries( 100 );
print_r( $entries );

Clear Logs:

// Clear the log file (requires admin privileges)
AIO_Logger::clear_log();

Nginx Users: Log Directory Protection

The plugin automatically creates an .htaccess file to protect log files from public access on Apache servers. However, nginx does not use .htaccess files, so you must manually configure access restrictions.

Add to your nginx configuration:

# Block access to AIO Optimiser logs
location ~ ^/wp-content/uploads/aio-optimiser-logs/ {
    deny all;
    return 404;
}

Where to add this:

  • Add to your nginx server block configuration (usually in /etc/nginx/sites-available/yoursite.conf)
  • Place it before your main PHP location block
  • Reload nginx after making changes: sudo nginx -t && sudo nginx -s reload

Alternative: Move Logs Outside Web Root

For enhanced security, you can store logs outside the publicly accessible web directory using the aio_log_directory filter:

// In your theme's functions.php or a custom plugin
add_filter( 'aio_log_directory', function( $default_path ) {
    // Move logs outside web root
    return '/var/log/wordpress/aio-optimiser';
} );

Note: Ensure the directory exists and is writable by your web server user (e.g., www-data).

Common Issues

Issue: "Sodium extension not available" warning

Solution: This is informational only. The plugin uses fallback encryption if sodium is unavailable. For enhanced security, ask your hosting provider to enable the PHP sodium extension.

Issue: Weekly scan not running

Solution: WordPress cron requires site traffic to trigger. For low-traffic sites, set up a system cron:

*/15 * * * * wget -q -O - https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Issue: Schema conflicts with existing SEO plugin

Solution: The plugin detects existing schema sources and avoids conflicts. If issues persist, disable schema injection in AIO Optimiser settings and use your existing SEO plugin for schema.

WordPress.org Plugin Repository

For the official plugin listing, see readme.txt which follows WordPress.org formatting requirements.

Changelog

1.0.0 - 2024-01-15

Initial Release

  • Content scanner for pages, posts, and images
  • API integration with AIO Optimiser dashboard
  • Weekly automated inventory sync
  • Debounced sync on content save
  • Schema detection for popular SEO plugins
  • LLM.txt file management
  • Sodium-based encryption for API keys
  • Dedicated logging with automatic rotation
  • Admin settings page
  • Auto-publish mode
  • Page summary support
  • Alt text generation
  • JSON-LD schema injection

Support

Need help? We're here for you:

Privacy Policy

AIO Optimiser processes the following data:

  • Sent to API: Post titles, URLs, content length, image URLs, schema detection results
  • Not Sent: Full post content, user data, or sensitive information
  • Stored Locally: API keys (encrypted), optimization results, log files
  • Third Parties: Data sent only to AIO Optimiser API servers for processing

For complete privacy details, see our Privacy Policy.

License

This plugin is licensed under the GNU General Public License v2 or later.

AIO Optimiser - WordPress plugin for AI optimization
Copyright (C) 2024 AIO Optimiser

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

See LICENSE for full license text.

Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature-name
  3. Make your changes following WordPress coding standards
  4. Test thoroughly
  5. Submit a pull request

Please ensure all code:

  • Follows WordPress Coding Standards
  • Includes appropriate documentation
  • Has been tested on WordPress 6.0+ with PHP 8.0+
  • Does not break existing functionality

Credits

Developed by AIO Optimiser for tour operators worldwide.