DEV Community

Aimeos
Aimeos

Posted on

PagibleAI CMS 0.13: Review with AI, publish with confidence

PagibleAI is an MIT-licensed CMS for Laravel with visual editing, versioned content, and APIs for headless frontends and AI agents. It runs on PHP 8.2+ with Laravel 11, 12 or 13.

PagibleAI 0.13 helps you review content before publishing and keep connected systems updated afterwards. Ask the AI assistant to check a page, inspect its changes in the history, and publish when you're ready. Optional webhook and CDN packages notify your integrations and purge affected URLs.

Review a page before publishing

Version 0.13 teaches the AI assistant built-in SEO rules for page reviews. Just click on the magic AI button and the assistant checks heading structure, meta description, canonical and robots settings, broken links and more. It explains what it found and you can then ask it in the chat to apply all suggestions or parts of it to the draft before you publish.

Before publishing, open the redesigned history dialog. Large text diffs collapse to the changed passages, and unpublished versions are marked clearly, so you see exactly what the AI and your colleagues changed.

To enable the chat, set its provider and API key with CMS_AI_WRITE and CMS_AI_WRITE_API_KEY, as described in the AI configuration guide.

Edit without losing your place

Visual editing now opens content fields in a sidebar next to the preview. Change a headline while its layout stays visible, then check desktop, tablet and phone sizes. The element picker adds search, group tabs and descriptions.

Press Ctrl/Cmd+K to jump to a page, element, file or action with the new command palette. Ctrl/Cmd+S saves; Ctrl/Cmd+Shift+S opens the publishing menu.

Trigger integrations with signed webhooks

Publishing often starts another task: updating a search service, rebuilding a static frontend, or sending content to another channel.

The optional aimeos/pagible-webhooks package sends tenant-scoped notifications through Laravel's queue when pages, elements or files are published, deleted, restored or purged, and when pages are moved (page.published, element.deleted, file.purged and so on).

Each notification identifies what changed:

{
  "event": "page.published",
  "tenant_id": "tenant",
  "timestamp": "2026-09-14T12:00:00.000+00:00",
  "data": {
    "id": "01995d6a-cb84-7218-9bb9-79063c4bf681",
    "version_id": "01995d6a-cb84-7218-9bb9-79063c4bf682",
    "path": "products/example",
    "domain": "example.com"
  }
}
Enter fullscreen mode Exit fullscreen mode

Requests use Standard Webhooks signatures. The webhook verification guide provides a complete Laravel receiver covering signature and timestamp checks, duplicate deliveries and queued processing. For a search integration, your job fetches the current content to update the external index, or removes an entry when content is deleted.

Manage and test subscriptions in the admin panel. Temporary failures trigger retries with increasing backoff, while terminal responses such as 404 stop delivery.

Run this check during deployment to validate endpoint settings, deny-list entries, queue timing and cache configuration:

php artisan cms:webhooks:check
Enter fullscreen mode Exit fullscreen mode

The command also warns about subscription secrets that can no longer be decrypted.

Purge CDN caches when content changes

When you correct a price or headline, your CDN needs to stop serving the old copy.

The optional aimeos/pagible-cdn package purges Cloudflare, Fastly and Varnish automatically.

With your provider configured and queue workers running, the package purges affected page URLs and public files removed from storage through queued jobs. Publishing a URL change queues purges for both the old and new address.

For Cloudflare, configure your token and zone, then choose how long public pages may stay cached:

CMS_CDN_CLOUDFLARE_TOKEN=...
CMS_CDN_CLOUDFLARE_ZONE=...
CMS_CDN_MAXAGE=86400
CMS_CDN_STALE=60
Enter fullscreen mode Exit fullscreen mode

CMS_CDN_MAXAGE=86400 lets the CDN cache public pages for a day. CMS_CDN_STALE=60 allows a stale copy for up to a minute while refreshing it or if your server is unavailable.

Pages that only show a changed navigation entry stay cached until they expire, so pick a lifetime your site can live with.

PagibleAI also caches complete public pages in Laravel's cache, a separate layer from the CDN. The admin panel's "Clear cache" action clears a page and its subpages from the application cache and, with the CDN package configured, queues their CDN purges too. After a theme change, you can purge all CDN content:

php artisan cms:cdn:purge --all
Enter fullscreen mode Exit fullscreen mode

Catch content errors before submitting updates

The new content schema endpoint in 0.13 lets your frontend, form builder or AI agent read registered content, metadata and configuration definitions, including those added by themes and extensions:

GET /cms/schema
Enter fullscreen mode Exit fullscreen mode

The endpoint returns a JSON Schema Draft 2020-12 document. This excerpt shows the required title field inside a hero element's data object:

{
  "type": "object",
  "properties": {
    "title": { "type": "string", "minLength": 1 }
  },
  "required": ["title"]
}
Enter fullscreen mode Exit fullscreen mode

A missing title or an empty string fails validation before your integration submits the update.

Use a Draft 2020-12 validator to check the full content, meta and config object, or select an individual element definition. Write changes through GraphQL or MCP.

Import content from TYPO3 and WordPress

A new TYPO3 importer brings pages, content and files over to Laravel, preserving the page tree.

Re-importing the same domain and post slug with the WordPress importer now updates and republishes the existing article instead of creating a duplicate. Each run publishes the imported changes and preserves publication dates and cover images.

Both importers are available through the optional aimeos/pagible-import package. They read directly from the source database, configured as a Laravel database connection:

php artisan cms:t3-import --connection=typo3 --file-base=https://example.com/fileadmin
php artisan cms:wp-import --connection=wordpress --domain=example.com
Enter fullscreen mode Exit fullscreen mode

More in this release

  • AI agents: Claude Code, Cursor and other MCP clients can manage pages through the built-in MCP server. Its tools now accept base64 file uploads, so your agent can attach a file without hosting it at a public URL first.
  • Themes: Taste and News add layouts for restaurants and publishers.
  • Content elements: New maps, call-to-action blocks and configurable contact forms.
  • Images: Smaller preview images for mobile devices, and php artisan cms:previews regenerates previews for existing images.

Install or upgrade

Add the CMS to your Laravel application with the PagibleAI installation guide.

Already using PagibleAI? Review the PagibleAI upgrade guide before updating your application.

The webhooks and CDN integrations are separate packages you add when you need them:

composer require aimeos/pagible-webhooks aimeos/pagible-cdn
Enter fullscreen mode Exit fullscreen mode

When an editor publishes a change, which systems does your application need to update?

If you like PagibleAI CMS, give it a star :-)

Top comments (0)