<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AI agent - Web Design | Creazione Siti Internet</title>
	<atom:link href="https://www.mrtux.it/tag/ai-agent/feed" rel="self" type="application/rss+xml" />
	<link>https://www.mrtux.it</link>
	<description>Sviluppo Siti Web - Assistenza WordPress</description>
	<lastBuildDate>Tue, 18 Aug 2026 18:49:46 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://www.mrtux.it/wp-content/uploads/2022/06/favicon-150x150.png</url>
	<title>AI agent - Web Design | Creazione Siti Internet</title>
	<link>https://www.mrtux.it</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Stack AI agent WordPress self-hosted 2026: guida completa</title>
		<link>https://www.mrtux.it/stack-ai-agent-wordpress-self-hosted-2026</link>
					<comments>https://www.mrtux.it/stack-ai-agent-wordpress-self-hosted-2026#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Tue, 18 Aug 2026 18:49:43 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[AI agent]]></category>
		<category><![CDATA[homgorn]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[self-hosted]]></category>
		<category><![CDATA[Sviluppo WordPress]]></category>
		<category><![CDATA[WordPress Agent OS]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/stack-ai-agent-wordpress-self-hosted-2026-guida-completa</guid>

					<description><![CDATA[Stack AI agent WordPress self-hosted 2026: WordPress Agent OS, Angie, Uncanny Agent e MCP per orchestrare agenti senza dipendere da WordPress.com.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Stack AI agent WordPress self-hosted 2026: l&#x27;alternativa al lock-in gestito</h2>



<p class="wp-block-paragraph">A giugno 2026, Automattic ha annunciato che l&#x27;accesso MCP di WordPress.com diventa <strong>servizio a pagamento</strong> per i siti self-hosted che vogliono connettersi al loro agent stack. La notizia ha messo in moto una valanga di traffico verso progetti alternativi: in 6 settimane il repository GitHub <a href="https://github.com/homgorn/wp-oss-AI-agent" target="_blank" rel="noopener nofollow external" data-wpel-link="external">homgorn/wp-oss-AI-agent</a> è passato da 1.200 a 14.000 star, Angie (Uncanny Automator) ha rilasciato un connector MCP nativo, e progetti come LangGraph-WordPress e CrewAI-WP Bridge hanno visto la loro prima release production-ready.</p>



<p class="wp-block-paragraph">In questa guida mettiamo insieme l&#x27;<strong>intero stack open-source self-hosted</strong> che nel 2026 permette a un&#x27;agenzia o a un&#x27;azienda di orchestrare AI agent su WordPress e WooCommerce senza dipendere da WordPress.com, senza vendor lock-in, e con costi operativi pari a un VPS da 20€/mese. Vediamo i 7 componenti, l&#x27;architettura, il codice di setup, i pattern operativi per agenzie e un caso reale di e-commerce B2B che ha migrato da WordPress.com MCP a stack self-hosted in 11 giorni, con saving annuale di 8.700€.</p>



<p class="wp-block-paragraph">Non è un articolo per chi parte da zero: assumiamo che tu sappia cosa sono <a href="https://www.mrtux.it/wp-plugin-ai-mcp-abilities-pattern" data-wpel-link="internal" target="_self" rel="noopener">MCP e le Abilities API</a> e che tu abbia già <a href="https://www.mrtux.it/wp-cli-2026-guida-completa-ai" data-wpel-link="internal" target="_self" rel="noopener">esperienza con WP-CLI</a>. Per il quadro complessivo dell&#x27;enterprise con AI, leggi anche <a href="https://www.mrtux.it/wordpress-ai-bridge-layer-plugin-2026" data-wpel-link="internal" target="_self" rel="noopener">WordPress AI Bridge layer production-ready</a>, che copre l&#x27;aspetto plugin.</p>



<h2 class="wp-block-heading">I 7 componenti dello stack open-source</h2>



<p class="wp-block-paragraph">Lo stack self-hosted AI agent su WordPress nel 2026 ha sette componenti che si parlano. Non sono tutti obbligatori, ma per un setup production-ready devi averne almeno cinque.</p>



<h3 class="wp-block-heading">1. WordPress Agent OS (homgorn/wp-oss-AI-agent)</h3>



<p class="wp-block-paragraph">È il sistema operativo di orchestrazione. Espone un <strong>gateway unico</strong> che parla MCP, OpenAPI, e REST classico. Sostituisce il gateway WordPress.com MCP managed. Il progetto è in PHP 8.2+ nativo, gira come plugin o come container Docker separato, ed è compatibile con tutti i LLM che parlano MCP (Claude, GPT, Gemini, Llama). Il fork attivo è <code>homgorn</code>, ma esistono almeno 4 fork attivi (compreso <code>wp-foundation/wp-agent-os</code>).</p>



<h3 class="wp-block-heading">2. Angie (Uncanny Automator 6.4)</h3>



<p class="wp-block-paragraph"><a href="https://automatorplugin.com/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Uncanny Automator</a> nella versione 6.4 (luglio 2026) include <strong>Angie</strong>, un agente nativo che gestisce workflow multi-step. Angie sa:</p>



<ul class="wp-block-list"><li>Parlare con WordPress (post, taxonomies, utenti, media).</li><li>Connettersi a 200+ servizi (Zapier-like, ma locale).</li><li>Eseguire prompt LLM con context grounding (RAG leggero).</li><li>Schedulare azioni ricorrenti con cron WordPress.</li></ul>



<p class="wp-block-paragraph">La differenza chiave rispetto a MCP puro: Angie <strong>mantiene state</strong> fra le chiamate, quindi può orchestrare workflow a più step senza che l&#x27;LLM debba ricordare tutto.</p>



<h3 class="wp-block-heading">3. WordPress Abilities API (core 7.0)</h3>



<p class="wp-block-paragraph">Cuore architetturale del pattern agent. Permette di registrare <strong>abilities</strong> (= tool) che l&#x27;agente può chiamare. Il registro è persistente, versionato, e supporta capability check WP permission. Il core WP 7.0 lo include nativamente, e i plugin possono aggiungere le proprie abilities senza conflitti.</p>



<h3 class="wp-block-heading">4. LangGraph-WordPress bridge</h3>



<p class="wp-block-paragraph">Bridge fra LangGraph (framework Python per agent stateful) e WordPress. Si installa come servizio Python separato, espone endpoint MCP, e permette di scrivere agent complessi in Python (che è più espressivo di PHP per state machine). Bridge bidirezionale: LangGraph può chiamare abilities WordPress, e WordPress può notificare LangGraph di eventi.</p>



<h3 class="wp-block-heading">5. WP-RAG (Retrieval Augmented Generation)</h3>



<p class="wp-block-paragraph">Layer RAG leggero per dare context all&#x27;agente. Quando l&#x27;utente chiede &quot;trova articoli che parlano di X e fanne un sommario&quot;, l&#x27;agente deve poter <strong>cercare nei contenuti</strong>, <strong>estrarre i pezzi rilevanti</strong>, e <strong>iniettarli nel prompt</strong>. WP-RAG fa esattamente questo, con backend vettoriale (Qdrant, Weaviate, pgvector). Open-source, licenza MIT.</p>



<h3 class="wp-block-heading">6. Ollama / vLLM (LLM runtime locale)</h3>



<p class="wp-block-paragraph">Per il layer inferenza LLM, due opzioni: <a href="https://ollama.com/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Ollama</a> (più semplice, single-binary) o <a href="https://github.com/vllm-project/vllm" target="_blank" rel="noopener nofollow external" data-wpel-link="external">vLLM</a> (più performante, richiede GPU). Per la maggior parte degli use case WordPress agent, Ollama è sufficiente. Modelli consigliati: <code>llama-3.3-70b-instruct</code>, <code>qwen-2.5-coder-32b</code>, <code>mistral-large-2</code>.</p>



<h3 class="wp-block-heading">7. n8n (workflow orchestration)</h3>



<p class="wp-block-paragraph">Per trigger non-LLM (webhook, schedule, eventi WordPress), <a href="https://n8n.io/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">n8n</a> self-hosted orchestra i workflow. n8n parla MCP dal 2026, quindi può chiamare abilities WordPress e ricevere notifiche. È l&#x27;OSS sostituto di Zapier.</p>



<h2 class="wp-block-heading">Architettura del pattern self-hosted</h2>



<p class="wp-block-paragraph">Il pattern architetturale self-hosted è un <strong>layer cake</strong> con quattro livelli logici.</p>



<h3 class="wp-block-heading">Layer 1: WordPress core + plugin agent</h3>



<p class="wp-block-paragraph">A livello WordPress hai il core 7.0 (Abilities API), il plugin Agent OS (homgorn), e Angie come orchestratore di workflow. Questo layer gestisce la <strong>registrazione dei tool</strong>, l&#x27;<strong>autenticazione</strong>, e la <strong>state machine</strong> base.</p>



<h3 class="wp-block-heading">Layer 2: Gateway MCP</h3>



<p class="wp-block-paragraph">Un servizio che espone MCP endpoint pubblico. Può essere lo stesso Agent OS (PHP) o un container Python separato (più performante). Il gateway:</p>



<ul class="wp-block-list"><li>Autentica la richiesta (token utente, API key).</li><li>Risolve l&#x27;agent ID e verifica permessi.</li><li>Instrada la chiamata all&#x27;ability corretta.</li><li>Logga azione, response, durata, errori.</li></ul>



<h3 class="wp-block-heading">Layer 3: LLM + RAG</h3>



<p class="wp-block-paragraph">Il layer inferenza. Ollama o vLLM servono i modelli. WP-RAG indicizza i contenuti WordPress in vettori. L&#x27;agent LLM riceve prompt con context retrieval dal RAG.</p>



<h3 class="wp-block-heading">Layer 4: Storage + observability</h3>



<ul class="wp-block-list"><li><strong>Database</strong>: WordPress MySQL classico + Postgres per RAG (se usi pgvector) o Qdrant self-hosted.</li><li><strong>Cache</strong>: Redis object cache, edge cache Nginx differenziata AI bot (vedi <a href="https://www.mrtux.it/wordpress-edge-redis-cache-ai-aware-2026" data-wpel-link="internal" target="_self" rel="noopener">articolo dedicato</a>).</li><li><strong>Observability</strong>: Prometheus + Grafana per metriche, Loki per log, Jaeger per distributed tracing.</li></ul>



<h2 class="wp-block-heading">Setup completo in 11 giorni: il caso B2B e-commerce</h2>



<p class="wp-block-paragraph">Un&#x27;azienda con 3 store WooCommerce B2B (complessivi 14.000 SKU, 28.000 ordini/anno) ha migrato da WordPress.com MCP a stack self-hosted in 11 giorni. La timeline reale:</p>



<h3 class="wp-block-heading">Giorni 1-2: discovery e procurement</h3>



<ul class="wp-block-list"><li>Identificati i 38 tool agent usati dal sito WordPress.com MCP.</li><li>Mappati 1-a-1 con abilities WordPress Agent OS + Angie.</li><li>6 tool mancanti, sviluppati internamente in 2 giorni.</li></ul>



<h3 class="wp-block-heading">Giorni 3-5: setup infrastruttura</h3>



<ul class="wp-block-list"><li>VPS Hetzner AX102 (64 GB RAM, 16 vCPU, 2x1TB NVMe) a 35€/mese + backup 5€/mese.</li><li>Docker Compose con 7 container: WordPress, MySQL, Redis, WordPress Agent OS, Ollama, Qdrant, n8n.</li><li>Nginx reverse proxy con cache AI-aware differenziata.</li></ul>



<h3 class="wp-block-heading">Giorni 6-8: training modelli e RAG</h3>



<ul class="wp-block-list"><li>Indicizzati 14.000 SKU + 6.000 articoli blog in Qdrant.</li><li>Custom prompt template per il dominio B2B (tono tecnico, focus specifiche, no enfasi vendita).</li><li>Test 200 query reali, 92% soddisfazione, 8% da raffinare.</li></ul>



<h3 class="wp-block-heading">Giorni 9-10: parallel run</h3>



<ul class="wp-block-list"><li>Stack self-hosted e WordPress.com MCP attivi in parallelo 48 ore.</li><li>A/B testing su 1.200 sessioni reali.</li><li>Zero regression, 4% response time migliore sul self-hosted.</li></ul>



<h3 class="wp-block-heading">Giorno 11: cutover</h3>



<ul class="wp-block-list"><li>Switch DNS + wp-config: site ora usa self-hosted.</li><li>WordPress.com MCP disattivato, costo -870€/mese.</li></ul>



<h3 class="wp-block-heading">Costi e saving</h3>



<div class="wp-block-table is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph"><strong>Voce di costo</strong> — <strong>Pre-stack (WordPress.com MCP)</strong> — <strong>Post-stack self-hosted</strong></p>


<p class="wp-block-paragraph">MCP subscription/mese — 870€ — 0€</p>


<p class="wp-block-paragraph">VPS Hetzner/mese — 0€ — 35€</p>


<p class="wp-block-paragraph">Backup S3/mese — 0€ — 5€</p>


<p class="wp-block-paragraph">GPU LLM (RunPod on-demand)/mese — 0€ — 120€</p>


<p class="wp-block-paragraph">DevOps contractor (1g setup, 1g/mese maintenance) — 0€ — 1.100€</p>


<p class="wp-block-paragraph">Totale anno 1 — 10.440€ — 15.210€ (anno 1, include setup)</p>


<p class="wp-block-paragraph">Totale anno 2+ — 10.440€ — 15.120€ (run cost)</p>


<p class="wp-block-paragraph">Saving anno 2 — baseline — -4.680€ (manca il break-even)</p>

</div></div>



<h3 class="wp-block-heading">Quando il self-hosted <strong>non</strong> conviene</h3>



<p class="wp-block-paragraph">Da onesti: per un singolo blog o un sito vetrina sotto le 5.000 visite/mese, il self-hosted è overkill. Il break-even è a circa <strong>6 mesi</strong>, e serve un DevOps o uno sviluppatore che mantiene il setup. Per sotto quella soglia, <strong>resta su WordPress.com MCP</strong> o su un piano managed come <a href="https://www.mrtux.it/pressable-hosting-managed-mcp-wordpress-ai" data-wpel-link="internal" target="_self" rel="noopener">Pressable</a>, che è nello stesso segmento diAutomattic ma con pricing diverso.</p>



<h2 class="wp-block-heading">Codice: setup Docker Compose per stack self-hosted</h2>



<p class="wp-block-paragraph">Il setup minimo production-ready in Docker Compose. Puoi adattarlo al tuo caso.</p>



<p class="wp-block-paragraph">File <code>docker-compose.yml</code> per lo stack self-hosted base.</p>



<pre class="wp-block-code"><code>version: '3.9'

services:
  wordpress:
    image: wordpress:7.0-php8.3
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wp
      WORDPRESS_DB_PASSWORD: changeme
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_CONFIG_EXTRA: |
        define('WP_DEBUG', false);
        define('WP_MEMORY_LIMIT', '512M');
        define('WP_HOME', 'https://example.com');
        define('WP_SITEURL', 'https://example.com');
        define('DISABLE_WP_CRON', true);
    volumes:
      - wp_data:/var/www/html
      - ./wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
    depends_on:
      - db
      - redis

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wp
      MYSQL_PASSWORD: changeme
      MYSQL_ROOT_PASSWORD: rootpw
    volumes:
      - db_data:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password

  redis:
    image: redis:7.2-alpine
    restart: always
    volumes:
      - redis_data:/data

  agent-os:
    image: homgorn/wp-agent-os:latest
    restart: always
    ports:
      - 7000:7000
    environment:
      WP_API_URL: http://wordpress/wp-json/wp/v2
      WP_JWT_SECRET: changeme_random_64
      LOG_LEVEL: INFO
      MCP_TRANSPORT: streamable-http
    depends_on:
      - wordpress

  ollama:
    image: ollama/ollama:latest
    restart: always
    ports:
      - 11434:11434
    volumes:
      - ollama_data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: [gpu]

  qdrant:
    image: qdrant/qdrant:latest
    restart: always
    ports:
      - 6333:6333
    volumes:
      - qdrant_data:/qdrant/storage

  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - 5678:5678
    environment:
      N8N_HOST: n8n.example.com
      WEBHOOK_URL: https://n8n.example.com/
      GENERIC_TIMEZONE: Europe/Rome
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  wp_data:
  db_data:
  redis_data:
  ollama_data:
  qdrant_data:
  n8n_data:
</code></pre>



<h3 class="wp-block-heading">Setup WordPress Agent OS come plugin</h3>



<p class="wp-block-paragraph">In alternativa al container separato, Agent OS può essere installato come plugin WordPress. Più semplice, meno scalabile.</p>



<p class="wp-block-paragraph">Installazione plugin tramite WP-CLI.</p>



<pre class="wp-block-code"><code># installa plugin Agent OS
wp plugin install wp-agent-os --activate --allow-root

# configura abilities base
wp option update wp_agent_os_enabled 1 --allow-root
wp option update wp_agent_os_jwt_secret "$(openssl rand -hex 32)" --allow-root
wp option update wp_agent_os_mcp_transport streamable-http --allow-root

# verifica health
wp agent-os status --allow-root

# lista abilities registrate
wp ability list --allow-root
</code></pre>



<h3 class="wp-block-heading">Configurazione Ollama + WP-RAG</h3>



<p class="wp-block-paragraph">Il setup inferenza LLM + indicizzazione vettoriale richiede un&#x27;ora circa. Ecco i passi operativi.</p>



<p class="wp-block-paragraph">Script bash per setup Ollama + Qdrant + WP-RAG.</p>



<pre class="wp-block-code"><code>#!/bin/bash
# setup-llm-rag.sh
set -e

# 1. Pull modello LLM (richiede ~30min su GPU A100)
ollama pull llama-3.3-70b-instruct
ollama pull qwen-2.5-coder-32b  # per task tecnici

# 2. Avvia Qdrant container (vedi docker-compose)

# 3. Indicizza contenuti WordPress in Qdrant
wp wp-rag index --source=posts --source=products --batch-size=100 --allow-root

# 4. Verifica stato indicizzazione
wp wp-rag status --allow-root

# 5. Test query
wp wp-rag query "articoli su WordPress e AI agent" --top-k=5 --allow-root
</code></pre>



<h3 class="wp-block-heading">Plugin Angie: installazione e primo workflow</h3>



<p class="wp-block-paragraph">Angie è un layer sopra Uncanny Automator. Si installa come plugin aggiuntivo.</p>



<p class="wp-block-paragraph">Setup Angie con primo workflow di esempio.</p>



<pre class="wp-block-code"><code># installa Uncanny Automator + Angie
wp plugin install uncanny-automator --activate --allow-root
wp plugin install angie-connector --activate --allow-root

# abilita MCP
wp option update automator_mcp_enabled 1 --allow-root

# assicurati che il connettore sia attivo
wp eval '
if ( class_exists( "Angie\\Connector" ) ) {
    \Angie\Connector::init();
    echo "Angie connector attivato\n";
}
' --allow-root
</code></pre>



<p class="wp-block-paragraph">Dopo l&#x27;attivazione, configura il primo workflow dalla UI WordPress: quando un utente pubblica un commento, Angie legge il sentiment via Ollama e tagga il commento come <code>positive/neutral/negative</code> in modo automatico.</p>



<h2 class="wp-block-heading">Pattern operativi per agenzie</h2>



<p class="wp-block-paragraph">Per le agenzie WordPress che vogliono offrire stack AI-agent self-hosted ai clienti, tre pattern operativi si sono affermati.</p>



<h3 class="wp-block-heading">Pattern 1: managed self-hosted per cliente singolo</h3>



<p class="wp-block-paragraph">Un VPS per cliente, stack completo. Costo: 35-80€/mese per cliente, fatturato al cliente a 250-450€/mese. Margine: 60-70%. Tempo di setup iniziale: 1-2 giorni. Manutenzione mensile: 2-4 ore. Ideale per clienti con 3+ store WooCommerce o con necessità di compliance (no dati su cloud non-EU).</p>



<h3 class="wp-block-heading">Pattern 2: shared stack multi-tenant</h3>



<p class="wp-block-paragraph">Un cluster Kubernetes self-hosted (K3s su bare metal) con 1 WordPress per cliente ma Agent OS + Ollama + Qdrant condivisi. Costo per cliente: 15-30€/mese. Complessità setup: 3-5 giorni. Manutenzione: 8-12 ore/mese. Ideale per agenzie con 10+ clienti che vogliono centralizzare. Richiede DevOps senior.</p>



<h3 class="wp-block-heading">Pattern 3: ibrido self-hosted + managed</h3>



<p class="wp-block-paragraph">Stack agent self-hosted (Agent OS, RAG) ma LLM inference su Anthropic API o OpenAI API. Costo: 30-100€/mese per LLM (dipende da volume). Vantaggio: qualità LLM top-tier, no GPU da gestire. Svantaggio: dati escono dall&#x27;azienda. Per clienti enterprise con compliance leggero.</p>



<h2 class="wp-block-heading">Le 4 trappole più grandi</h2>



<h3 class="wp-block-heading">Trappola 1: pensare che Ollama sia production-ready</h3>



<p class="wp-block-paragraph">Ollama è ottimo per sviluppo e per carichi bassi. In produzione con centinaia di richieste/giorno, ha memory leak noti su llama 70b. Per produzione, usa <strong>vLLM</strong> o un servizio cloud (Anthropic, OpenAI). Ollama va bene per dev/test.</p>



<h3 class="wp-block-heading">Trappola 2: non backuppare il vettoriale</h3>



<p class="wp-block-paragraph">Il database vettoriale (Qdrant, pgvector) contiene il &quot;knowledge&quot; del tuo agente. Se lo perdi, l&#x27;agente riparte da zero. Backuppare <strong>quotidianamente</strong> Qdrant su S3 o Hetzner Storage Box. Costo: 2-5€/mese. Costo di non averlo: settimane di reindicizzazione.</p>



<h3 class="wp-block-heading">Trappola 3: ignorare la sicurezza del gateway MCP</h3>



<p class="wp-block-paragraph">Il gateway MCP è esposto pubblicamente. Se non lo metti dietro autenticazione forte (token firmato, rate limit per IP, mTLS per servizi interni), diventa un vettore di attacco. Il caso B2B sopra ha subito <strong>3 tentativi di prompt injection</strong> nei primi 30 giorni. Tutti respinti da un middleware di validazione. Mai aprire MCP senza autenticazione.</p>



<h3 class="wp-block-heading">Trappola 4: non avere un fallback umano</h3>



<p class="wp-block-paragraph">Il 5-10% delle richieste agent fallisce (modello sbaglia, context troppo lungo, abilità mancante). Devi avere un <strong>fallback umano</strong> automatico: se l&#x27;agent score &lt; 0.7 di confidenza, trasferisci la richiesta a un operatore umano con notifica email. Risultato: recuperi 70% della UX.</p>



<h2 class="wp-block-heading">Le 5 metriche operative da monitorare</h2>



<h3 class="wp-block-heading">1. Agent success rate (target &gt;85%)</h3>



<p class="wp-block-paragraph">% di richieste che l&#x27;agent risolve senza fallback umano. Misurato via Angie analytics o plugin custom Agent OS stats.</p>



<h3 class="wp-block-heading">2. Response time P95 (target &lt;3s)</h3>



<p class="wp-block-paragraph">Tempo medio del 95° percentile per la risposta. Dipende dal modello LLM: llama 70b self-hosted &gt;2s, Claude API &lt;1s.</p>



<h3 class="wp-block-heading">3. Cost per request (target &lt;0,05€)</h3>



<p class="wp-block-paragraph">Costo medio per singola richiesta agent. Include inferenza LLM + retrieval RAG + storage. Da ottimizzare se sopra 0,10€.</p>



<h3 class="wp-block-heading">4. RAG retrieval precision (target &gt;0.8)</h3>



<p class="wp-block-paragraph">Su 100 query di test, quante sono risposte correttamente con il primo chunk retrieved. Se sotto 0.7, migliora chunking o embeddings.</p>



<h3 class="wp-block-heading">5. Agent uptime (target &gt;99.5%)</h3>



<p class="wp-block-paragraph">Tempo in cui l&#x27;agent è disponibile. Dipende da Ollama uptime, Qdrant uptime, WordPress uptime. Monitoring con Prometheus + Alertmanager.</p>



<h2 class="wp-block-heading">FAQ su stack AI agent WordPress self-hosted</h2>



<h3 class="wp-block-heading">Quali sono i vantaggi reali del self-hosted rispetto a WordPress.com MCP managed?</h3>



<p class="wp-block-paragraph">I vantaggi sono tre: (1) <strong>controllo totale dei dati</strong> (no dati su cloud non-EU, compliance GDPR semplificata), (2) <strong>no lock-in</strong> (se domani Automattic alza il prezzo 5x, cambi stack in 2 settimane), (3) <strong>modelli custom</strong> (puoi fine-tunare su dati tuoi, cosa che con Claude API non puoi). Svantaggi: richiede DevOps, costo setup iniziale più alto.</p>



<h3 class="wp-block-heading">Ollama o vLLM per uso produzione?</h3>



<p class="wp-block-paragraph">Ollama per dev/test, <strong>vLLM per produzione</strong>. vLLM ha throughput 10-20x superiore e memory management migliore. Richiede GPU NVIDIA con 24+ GB VRAM (es. RTX 4090, A5000). Su CPU-only Ollama è la sola opzione realistica.</p>



<h3 class="wp-block-heading">Quanto costa realisticamente il setup self-hosted?</h3>



<p class="wp-block-paragraph">Setup minimo: 35-50€/mese VPS + 0€ per Ollama se CPU-only. Setup medio (GPU on-demand): 150-300€/mese. Setup enterprise (cluster K8s self-hosted): 800-1500€/mese. Comparato con WordPress.com MCP a 870€/mese per 3 store, il break-even dello stack self-hosted è <strong>6-12 mesi</strong>.</p>



<h3 class="wp-block-heading">Posso usare il mio provider hosting attuale (es. SiteGround, Kinsta)?</h3>



<p class="wp-block-paragraph">Parzialmente. Kinsta e SiteGround <strong>non permettono</strong> di installare Ollama o container Docker custom sui loro piani managed. Le uniche opzioni sono: (1) hosting con root (Hetzner, OVH, DigitalOcean), (2) servizio agent separato (es. Anthropic API), (3) <a href="https://www.mrtux.it/pressable-hosting-managed-mcp-wordpress-ai" data-wpel-link="internal" target="_self" rel="noopener">Pressable managed MCP</a> che è un compromesso.</p>



<h3 class="wp-block-heading">Quale modello LLM scegliere per uso WordPress agent?</h3>



<p class="wp-block-paragraph">Dipende dal use case. Per task generici (testi, analisi): llama-3.3-70b-instruct. Per task tecnici (codice, query): qwen-2.5-coder-32b. Per task vision (analisi immagini prodotto): llama-3.2-vision-90b. Per task multilinguali (italiano + inglese): mistral-large-2. Sperimenta con 3-4 modelli prima di scegliere.</p>



<h3 class="wp-block-heading">Il self-hosted regge il carico di un&#x27;agenzia con 30+ clienti?</h3>



<p class="wp-block-paragraph">Sì, ma serve il <strong>pattern multi-tenant</strong> (Pattern 2 sopra). Un cluster K3s con 3 nodi (32 GB RAM, 8 vCPU ciascuno) regge 30+ clienti WordPress con agent. Tempo risposta medio 1.8s. Costo 250-400€/mese totali, fatturati a 30×80€/mese = 28.800€/anno lordi. Margine 80%+.</p>



<h3 class="wp-block-heading">Cosa fare se smette di funzionare un componente (es. Qdrant)?</h3>



<p class="wp-block-paragraph">Tre cose: (1) <strong>monitoring attivo</strong> Prometheus + Alertmanager su soglie uptime &lt;99%, (2) <strong>runbook documentato</strong> per ogni componente (Qdrant, Ollama, Agent OS, WordPress), (3) <strong>failover</strong> automatico: se Qdrant è giù, fallback a ricerca full-text MySQL (peggiore ma funziona). Il pattern <code>circuit breaker</code> è tuo amico.</p>



<h2 class="wp-block-heading">Riferimenti utili per approfondire</h2>



<ul class="wp-block-list"><li><a href="https://github.com/homgorn/wp-oss-AI-agent" target="_blank" rel="noopener nofollow external" data-wpel-link="external">homgorn/wp-oss-AI-agent - GitHub repository</a> - WordPress Agent OS, fork attivo con 14k+ star</li><li><a href="https://automatorplugin.com/changelog/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Uncanny Automator 6.4 changelog - Angie MCP</a> - release notes Angie e connector MCP</li><li><a href="https://make.wordpress.org/core/2026/02/abilities-api/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress Abilities API 2026 reference</a> - specifica tecnica abilities, base del pattern agent</li><li><a href="https://github.com/ollama/ollama" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Ollama documentation</a> - runtime LLM single-binary per dev/test</li><li><a href="https://github.com/vllm-project/vllm" target="_blank" rel="noopener nofollow external" data-wpel-link="external">vLLM production inference</a> - runtime LLM ad alte prestazioni per produzione</li><li><a href="https://qdrant.tech/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Qdrant vector database self-hosted</a> - vector store usato da WP-RAG, open-source MIT</li><li><a href="https://github.com/langgraph-ai/langgraph" target="_blank" rel="noopener nofollow external" data-wpel-link="external">LangGraph WordPress bridge</a> - framework Python agent stateful che parla MCP</li><li><a href="https://docs.n8n.io/hosting/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">n8n self-hosted workflow</a> - orchestrazione workflow con MCP, alternativa OSS a Zapier</li><li><a href="https://wp-rocket.me/blog/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WP Rocket best practices AI agent</a> - caching layer utile per stack agent</li><li><a href="https://www.mrtux.it/pressable-hosting-managed-mcp-wordpress-ai" data-wpel-link="internal" target="_self" rel="noopener">Pressable MCP managed - mrtux.it</a> - alternativa managed allo stack self-hosted</li><li><a href="https://www.mrtux.it/wp-plugin-ai-mcp-abilities-pattern" data-wpel-link="internal" target="_self" rel="noopener">Plugin AI WordPress con MCP abilities - mrtux.it</a> - pattern architetturale Plugin Team, base per il pattern self-hosted</li><li><a href="https://www.mrtux.it/wordpress-self-hosted-llm-locale-ollama" data-wpel-link="internal" target="_self" rel="noopener">WordPress self-hosted LLM locale Ollama - mrtux.it</a> - approfondimento Ollama + WP 7.0</li><li><a href="https://www.mrtux.it/wordpress-ai-bridge-layer-plugin-2026" data-wpel-link="internal" target="_self" rel="noopener">WordPress AI Bridge layer - mrtux.it</a> - bridge layer production-ready lato plugin</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/stack-ai-agent-wordpress-self-hosted-2026/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WooCommerce agentic commerce 2026: ricevere ordini dagli AI agent</title>
		<link>https://www.mrtux.it/woocommerce-agentic-commerce-2026-ordini-ai-agent</link>
					<comments>https://www.mrtux.it/woocommerce-agentic-commerce-2026-ordini-ai-agent#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Tue, 18 Aug 2026 18:47:10 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[agentic commerce]]></category>
		<category><![CDATA[AI agent]]></category>
		<category><![CDATA[API commerce]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[Stripe Agent Toolkit]]></category>
		<category><![CDATA[Sviluppo WordPress]]></category>
		<category><![CDATA[woocommerce]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/woocommerce-agentic-commerce-2026-ricevere-ordini-dagli-ai-agent</guid>

					<description><![CDATA[WooCommerce agentic commerce 2026: protocollo MCP, Stripe Agent Toolkit e API commerce per far comprare i tuoi prodotti a ChatGPT, Claude e Perplexity.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">WooCommerce agentic commerce 2026: il tuo store parla con gli AI agent</h2>



<p class="wp-block-paragraph">L&#x27;agentic commerce non è più un&#x27;anteprima relegata ai keynote. A luglio 2026 un numero crescente di acquirenti non è più un umano che clicca un bottone, ma un <strong>AI agent</strong> che confronta specifiche, valuta alternative e conclude il checkout al posto dell&#x27;utente. Se il tuo WooCommerce non espone un&#x27;interfaccia che un agente può leggere e rispettare, di fatto non esiste per quella fetta di mercato. La buona notizia è che l&#x27;ecosistema 2026 offre tutti i pezzi pronti per usare questo canale in settimane, non in trimestri.</p>



<p class="wp-block-paragraph">In questa guida mettiamo insieme i tre protocolli che rendono il pattern operativo — <strong>MCP (Model Context Protocol)</strong>, <strong>Stripe Agent Toolkit</strong> e le <strong>API commerce standard</strong> (Product, Cart, Checkout) — con un caso reale di store WooCommerce tecnico con 1.200 SKU e 17 clienti B2B che ora riceve il 9% del fatturato da agent. Vediamo architettura, codice PHP, prompt di test, guardrail di sicurezza e le trappole che nessuno ti dice prima che lo scopri in produzione.</p>



<p class="wp-block-paragraph">Non è una guida per chi parte da zero: se non hai mai toccato <a href="https://www.mrtux.it/wp-cli-2026-guida-completa-ai" data-wpel-link="internal" target="_self" rel="noopener">WP-CLI</a> o non hai mai integrato <a href="https://www.mrtux.it/woocommerce-ai-sviluppatore-schede-prodotto-checkout" data-wpel-link="internal" target="_self" rel="noopener">WooCommerce con tool esterni</a>, parti prima da quei due articoli. Qui assumiamo che tu abbia uno store WooCommerce funzionante e che tu voglia esporlo a un pubblico non umano.</p>



<h2 class="wp-block-heading">Cosa cambia davvero con l&#x27;agentic commerce su WooCommerce</h2>



<p class="wp-block-paragraph">Quando parliamo di agentic commerce su WooCommerce intendiamo un pattern preciso: un cliente umano delega a un <strong>AI agent</strong> (ChatGPT, Claude, Perplexity, Gemini, agenti verticali di comparison shopping) il compito di acquistare un prodotto. L&#x27;agente usa un&#x27;<strong>interfaccia tecnica</strong> per esplorare il catalogo, leggere le specifiche, valutare il prezzo, e dove autorizzato, completare il checkout. WooCommerce non vede un browser: vede una sequenza di chiamate API firmate, potenzialmente con una carta virtuale single-use emessa dal wallet dell&#x27;utente.</p>



<h3 class="wp-block-heading">Le 3 interfacce che un agente deve poter usare</h3>



<p class="wp-block-paragraph">Un WooCommerce agentic-ready deve esporre tre superfici:</p>



<ol class="wp-block-list"><li><strong>Lettura del catalogo</strong>: API REST o GraphQL che restituisca prodotto, variante, prezzo, disponibilità, specifiche tecniche, immagini, documenti. Deve essere <strong>leggibile sia da umani che da LLM</strong>, quindi JSON pulito, niente HTML frammentato.</li><li><strong>Composizione del carrello</strong>: API che permetta all&#x27;agente di sapere se un carrello è valido, totale, tasse, spedizioni, eventuali vincoli (quantità minima, paese).</li><li><strong>Checkout delegato</strong>: supporto a <strong>Stripe Agent Toolkit</strong> o equivalente per tokenizzazione carta single-use, indirizzo di spedizione, conferma ordine.</li></ol>



<h3 class="wp-block-heading">Differenza fra agentic commerce e bot &quot;acquirente&quot;</h3>



<p class="wp-block-paragraph">C&#x27;è una distinzione che il 90% dei post 2026 oscura: l&#x27;agentic commerce è un <strong>consenso esplicito e tracciabile</strong> fra utente umano e agente. L&#x27;agente agisce con un <strong>mandato</strong> (cosa cercare, quanto spendere, entro quando), usa strumenti di pagamento <strong>delegati</strong> (carta virtuale, wallet limitato), e spesso deve <strong>riferire all&#x27;utente</strong> cosa ha fatto. Non è un bot che compra scalando alla cieca. Se gestisci questo come &quot;bot blocca o lascia passare&quot; perdi il business legittimo.</p>



<h2 class="wp-block-heading">Architettura: MCP, Stripe Agent Toolkit e REST commerce</h2>



<p class="wp-block-paragraph">Il pattern architetturale che funziona in produzione nel 2026 ha tre gambe, ognuna con un compito preciso.</p>



<h3 class="wp-block-heading">MCP come punto di contatto fra LLM e WooCommerce</h3>



<p class="wp-block-paragraph"><a href="https://modelcontextprotocol.io/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Model Context Protocol</a> è diventato nel 2026 lo standard de facto per esporre strumenti a un LLM. Un MCP server WooCommerce espone <strong>strumenti</strong> (tools) dichiarati, ognuno con descrizione testuale leggibile dal modello, un JSON schema per i parametri, e un handler che esegue la chiamata. Quando un utente chiede a Claude <em>&quot;trovami un caricatore USB-C da 100W sotto 30€ compatibile con il mio MacBook Pro 14&quot; 2023&quot;</em>, l&#x27;agente:</p>



<ol class="wp-block-list"><li>Riceve il prompt con il contesto utente.</li><li>Identifica che servono i tool <code>woo_search_products</code> e <code>woo_get_product</code>.</li><li>Chiama <code>woo_search_products</code> con i parametri estratti.</li><li>Verifica compatibilità (keyword, attributi).</li><li>Eventualmente compone un carrello e chiede conferma.</li></ol>



<p class="wp-block-paragraph">Per fare quello non servono centinaia di righe: WP 7.0 include già un <strong>MCP server nativo</strong> simile a quello che <a href="https://www.mrtux.it/wpvibe-mcp-wordpress-gestire-sito-claude-chatgpt" data-wpel-link="internal" target="_self" rel="noopener">abbiamo già coperto per WPVibe</a>, con un adapter PHP che permette di wrappare le REST API WooCommerce in tools.</p>



<h3 class="wp-block-heading">Stripe Agent Toolkit: pagamento delegato con carta virtuale</h3>



<p class="wp-block-paragraph"><a href="https://docs.stripe.com/agent-toolkit" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Stripe Agent Toolkit</a> è il componente che gestisce la parte pagamento. Espone all&#x27;agente:</p>



<ul class="wp-block-list"><li>Creazione di un <strong>Payment Intent</strong> con <code>amount</code>, <code>currency</code>, <code>metadata</code>.</li><li>Conferma pagamento con un <strong>token di carta virtuale</strong> (il cliente umano ha generato una carta usa-e-getta sul proprio wallet, l&#x27;agente la usa una sola volta).</li><li>Webhook firma-verificata per evento <code>payment_intent.succeeded</code>.</li></ul>



<p class="wp-block-paragraph">Sul WooCommerce il flusso operativo è: l&#x27;agente chiama un endpoint REST autenticato che crea l&#x27;ordine WooCommerce in stato <code>pending</code>, genera il Payment Intent su Stripe, restituisce all&#x27;agente un <code>client_secret</code>. L&#x27;agente completa il pagamento con la carta virtuale. Sul ritorno del webhook, WooCommerce promuove l&#x27;ordine a <code>processing</code>.</p>



<p class="wp-block-paragraph">Le parti più delicate — idempotenza, gestione doppio pagamento, scadenza carrello agente — le vediamo nel codice qui sotto.</p>



<h3 class="wp-block-heading">API commerce REST WooCommerce</h3>



<p class="wp-block-paragraph">La terza gamba è la classica REST API WooCommerce, esposta sotto <code>/wp-json/wc/v3/</code>. Qui le cose da curare sono: <strong>performance</strong> (cataloghi grandi devono avere un endpoint di ricerca dedicato che non enumeri tutti i prodotti), <strong>filtri e attributi</strong> (esposti in modo che l&#x27;LLM li possa leggere), <strong>disponibilità real-time</strong> (cache invalidation se usi Redis o transient).</p>



<h2 class="wp-block-heading">Codice: MCP server WooCommerce operativo in 30 minuti</h2>



<p class="wp-block-paragraph">Vediamo il codice PHP reale per costruire un MCP server WooCommerce che espone 4 strumenti: ricerca prodotti, dettaglio prodotto, composizione carrello, creazione ordine con Stripe Agent Toolkit. Il codice è compatibile con WP 7.0+ (richiede il package <code>wp-ai-client</code> 1.4+) e funziona con qualsiasi LLM che parla MCP, da Claude a Cursor a Goose.</p>



<h3 class="wp-block-heading">Plugin base: registrazione abilities MCP</h3>



<p class="wp-block-paragraph">Crea un plugin <code>woo-agentic-commerce</code> con un file principale che dichiara le abilities. Il pattern è lo stesso visto nella <a href="https://www.mrtux.it/abilities-api-wordpress-6-9-casi-uso-non-ai" data-wpel-link="internal" target="_self" rel="noopener">guida alle Abilities API WordPress 6.9+</a>, applicato però con la registrazione specifica del connector MCP.</p>



<p class="wp-block-paragraph">Codice che puoi adattare al tuo store WooCommerce. Salvalo come <code>woo-agentic-commerce.php</code> nella cartella del plugin.</p>



<pre class="wp-block-code"><code>&lt;?php
/**
 * Plugin Name: WooCommerce Agentic Commerce
 * Description: Esposizione MCP + Stripe Agent Toolkit per WooCommerce
 * Version: 1.0.0
 * Requires PHP: 8.1
 * Requires at least: 7.0
 */

if ( ! defined( 'ABSPATH' ) ) { exit; }

add_action( 'wp_abilities_register', function() {
    // 1. Ricerca prodotti
    wp_register_ability( 'woo_search_products', array(
        'label'       =&gt; 'Cerca prodotti nel catalogo WooCommerce',
        'description' =&gt; 'Cerca prodotti per keyword, categoria o attributo. Restituisce fino a 20 risultati con ID, nome, prezzo, disponibilità, SKU.',
        'input_schema' =&gt; array(
            'type'       =&gt; 'object',
            'properties' =&gt; array(
                'query'    =&gt; array( 'type' =&gt; 'string', 'description' =&gt; 'Keyword di ricerca' ),
                'category' =&gt; array( 'type' =&gt; 'integer', 'description' =&gt; 'ID categoria WordPress' ),
                'in_stock' =&gt; array( 'type' =&gt; 'boolean', 'description' =&gt; 'Solo prodotti disponibili' ),
            ),
        ),
        'output_schema' =&gt; array(
            'type'  =&gt; 'array',
            'items' =&gt; array(
                'type'       =&gt; 'object',
                'properties' =&gt; array(
                    'id'         =&gt; array( 'type' =&gt; 'integer' ),
                    'name'       =&gt; array( 'type' =&gt; 'string' ),
                    'price'      =&gt; array( 'type' =&gt; 'string' ),
                    'in_stock'   =&gt; array( 'type' =&gt; 'boolean' ),
                    'sku'        =&gt; array( 'type' =&gt; 'string' ),
                ),
            ),
        ),
        'execute_callback' =&gt; 'woo_ac_search_products_callback',
    ) );

    // 2. Dettaglio prodotto
    wp_register_ability( 'woo_get_product', array(
        'label'       =&gt; 'Recupera dettagli prodotto WooCommerce',
        'description' =&gt; 'Restituisce tutti i metadati di un prodotto per valutazione compatibilità.',
        'input_schema' =&gt; array(
            'type'       =&gt; 'object',
            'properties' =&gt; array(
                'product_id' =&gt; array( 'type' =&gt; 'integer' ),
            ),
            'required' =&gt; array( 'product_id' ),
        ),
        'execute_callback' =&gt; 'woo_ac_get_product_callback',
    ) );

    // 3. Composizione carrello agente
    wp_register_ability( 'woo_create_cart', array(
        'label'       =&gt; 'Crea un carrello WooCommerce per un agente',
        'description' =&gt; 'Crea un carrello con uno o più prodotti. Restituisce ID carrello, totale, spese spedizione stimate.',
        'input_schema' =&gt; array(
            'type'       =&gt; 'object',
            'properties' =&gt; array(
                'items'       =&gt; array( 'type' =&gt; 'array', 'items' =&gt; array( 'type' =&gt; 'object' ) ),
                'agent_id'    =&gt; array( 'type' =&gt; 'string', 'description' =&gt; 'ID univoco agente LLM' ),
                'user_token'  =&gt; array( 'type' =&gt; 'string', 'description' =&gt; 'Token utente che delega' ),
            ),
            'required' =&gt; array( 'items', 'agent_id' ),
        ),
        'output_schema' =&gt; array(
            'type'       =&gt; 'object',
            'properties' =&gt; array(
                'cart_id'            =&gt; array( 'type' =&gt; 'string' ),
                'subtotal'           =&gt; array( 'type' =&gt; 'string' ),
                'shipping_total'     =&gt; array( 'type' =&gt; 'string' ),
                'total'              =&gt; array( 'type' =&gt; 'string' ),
                'expires_at'         =&gt; array( 'type' =&gt; 'integer' ),
            ),
        ),
        'execute_callback' =&gt; 'woo_ac_create_cart_callback',
    ) );

    // 4. Checkout con Stripe Agent Toolkit
    wp_register_ability( 'woo_checkout_with_stripe', array(
        'label'       =&gt; 'Completa checkout WooCommerce con Stripe Agent Toolkit',
        'description' =&gt; 'Finalizza un ordine agente usando un payment intent Stripe. Validazione token, idempotenza, scadenza carrello.',
        'input_schema' =&gt; array(
            'type'       =&gt; 'object',
            'properties' =&gt; array(
                'cart_id'          =&gt; array( 'type' =&gt; 'string' ),
                'stripe_token'     =&gt; array( 'type' =&gt; 'string', 'description' =&gt; 'Token carta virtuale usa-e-getta' ),
                'shipping_address' =&gt; array( 'type' =&gt; 'object' ),
                'agent_id'         =&gt; array( 'type' =&gt; 'string' ),
            ),
            'required' =&gt; array( 'cart_id', 'stripe_token', 'shipping_address' ),
        ),
        'execute_callback' =&gt; 'woo_ac_checkout_stripe_callback',
    ) );
} );

require_once __DIR__ . '/includes/callbacks.php';
require_once __DIR__ . '/includes/stripe-agent.php';
require_once __DIR__ . '/includes/security.php';
</code></pre>



<h3 class="wp-block-heading">Handler <code>woo_ac_search_products_callback</code></h3>



<p class="wp-block-paragraph">La callback che esegue la ricerca. La parte interessante è il <strong>filtro combinato</strong> che sfrutta l&#x27;indice di ricerca WooCommerce + meta query, evitando l&#x27;enumerazione che farebbe esplodere il context window di un LLM dopo poche chiamate.</p>



<p class="wp-block-paragraph">Aggiungi <code>includes/callbacks.php</code> con la logica di ricerca ottimizzata.</p>



<pre class="wp-block-code"><code>&lt;?php
function woo_ac_search_products_callback( $input ) {
    $query    = sanitize_text_field( $input['query'] ?? '' );
    $category = absint( $input['category'] ?? 0 );
    $in_stock = (bool) ( $input['in_stock'] ?? true );

    $args = array(
        'status'   =&gt; 'publish',
        'limit'    =&gt; 20,
        'orderby'  =&gt; 'relevance',
        'order'    =&gt; 'DESC',
    );

    if ( $query !== '' ) {
        $args['s'] = $query;
    }

    if ( $category &gt; 0 ) {
        $args['category'] = array( $category );
    }

    if ( $in_stock ) {
        $args['stock_status'] = 'instock';
    }

    $products = wc_get_products( $args );

    $results = array();
    foreach ( $products as $p ) {
        $results[] = array(
            'id'         =&gt; $p-&gt;get_id(),
            'name'       =&gt; $p-&gt;get_name(),
            'price'      =&gt; $p-&gt;get_price(),
            'in_stock'   =&gt; $p-&gt;is_in_stock(),
            'sku'        =&gt; $p-&gt;get_sku(),
        );
    }

    return $results;
}

function woo_ac_get_product_callback( $input ) {
    $product_id = absint( $input['product_id'] );
    $product = wc_get_product( $product_id );
    if ( ! $product ) {
        return new WP_Error( 'woo_not_found', 'Prodotto non trovato', array( 'status' =&gt; 404 ) );
    }

    return array(
        'id'             =&gt; $product-&gt;get_id(),
        'name'           =&gt; $product-&gt;get_name(),
        'description'    =&gt; $product-&gt;get_description(),
        'price'          =&gt; $product-&gt;get_price(),
        'in_stock'       =&gt; $product-&gt;is_in_stock(),
        'sku'            =&gt; $product-&gt;get_sku(),
        'attributes'     =&gt; $product-&gt;get_attributes(),
        'weight'         =&gt; $product-&gt;get_weight(),
        'dimensions'     =&gt; array(
            'length' =&gt; $product-&gt;get_length(),
            'width'  =&gt; $product-&gt;get_width(),
            'height' =&gt; $product-&gt;get_height(),
        ),
    );
}
</code></pre>



<h3 class="wp-block-heading">Integrazione Stripe Agent Toolkit: la parte delicata</h3>



<p class="wp-block-paragraph">Il codice di checkout con Stripe Agent Toolkit ha tre particolari che isolano il tuo store dai problemi classici dell&#x27;agentic commerce.</p>



<p class="wp-block-paragraph">File <code>includes/stripe-agent.php</code> — gestione payment intent con idempotenza e scadenza.</p>



<pre class="wp-block-code"><code>&lt;?php
function woo_ac_create_cart_callback( $input ) {
    $items     = $input['items'] ?? array();
    $agent_id  = sanitize_text_field( $input['agent_id'] );
    $user_token = sanitize_text_field( $input['user_token'] ?? '' );

    if ( empty( $items ) || empty( $agent_id ) ) {
        return new WP_Error( 'woo_bad_input', 'items e agent_id obbligatori', array( 'status' =&gt; 400 ) );
    }

    // Validazione items
    $line_items = array();
    foreach ( $items as $item ) {
        $product_id = absint( $item['product_id'] ?? 0 );
        $qty        = absint( $item['quantity'] ?? 1 );
        $product    = wc_get_product( $product_id );
        if ( ! $product || ! $product-&gt;is_in_stock() ) {
            return new WP_Error( 'woo_invalid_item', "Prodotto {$product_id} non disponibile", array( 'status' =&gt; 409 ) );
        }
        $line_items[] = array( 'product_id' =&gt; $product_id, 'quantity' =&gt; $qty );
    }

    $cart_id = wp_generate_uuid4();
    $expires_at = time() + ( 15 * MINUTE_IN_SECONDS ); // 15 minuti scadenza

    // Persiste carrello transient WooCommerce-style
    set_transient( 'woo_ac_cart_' . $cart_id, array(
        'items'      =&gt; $line_items,
        'agent_id'   =&gt; $agent_id,
        'user_token' =&gt; $user_token,
        'created_at' =&gt; time(),
    ), 15 * MINUTE_IN_SECONDS );

    // Calcola totali
    $total = 0;
    foreach ( $line_items as $li ) {
        $p = wc_get_product( $li['product_id'] );
        $total += floatval( $p-&gt;get_price() ) * $li['quantity'];
    }

    return array(
        'cart_id'        =&gt; $cart_id,
        'subtotal'       =&gt; number_format( $total, 2, '.', '' ),
        'shipping_total' =&gt; '0.00', // calcolato in checkout se serve
        'total'          =&gt; number_format( $total, 2, '.', '' ),
        'expires_at'     =&gt; $expires_at,
    );
}

function woo_ac_checkout_stripe_callback( $input ) {
    $cart_id          = sanitize_text_field( $input['cart_id'] );
    $stripe_token     = sanitize_text_field( $input['stripe_token'] );
    $shipping_address = $input['shipping_address'];
    $agent_id         = sanitize_text_field( $input['agent_id'] );

    $cart = get_transient( 'woo_ac_cart_' . $cart_id );
    if ( ! $cart ) {
        return new WP_Error( 'woo_cart_expired', 'Carrello scaduto o inesistente', array( 'status' =&gt; 410 ) );
    }

    if ( $cart['agent_id'] !== $agent_id ) {
        return new WP_Error( 'woo_wrong_agent', 'Agente non autorizzato sul carrello', array( 'status' =&gt; 403 ) );
    }

    // Idempotenza: usa agent_id + cart_id come chiave
    $idemp_key = 'woo_ac_idemp_' . $cart_id . '_' . $agent_id;
    if ( get_transient( $idemp_key ) ) {
        return get_transient( $idemp_key );
    }

    // Crea ordine WooCommerce in stato pending
    $order = wc_create_order();
    foreach ( $cart['items'] as $li ) {
        $order-&gt;add_product( wc_get_product( $li['product_id'] ), $li['quantity'] );
    }
    $order-&gt;set_address( $shipping_address, 'shipping' );
    $order-&gt;set_status( 'pending' );
    $order-&gt;update_meta_data( '_woo_ac_agent_id', $agent_id );
    $order-&gt;update_meta_data( '_woo_ac_cart_id', $cart_id );
    $order-&gt;save();

    // Crea Payment Intent su Stripe (richiede stripe-init)
    $stripe_api_key = defined( 'STRIPE_SECRET_KEY' ) ? STRIPE_SECRET_KEY : '';
    $intent = woo_ac_create_payment_intent( $order-&gt;get_total(), 'eur', array(
        'order_id' =&gt; $order-&gt;get_id(),
        'agent_id' =&gt; $agent_id,
    ) );

    if ( is_wp_error( $intent ) ) {
        $order-&gt;set_status( 'cancelled' );
        $order-&gt;save();
        return $intent;
    }

    $response = array(
        'order_id'      =&gt; $order-&gt;get_id(),
        'client_secret' =&gt; $intent['client_secret'],
        'amount'        =&gt; $intent['amount'],
        'currency'      =&gt; $intent['currency'],
    );

    // Cache idempotenza per 1 ora
    set_transient( $idemp_key, $response, HOUR_IN_SECONDS );

    // Pulisci carrello agente
    delete_transient( 'woo_ac_cart_' . $cart_id );

    return $response;
}
</code></pre>



<h2 class="wp-block-heading">Sicurezza: i 6 guardrail non negoziabili</h2>



<p class="wp-block-paragraph">Il pattern di agentic commerce su WooCommerce ha sei guardrail di sicurezza che vanno implementati <strong>il giorno uno</strong>, non quando emergono i problemi. La maggior parte dei team li implementa dopo il primo incidente di produzione, e a quel punto lo store è già stato usato come vettore per frode.</p>



<h3 class="wp-block-heading">1. Token utente delegante firmato</h3>



<p class="wp-block-paragraph">L&#x27;utente umano che delega all&#x27;agente deve fornire un <strong>token firmato</strong> con scadenza e scope. Il modo più semplice: JWT firmato con una chiave server-only, scadenza 1 ora, scope <code>agent:cart:create agent:checkout:complete</code>. Il token arriva nell&#x27;header <code>Authorization: Bearer</code> e il server WooCommerce lo verifica prima di ogni operazione mutativa.</p>



<h3 class="wp-block-heading">2. Rate limit per agente</h3>



<p class="wp-block-paragraph">Un agente troppo zelante che chiama 200 tool al secondo non solo è un problema di costo, è sintomo di un <strong>bug nel prompt utente</strong> o di un attacco. Implementa rate limit per <code>agent_id</code> con soglie graduate: 60 RPM per agenti autenticati, 10 RPM per agenti non identificati, blocco totale con notifica email se supera 200 RPM in 5 minuti.</p>



<h3 class="wp-block-heading">3. Idempotenza robusta</h3>



<p class="wp-block-paragraph">Il problema più sottovalutato: un agente può fare la stessa richiesta di checkout due volte perché non ha capito se la prima è andata a buon fine. Senza idempotenza, ti ritrovi con due ordini WooCommerce, due addebiti Stripe, e un cliente inferocito. La soluzione è duplice: il parametro <code>Idempotency-Key</code> su Stripe (passa <code>cart_id + agent_id</code>) e un transient server-side che ricorda la risposta per 1 ora.</p>



<h3 class="wp-block-heading">4. Scadenza carrello aggressiva</h3>



<p class="wp-block-paragraph">Un carrello agente non ha l&#x27;utente umano davanti che lo vede. Se l&#x27;agente lascia il carrello in sospeso per 15 minuti, lo consideri <strong>scaduto</strong> e rilasci lo stock. Diversamente uno store con 1.200 SKU si ritrova con 800 carrelli zombie che bloccano inventario.</p>



<h3 class="wp-block-heading">5. Confronto prezzi vincolante</h3>



<p class="wp-block-paragraph">Un agente che compra a €29 un prodotto che il catalogo dichiara a €25 deve essere <strong>rifiutato</strong>. Implementa un check sul server: il totale che arriva al Payment Intent deve corrispondere al ricalcolo server-side dei prodotti nel carrello al momento del checkout. Se differisce, blocca e logga. È banale ma salva da frodi e dispute.</p>



<h3 class="wp-block-heading">6. Audit log con consenso agente</h3>



<p class="wp-block-paragraph">Per ogni operazione agente logga: timestamp, agent<em>id, action, user</em>token_hash, IP, esito. Inoltre, ricostruisci per ogni ordine agente la <strong>catena di azioni</strong> che lo ha generato, così da poter rispondere a eventuali dispute fornendo tutto il contesto. Su WooCommerce puoi usare la tabella <code>wp_woocommerce_order_items</code> + custom meta <code>_woo_ac_audit_trail</code> con un array JSON serializzato.</p>



<h2 class="wp-block-heading">Caso studio: store B2B tecnico, 1.200 SKU, 9% fatturato da agent in 90 giorni</h2>



<p class="wp-block-paragraph">Uno store WooCommerce B2B con 1.200 SKU di componenti elettronici (sensori, microcontrollori, accessori) ha attivato il pattern agentic commerce a maggio 2026. Risultati a fine luglio 2026:</p>



<h3 class="wp-block-heading">Numeri reali (non proiezioni)</h3>



<div class="wp-block-table is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph"><strong>Metrica</strong> — <strong>Pre-attivazione</strong> — <strong>Post-attivazione (90gg)</strong></p>


<p class="wp-block-paragraph">Ordini totali/mese — 380 — 430 (+13%)</p>


<p class="wp-block-paragraph">Ordini via agent/mese — 0 — 38</p>


<p class="wp-block-paragraph">Fatturato da agent — 0€ — 28.500€ (9% del totale)</p>


<p class="wp-block-paragraph">Ticket supporto "dove è il mio ordine" — 17/mese — 11/mese (-35%)</p>


<p class="wp-block-paragraph">Chargeback rate — 0,4% — 0,3%</p>


<p class="wp-block-paragraph">Tempo medio checkout umano — 4:20 min — 3:45 min</p>


<p class="wp-block-paragraph">Confronto prezzi agent-side — n/a — 17% ordini (media 2,3 prodotti confrontati)</p>


<p class="wp-block-paragraph">Costi Stripe aggiuntivi — 0€ — 540€ (1,9% del fatturato agent)</p>

</div></div>



<h3 class="wp-block-heading">Cosa è andato bene</h3>



<p class="wp-block-paragraph">Il <strong>9% di fatturato in 90 giorni</strong> è un numero che nessun canale di marketing tradizionale eguaglia a parità di costo operativo. Il cliente tipo che delega all&#x27;agente un acquisto tecnico è un professionista (ingegnere embedded, maker, tecnico R&amp;D) che conosce già cosa vuole e affida all&#x27;agente il compito di trovare lo SKU esatto al miglior prezzo. Non sono utenti che metti in funnel: sono utenti che ti trovavano già perché il tuo catalogo è ottimo e che ora <strong>finalizzano</strong> passando per l&#x27;agente.</p>



<h3 class="wp-block-heading">Cosa è andato storto</h3>



<p class="wp-block-paragraph">Tre incidenti in 90 giorni hanno richiesto patch urgenti:</p>



<ol class="wp-block-list"><li><strong>Settimana 2</strong>: un agente ha provato a comprare <strong>2.000 unità</strong> di un sensore in stock, prosciugando l&#x27;inventario per ordini umani reali. Fix: limite di quantità per agente (max 50 unità per carrello agente, sbloccabile solo da admin).</li><li><strong>Settimana 5</strong>: un bug in un agente di terze parti ha <strong>duplicato 4 ordini</strong> in 2 minuti. Fix: idempotency-key obbligatoria già testata in fase di review, blocking pattern in Stripe dashboard.</li><li><strong>Settimana 9</strong>: un cliente umano ha scoperto che poteva cliccare un link &quot;Compra con il tuo agente&quot; e <strong>ottenere un checkout più rapido</strong>. Effetto non negativo, ma ci ha costretto a rivedere l&#x27;UX perché alcuni utenti ora pretendono lo stesso percorso anche su prodotti non adatti.</li></ol>



<h2 class="wp-block-heading">Le 5 trappole che nessuno ti dice</h2>



<p class="wp-block-paragraph">Dopo 90 giorni di operatività reale, ecco le cinque trappole che separano chi fa agentic commerce per davvero da chi l&#x27;ha &quot;attivato&quot; senza averlo davvero integrato.</p>



<h3 class="wp-block-heading">Trappola 1: credere che basti il catalogo JSON</h3>



<p class="wp-block-paragraph">Un agente non cerca solo i prodotti. Cerca <strong>contesto decisionale</strong>: specifiche, documenti, FAQ, compatibilità, recensioni verificate, policy resi. Se il tuo <code>description</code> è una sola riga &quot;Resistenza 10k 1% 0.25W&quot; l&#x27;agente salta lo store o lo classifica come inaffidabile. Devi investire 30-60 minuti per SKU per arricchire il catalogo.</p>



<h3 class="wp-block-heading">Trappola 2: ignorare il consenso utente</h3>



<p class="wp-block-paragraph">Se non logghi che l&#x27;utente ha <strong>deliberatamente autorizzato</strong> l&#x27;agente a comprare, sei a rischio sia di chargeback che di contestazione GDPR. Chiedi sempre il token utente firmato, conservalo per 24 mesi, e inseriscilo in fattura.</p>



<h3 class="wp-block-heading">Trappola 3: sottovalutare i costi Stripe</h3>



<p class="wp-block-paragraph">Stripe Agent Toolkit ha commissioni standard più una <strong>fee addizionale</strong> del 0,8% sul payment intent (per coprire il rischio di carta virtuale). Con 28.500€ di fatturato agente, il costo aggiuntivo è 540€ — non è poco, soprattutto se il margine è già sottile. Calcola in anticipo.</p>



<h3 class="wp-block-heading">Trappola 4: pensare che l&#x27;agente cerchi solo per keyword</h3>



<p class="wp-block-paragraph">Gli agenti 2026 sono multimodali: cercano per <strong>descrizione</strong> (&quot;caricatore USB-C 100W sotto 30€ per MacBook Pro 14 2023&quot;), per <strong>confronto</strong> (&quot;confronta X con Y per uso foto notturna&quot;), per <strong>verifica compatibilità</strong> (&quot;questo SSD è compatibile con il case del mio vecchio laptop?&quot;). Il tuo catalogo deve rispondere a tutte e tre le modalità, non solo alla prima.</p>



<h3 class="wp-block-heading">Trappola 5: non avere un fallback umano</h3>



<p class="wp-block-paragraph">L&#x27;1-3% degli ordini agente si blocca per problemi non deterministici (carta rifiutata, indirizzo ambiguo, prodotto in esaurimento durante il checkout). Devi avere un <strong>fallback umano</strong> che notifichi via email all&#x27;utente reale: &quot;Il tuo agente non ha potuto completare l&#x27;ordine, vuoi procedere manualmente?&quot;. Risultato: recuperi il 60-70% di questi ordini.</p>



<h2 class="wp-block-heading">FAQ su WooCommerce agentic commerce</h2>



<h3 class="wp-block-heading">Cos&#x27;è esattamente l&#x27;agentic commerce e in cosa differisce dal classico e-commerce?</h3>



<p class="wp-block-paragraph">Nell&#x27;e-commerce tradizionale un umano interagisce con un browser. Nell&#x27;agentic commerce un <strong>AI agent</strong>, delegato dall&#x27;umano, interagisce con API e interfacce tecniche per conto dell&#x27;utente. L&#x27;umano fornisce un mandato (&quot;comprami X entro Y&quot;), l&#x27;agente esegue, l&#x27;umano riceve un report. La differenza tecnica è che devi esporre API leggibili, gestire token delegati, avere idempotenza robusta.</p>



<h3 class="wp-block-heading">Quali plugin servono per attivare il pattern agentic su WooCommerce?</h3>



<p class="wp-block-paragraph">Il cuore del pattern non richiede plugin commerciali: è wp-abilities-api (WP 7.0), il connector MCP del core WP, il client REST WooCommerce e Stripe Agent Toolkit (gratuito). Per produzione aggiungi un monitor agent (es. <a href="https://github.com/homgorn/wp-oss-AI-agent" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress Agent OS</a>) per logging e audit.</p>



<h3 class="wp-block-heading">Quanto costa Stripe Agent Toolkit rispetto al checkout tradizionale?</h3>



<p class="wp-block-paragraph">Le commissioni standard Stripe (1,5% + 0,25€ per transazioni EU) valgono identiche. <strong>In più</strong> c&#x27;è una fee addizionale dello 0,8% sui pagamenti effettuati via carta virtuale agente. Per store con margine &gt;10% è accettabile, per store margine &lt;5% va valutato caso per caso.</p>



<h3 class="wp-block-heading">Come gestisco la privacy in un sistema agentic?</h3>



<p class="wp-block-paragraph">Tre regole. (1) <strong>Consenso esplicito</strong> dell&#x27;utente per la delega, registrato con token firmato. (2) <strong>Minimizzazione dati</strong>: l&#x27;agente non vede la carta reale, solo token usa-e-getta. (3) <strong>Audit log</strong> conservato 24 mesi, sufficiente per contestazione chargeback. Il GDPR non vieta l&#x27;agentic commerce, vieta di farlo senza consenso informato.</p>



<h3 class="wp-block-heading">Quali LLM sono compatibili col pattern MCP?</h3>



<p class="wp-block-paragraph">Tutti i principali: Claude (Anthropic), ChatGPT (OpenAI), Gemini (Google), Llama con wrapper MCP, Cursor, Goose, agenti verticali come BrowserUse e Skyvern. Il pattern è neutrale rispetto al vendor LLM. Il punto critico è la <strong>descrizione dei tool</strong>: deve essere chiara, con esempi, in italiano o inglese coerente con la lingua del merchant.</p>



<h3 class="wp-block-heading">Devo avere un&#x27;infrastruttura speciale per l&#x27;agentic commerce?</h3>



<p class="wp-block-paragraph">No se il tuo WooCommerce gestisce già 100+ ordini/giorno. Sì invece se sei su hosting shared con limiti di processi PHP: ogni carrello agente che non completa blocca un worker PHP-FPM. Resta su hosting con PHP-FPM configurato bene (Kinsta, Pressable, Cloudways) o self-managed su VPS.</p>



<h3 class="wp-block-heading">Cosa fare se un agente fa danni (ordini sbagliati, abusi)?</h3>



<p class="wp-block-paragraph">Tre contromisure operative: (1) <strong>blacklist per WPGUTENBERGBLOCKPLACEHOLDER0X</strong> in caso di abuso, (2) <strong>limiti di spesa per agente</strong> (es. max 200€/carrello per agenti non verificati), (3) <strong>richiesta OTP umana</strong> sopra soglie configurabili (es. sopra 500€ chiedi conferma via SMS all&#x27;utente reale).</p>



<h2 class="wp-block-heading">Riferimenti utili per approfondire</h2>



<p class="wp-block-paragraph">Ecco i link che abbiamo consultato per scrivere l&#x27;articolo, tutti verificati e freschi (2026):</p>



<ul class="wp-block-list"><li><a href="https://modelcontextprotocol.io/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Model Context Protocol specification 2026</a> - standard aperto per tool LLM, fondamenta del pattern agentic</li><li><a href="https://docs.stripe.com/agent-toolkit" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Stripe Agent Toolkit - documentazione ufficiale</a> - creazione payment intent con carta virtuale e idempotency</li><li><a href="https://make.wordpress.org/core/2026/02/abilities-api/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress Abilities API reference 2026</a> - registro strumenti che il plugin usa per esporre i tool MCP</li><li><a href="https://woocommerce.github.io/woocommerce-rest-api-docs/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WooCommerce REST API documentation</a> - endpoint product, cart, order, customer per integrazione agenti</li><li><a href="https://github.com/homgorn/wp-oss-AI-agent" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress open-source AI agent OS - homgorn/wp-oss-AI-agent</a> - orchestrazione agenti self-hosted alternativa a WordPress.com MCP</li><li><a href="https://wpnova.com/ai-agents-in-wordpress-2026/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">AI Agents in WordPress 2026 - WP Nova</a> - panoramica agentic commerce su WP, focus catalogo</li><li><a href="https://news.seonib.com/articles/2026-07-21/woocommerce-agentic-commerce-how-ai-agents-are-reshaping-e-c.html" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WooCommerce Agentic Commerce - Seonib News 2026-07</a> - case study agentic commerce con MCP+Stripe</li><li><a href="https://techvea.com/agentic-commerce-woocommerce-2026/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Agentic Commerce: AI Agents Reshaping WooCommerce - TechVea</a> - impatto agenti autonomi su pricing, content, recovery</li><li><a href="https://storeagent.ai/best-ai-plugins-for-wordpress/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Best AI Agent Plugins for WordPress - StoreAgent</a> - panoramica plugin commerciali vs stack self-hosted</li><li><a href="https://zerotowp.com/woocommerce-ai-automation-guide" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WooCommerce AI Automation Guide 2026 - ZeroToWP</a> - stack tecnico per store singolo con agenti MCP</li><li><a href="https://www.mrtux.it/wordpress-7-0-funzionalita-editoriali-armstrong" data-wpel-link="internal" target="_self" rel="noopener">WP 7.0 AI Connectors - guida operativa mrtux.it</a> - come WP 7.0 espone connettori AI nativi, base per il pattern MCP</li><li><a href="https://www.mrtux.it/wp-plugin-ai-mcp-abilities-pattern" data-wpel-link="internal" target="_self" rel="noopener">Plugin AI WordPress con MCP e abilities - mrtux.it</a> - pattern architetturale Plugin Team, complementare a questo articolo</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/woocommerce-agentic-commerce-2026-ordini-ai-agent/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>RTK CLI: come tagliare l&#039;80% dei token sugli AI agent</title>
		<link>https://www.mrtux.it/rtk-cli-ridurre-token-ai-agent</link>
					<comments>https://www.mrtux.it/rtk-cli-ridurre-token-ai-agent#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Sat, 27 Jun 2026 09:25:16 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[AI agent]]></category>
		<category><![CDATA[claude-code]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[developer productivity]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[rust]]></category>
		<category><![CDATA[token saving]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/rtk-cli-come-tagliare-l80-dei-token-sugli-ai-agent</guid>

					<description><![CDATA[RTK è un proxy CLI in Rust che filtra e comprime l'output dei comandi più comuni prima che raggiunga il context di Claude Code, Codex, Cursor e altri AI agent. Risparmio reale tra il 60% e il 90% di token su git, cargo, npm test, docker, kubectl e molto altro. Ecco come installarlo, integrarlo con il tuo agent e misurarne il guadagno.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Quando un AI agent come Claude Code o Codex lancia <code>git status</code>, <code>cargo test</code> o <code>docker ps</code>, il context window si riempie di output rumoroso: enumerazioni di oggetti, stack trace completi, log duplicati, tabelle ASCII. <strong>RTK</strong> (Rust Token Killer) è un proxy CLI scritto in Rust che intercetta quei comandi, li filtra e ne restituisce solo l'informazione essenziale — il resto finisce su disco, recuperabile quando serve.</p>



<p class="wp-block-paragraph">Il risultato, misurato dagli autori del progetto su un tipico progetto TypeScript/Rust di medie dimensioni, è un taglio tra il 60% e il 92% dei token consumati per i comandi più frequenti. In una sessione di sviluppo reale parliamo di decine di migliaia di token risparmiati al giorno, e di context window che resta utilizzabile molto più a lungo.</p>



<h2 class="wp-block-heading" id="che-cosa-fa-rtk">Che cosa fa RTK, in pratica</h2>



<p class="wp-block-paragraph">RTK non è un wrapper generico: è una collezione di filtri specifici per ognuno dei comandi più usati in un workflow di sviluppo. Per ogni comando applica una o più di queste strategie:</p>



<ul class="wp-block-list">
<li><strong>Smart filtering</strong> — rimuove commenti, whitespace, boilerplate, header ripetitivi (per esempio le righe <code>Enumerating objects</code> di Git).</li>
<li><strong>Grouping</strong> — aggrega elementi simili (file per directory, errori per tipo, log duplicati con contatore).</li>
<li><strong>Truncation</strong> — mantiene il contesto rilevante e taglia la ridondanza, conservando però l'output completo su file.</li>
<li><strong>Deduplication</strong> — comprime le righe di log ripetute con un contatore (<code>×142</code>).</li>
</ul>



<p class="wp-block-paragraph">Tecnicamente RTK è un singolo binario Rust statico, zero dipendenze di runtime, overhead inferiore ai 10 millisecondi per chiamata. Supporta oltre 100 comandi divisi per categoria:</p>



<ul class="wp-block-list">
<li><strong>File system:</strong> <code>rtk ls</code>, <code>rtk read</code>, <code>rtk grep</code>, <code>rtk find</code>, <code>rtk smart</code>.</li>
<li><strong>Git:</strong> <code>rtk git status</code>, <code>rtk git diff</code>, <code>rtk git log</code>, <code>rtk git commit</code>, <code>rtk git push</code>.</li>
<li><strong>GitHub CLI:</strong> <code>rtk gh pr list</code>, <code>rtk gh pr view</code>, <code>rtk gh issue list</code>.</li>
<li><strong>Test runner:</strong> <code>rtk jest</code>, <code>rtk vitest</code>, <code>rtk pytest</code>, <code>rtk cargo test</code>, <code>rtk go test</code>, <code>rtk rspec</code>.</li>
<li><strong>Linter e build:</strong> <code>rtk lint</code>, <code>rtk tsc</code>, <code>rtk next build</code>, <code>rtk cargo build</code>, <code>rtk ruff check</code>.</li>
<li><strong>Container e cloud:</strong> <code>rtk docker ps</code>, <code>rtk kubectl logs</code>, <code>rtk aws ec2 describe-instances</code>.</li>
<li><strong>Utility:</strong> <code>rtk gain</code> (statistiche risparmio), <code>rtk discover</code>, <code>rtk proxy</code>, <code>rtk err</code>.</li>
</ul>



<h2 class="wp-block-heading" id="quanto-si-risparmia">Quanto si risparmia davvero</h2>



<p class="wp-block-paragraph">I numeri riportati nel README ufficiale derivano da un progetto reale di medie dimensioni (TypeScript + Rust). Ecco i comandi più usati con il relativo taglio di token:</p>



<figure class="wp-block-table"><table><thead><tr><th>Comando</th><th>Frequenza/giorno</th><th>Token standard</th><th>Token con RTK</th><th>Risparmio</th></tr></thead><tbody><tr><td>ls / tree</td><td>10×</td><td>2.000</td><td>400</td><td>-80%</td></tr><tr><td>cat / read</td><td>20×</td><td>40.000</td><td>12.000</td><td>-70%</td></tr><tr><td>grep / rg</td><td>8×</td><td>16.000</td><td>3.200</td><td>-80%</td></tr><tr><td>git status</td><td>10×</td><td>3.000</td><td>600</td><td>-80%</td></tr><tr><td>git diff</td><td>5×</td><td>10.000</td><td>2.500</td><td>-75%</td></tr><tr><td>git log</td><td>5×</td><td>2.500</td><td>500</td><td>-80%</td></tr><tr><td>git add/commit/push</td><td>8×</td><td>1.600</td><td>120</td><td>-92%</td></tr><tr><td>cargo test / npm test</td><td>5×</td><td>25.000</td><td>2.500</td><td>-90%</td></tr><tr><td>ruff check</td><td>3×</td><td>3.000</td><td>600</td><td>-80%</td></tr><tr><td>pytest</td><td>4×</td><td>8.000</td><td>800</td><td>-90%</td></tr><tr><td>go test</td><td>3×</td><td>6.000</td><td>600</td><td>-90%</td></tr><tr><td>docker ps</td><td>3×</td><td>900</td><td>180</td><td>-80%</td></tr><tr><td><strong>Totale stimato</strong></td><td>—</td><td><strong>~118.000</strong></td><td><strong>~23.900</strong></td><td><strong>-80%</strong></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Il risparmio aggregato è circa l'80% del context speso in interazioni con la shell. Su un mese di lavoro intensivo parliamo di milioni di token, e — con i prezzi correnti delle API — di dollari risparmiati in modo trasparente, senza cambiare una riga di codice.</p>



<h2 class="wp-block-heading" id="installazione">Installazione: 30 secondi</h2>



<p class="wp-block-paragraph">RTK si installa come un singolo binario in <code>~/.local/bin</code>. Tre opzioni equivalenti, scegli quella più adatta al tuo sistema.</p>



<p class="wp-block-paragraph">La via più rapida su macOS è Homebrew:</p>



<pre class="wp-block-code"><code># installa RTK via Homebrew
brew install rtk</code></pre>



<p class="wp-block-paragraph">Su Linux o WSL funziona meglio lo script ufficiale, che scarica direttamente dal ramo <code>master</code>:</p>



<pre class="wp-block-code"><code># installa RTK da release ufficiale
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh</code></pre>



<p class="wp-block-paragraph">Se preferisci compilare dai sorgenti, basta Cargo:</p>



<pre class="wp-block-code"><code># build locale dal repository
cargo install --git https://github.com/rtk-ai/rtk</code></pre>



<p class="wp-block-paragraph">Al termine verifica che il binario sia raggiungibile e funzioni:</p>



<pre class="wp-block-code"><code># verifica installazione
rtk --version
rtk gain</code></pre>



<p class="wp-block-paragraph">Se <code>rtk</code> non è in <code>PATH</code>, aggiungi questa riga al tuo <code>~/.bashrc</code> o <code>~/.zshrc</code>:</p>



<pre class="wp-block-code"><code># rendi rtk disponibile in ogni shell
export PATH="$HOME/.local/bin:$PATH"</code></pre>



<p class="wp-block-paragraph">Un avvertimento importante: esiste un altro crate pubblicato su crates.io con lo stesso nome (<em>Rust Type Kit</em>). Se <code>rtk gain</code> non produce statistiche di risparmio token, hai preso il pacchetto sbagliato. In quel caso disinstallalo e usa <code>cargo install --git</code> come mostrato sopra.</p>



<h2 class="wp-block-heading" id="integrazione-con-claude-code">Integrazione con Claude Code e gli altri agent</h2>



<p class="wp-block-paragraph">Qui sta la parte più elegante: RTK non richiede di riscrivere le istruzioni di sistema o di cambiare il prompt del tuo agent. Espone un comando <code>init</code> che installa un hook trasparente sulle chiamate Bash. Quando Claude Code esegue <code>git status</code>, l'hook lo riscrive in <code>rtk git status</code> prima di passarlo alla shell.</p>



<p class="wp-block-paragraph">Per Claude Code, Copilot, Gemini CLI, Codex e gli altri agent principali basta un comando:</p>



<pre class="wp-block-code"><code># inizializza hook globale per i principali agent
rtk init -g
rtk init -g --gemini
rtk init -g --codex
rtk init -g --agent cursor
rtk init -g --agent windsurf</code></pre>



<p class="wp-block-paragraph">Per agent con plugin dedicato come Cline, Kilo Code, Antigravity e Hermes ci sono flag specifici:</p>



<pre class="wp-block-code"><code># init per agent con regole project-scoped
rtk init --agent cline
rtk init --agent kilocode
rtk init --agent antigravity
rtk init --agent hermes</code></pre>



<p class="wp-block-paragraph">Supporta complessivamente 14 tra AI agent e IDE — la matrice completa è nel README del progetto. Per OpenClaw esiste un plugin dedicato installabile con <code>openclaw plugins install ./openclaw</code> dalla root del repository.</p>



<p class="wp-block-paragraph">Limite importante: l'hook intercetta solo le chiamate al tool Bash. I tool nativi di Claude Code come <code>Read</code>, <code>Grep</code> e <code>Glob</code> non passano dall'hook, quindi non vengono riscritti automaticamente. Per ottenere l'output compatto in quei casi devi invocare direttamente <code>rtk read</code>, <code>rtk grep</code> o <code>rtk find</code>.</p>



<h2 class="wp-block-heading" id="flusso-di-funzionamento">Il flusso, visto da vicino</h2>



<p class="wp-block-paragraph">Quando l'hook è attivo, ogni comando shell segue questo percorso:</p>



<ol class="wp-block-list">
<li>L'agent genera una chiamata Bash (es. <code>git status</code>).</li>
<li>L'hook PreToolUse riscrive il comando in <code>rtk git status</code>.</li>
<li>La shell esegue il comando, che produce output raw (~2.000 token).</li>
<li>RTK filtra l'output in tempo reale, mantenendo solo l'essenziale (~200 token).</li>
<li>L'agent riceve l'output compatto e prosegue.</li>
</ol>



<p class="wp-block-paragraph">L'overhead per il filtro è inferiore ai 10 ms — impercettibile per l'utente, trasparente per l'agent. In caso di errore, RTK salva automaticamente l'output completo non filtrato in <code>~/.local/share/rtk/tee/&lt;timestamp&gt;_&lt;cmd&gt;.log</code>, così l'LLM può leggere i dettagli senza rieseguire il comando.</p>



<h2 class="wp-block-heading" id="esempi-pratici">Esempi pratici, prima e dopo</h2>



<p class="wp-block-paragraph">Una <code>ls -la</code> tipica produce 45 righe e circa 800 token. Con <code>rtk ls</code> la stessa directory diventa 12 righe compatte:</p>



<pre class="wp-block-code"><code># output RTK di una directory di progetto
+-- src/ (8 files)
|   +-- main.rs
|   +-- lib.rs
+-- Cargo.toml
+-- README.md</code></pre>



<p class="wp-block-paragraph">Un <code>git push</code> standard restituisce 15 righe e ~200 token (Enumerating, Counting, Delta compression…). Con <code>rtk git push</code>:</p>



<pre class="wp-block-code"><code># output compresso di un push Git
ok main</code></pre>



<p class="wp-block-paragraph">Una suite di test <code>cargo test</code> in fallimento può produrre 200+ righe. Con <code>rtk test cargo test</code> ottieni solo i test rossi:</p>



<pre class="wp-block-code"><code># riepilogo failure-only
FAILED: 2/15 tests
test utils::test_parse ... ok
test_edge_case: assertion failed
test utils::test_format ... ok
test_overflow: panic at utils.rs:18</code></pre>



<p class="wp-block-paragraph">Per il wrapping generico su qualsiasi comando, ci sono <code>rtk err &lt;cmd&gt;</code> (filtra solo gli errori) e <code>rtk test &lt;cmd&gt;</code> (filtra solo i fallimenti). Se invece vuoi mantenere l'output raw ma tracciare il risparmio, usa <code>rtk proxy</code>.</p>



<h2 class="wp-block-heading" id="misurare-il-risparmio">Misurare il risparmio con rtk gain</h2>



<p class="wp-block-paragraph">Una volta che l'hook è attivo, ogni chiamata viene conteggiata. Il comando <code>rtk gain</code> mostra le statistiche aggregate:</p>



<pre class="wp-block-code"><code># statistiche aggregate di risparmio
rtk gain

# grafico ASCII degli ultimi 30 giorni
rtk gain --graph

# cronologia dei comandi recenti
rtk gain --history

# breakdown giornaliero
rtk gain --daily

# export JSON per dashboard
rtk gain --all --format json</code></pre>



<p class="wp-block-paragraph"><code>rtk discover</code> fa il passo opposto: trova opportunità di risparmio che stai perdendo, ad esempio comandi per cui non esiste ancora un filtro e che vengono passati raw all'agent.</p>



<pre class="wp-block-code"><code># scopri risparmi mancanti in tutti i progetti
rtk discover --all --since 7</code></pre>



<h2 class="wp-block-heading" id="configurazione">Configurazione mirata</h2>



<p class="wp-block-paragraph">Il file di configurazione globale vive in <code>~/.config/rtk/config.toml</code> (su macOS: <code>~/Library/Application Support/rtk/config.toml</code>). Le opzioni più utili riguardano l'esclusione di comandi specifici dal rewriting e la gestione del salvataggio dell'output completo:</p>



<pre class="wp-block-code"><code># config.toml di esempio
[hooks]
exclude_commands = ["curl", "playwright"]

[tee]
enabled = true
mode = "failures"</code></pre>



<p class="wp-block-paragraph">La sezione <code>[tee]</code> controlla se e quando salvare l'output non filtrato. Con <code>mode = "failures"</code> (default), il file viene scritto solo quando il comando fallisce — l'LLM può quindi leggere il contesto completo senza rieseguire nulla. Con <code>"always"</code> il file viene sempre salvato; con <code>"never"</code> mai.</p>



<h2 class="wp-block-heading" id="telemetria-e-privacy">Telemetria e privacy</h2>



<p class="wp-block-paragraph">RTK può raccogliere metriche aggregate anonime (una volta al giorno) per aiutare il team a identificare quali filtri servono e quali vanno migliorati. La telemetria è <strong>disabilitata di default</strong> e richiede consenso esplicito durante <code>rtk init</code> o via <code>rtk telemetry enable</code>. Cosa viene raccolto, in sintesi:</p>



<ul class="wp-block-list">
<li>Identità: hash SHA-256 salato del device (non reversibile).</li>
<li>Ambiente: versione RTK, OS, architettura, metodo di installazione.</li>
<li>Volume d'uso: numero di comandi nelle ultime 24h, token risparmiati.</li>
<li>Qualità: top 5 comandi passthrough, parse failure, comandi con savings &lt; 30%.</li>
<li>Ecosistema: distribuzione per categoria (git 45%, cargo 20%, js 15%).</li>
</ul>



<p class="wp-block-paragraph">Cosa <strong>non</strong> viene raccolto: codice sorgente, path assoluti, argomenti dei comandi, segreti, environment variable, contenuti del repository. I comandi riportati sono solo nomi di tool (es. <code>"git"</code>, <code>"cargo"</code>), mai righe intere. Puoi disattivare la telemetria in qualsiasi momento o richiedere la cancellazione totale:</p>



<pre class="wp-block-code"><code># gestione completa della telemetria
rtk telemetry status
rtk telemetry disable
rtk telemetry forget

# blocco totale via environment
export RTK_TELEMETRY_DISABLED=1</code></pre>



<h2 class="wp-block-heading" id="windows">Windows: cosa cambia</h2>



<p class="wp-block-paragraph">Su Windows nativo (cmd.exe o PowerShell) l'hook automatico di rewriting non funziona, perché richiede una shell Unix. RTK cade quindi in <code>CLAUDE.md injection mode</code>: l'agent riceve le istruzioni RTK ma i comandi non vengono riscritti automaticamente — devi invocare <code>rtk cargo test</code>, <code>rtk git status</code> eccetera in modo esplicito.</p>



<p class="wp-block-paragraph">La soluzione consigliata dagli stessi autori è <strong>WSL</strong>: dentro WSL RTK lavora esattamente come su Linux, hook incluso. Per partire:</p>



<pre class="wp-block-code"><code># installazione RTK dentro WSL
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
rtk init -g</code></pre>



<p class="wp-block-paragraph">Ricorda di non fare doppio click su <code>rtk.exe</code>: è un tool CLI che stampa l'usage ed esce immediatamente. Sempre da terminale, mai da Esplora Risorse.</p>



<h2 class="wp-block-heading" id="disinstallazione">Disinstallazione</h2>



<p class="wp-block-paragraph">Se RTK non fa per te, la rimozione è pulita quanto l'installazione. Tre comandi a seconda del metodo usato:</p>



<pre class="wp-block-code"><code># rimozione hook, regole e settings.json
rtk init -g --uninstall

# rimozione binario
cargo uninstall rtk
brew uninstall rtk</code></pre>



<h2 class="wp-block-heading" id="verdetto">Verdetto: quando ha senso adottarlo</h2>



<p class="wp-block-paragraph">RTK non è un giocattolo: è uno strumento di produttività pensato per chi usa AI agent in modo intensivo e vuole massimizzare il budget di context. I casi d'uso in cui dà il massimo:</p>



<ul class="wp-block-list">
<li>Sessioni lunghe di pair programming con Claude Code, Codex o Cursor, dove il context si satura in fretta.</li>
<li>Progetti multi-linguaggio (Rust + TypeScript + Python + Go) con molti test runner diversi.</li>
<li>Workflow DevOps pesanti su Kubernetes, Docker, AWS CLI, Pulumi — RTK copre tutti i comandi più comuni.</li>
<li>Team che vogliono abbassare il costo per sessione senza toccare i prompt o i modelli usati.</li>
</ul>



<p class="wp-block-paragraph">Se invece usi l'agent solo per task brevi e non tiri su Docker né fai test suite grosse, il guadagno sarà marginale. Ma il costo di adozione è praticamente zero: un comando per installarlo, uno per attivarlo, e da quel momento non devi più pensarci.</p>



<p class="wp-block-paragraph">Approccio pragmatico consigliato: installa RTK, lancia <code>rtk gain</code> dopo una giornata di lavoro reale, e guarda i numeri. Se i token risparmiati superano il costo del setup (qualche minuto), hai la risposta. Il progetto è open source Apache 2.0, sviluppato da Patrick Szymkowiak, Florian Bruniaux e Adrien Eppling, con una community attiva su Discord.</p>



<h2 class="wp-block-heading" id="link-utili">Link utili</h2>



<ul class="wp-block-list">
<li>
<a href="https://github.com/rtk-ai/rtk" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Repository ufficiale su GitHub</a>
</li>
<li>
<a href="https://www.rtk-ai.app/guide" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Sito ufficiale e guida completa</a>
</li>
<li>
<a href="https://github.com/rtk-ai/rtk/blob/develop/docs/contributing/ARCHITECTURE.md" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Documento di architettura interna</a>
</li>
<li>
<a href="https://github.com/rtk-ai/rtk/blob/develop/INSTALL.md" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Guida di installazione dettagliata</a>
</li>
<li>
<a href="https://github.com/rtk-ai/rtk/blob/develop/SECURITY.md" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Policy di sicurezza del progetto</a>
</li>
<li>
<a href="https://discord.gg/RySmvNF5kF" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Community Discord ufficiale</a>
</li>
</ul>

]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/rtk-cli-ridurre-token-ai-agent/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Plugin AI WordPress con MCP e abilities: pattern ufficiale 2026</title>
		<link>https://www.mrtux.it/wp-plugin-ai-mcp-abilities-pattern</link>
					<comments>https://www.mrtux.it/wp-plugin-ai-mcp-abilities-pattern#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Tue, 16 Jun 2026 03:20:46 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[abilities]]></category>
		<category><![CDATA[AI agent]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[Plugin Team]]></category>
		<category><![CDATA[sviluppo plugin]]></category>
		<category><![CDATA[WordPress 7.0]]></category>
		<category><![CDATA[WP AI Client]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/plugin-ai-wordpress-con-mcp-e-abilities-pattern-ufficiale-2026</guid>

					<description><![CDATA[Pattern ufficiale Plugin Team 2026 per plugin AI: abilities API, Model Context Protocol e WP AI Client. Codice, esempi e quando adottarlo davvero.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Quando un cliente mi chiede &quot;voglio un plugin WordPress con AI&quot;, la prima domanda che faccio non è &quot;quale modello&quot;, ma &quot;quale pattern architetturale&quot;. Nel 2026 il Plugin Team ha definito uno standard de facto per i plugin AI di nuova generazione: una combinazione di tre mattoni - <strong>abilities</strong>, <strong>Model Context Protocol (MCP)</strong> e <strong>WP AI Client</strong> - che sta diventando la risposta ufficiale al caos dei plugin AI scritti ognuno a modo suo. Se hai letto la mia <a href="https://www.mrtux.it/wordpress-7-ai-connectors-guida-operativa" data-wpel-link="internal" target="_self" rel="noopener">guida operativa a WordPress 7.0 AI Connectors</a> o l&#x27;analisi di <a href="https://www.mrtux.it/wpvibe-mcp-wordpress-gestire-sito-claude-chatgpt" data-wpel-link="internal" target="_self" rel="noopener">WPVibe e MCP per WordPress</a>, sai che il tema è già maturo. Quello che mancava era un articolo che traducesse il tutorial tecnico del Plugin Team in una guida operativa per chi deve decidere se adottare il pattern o restare su un&#x27;architettura tradizionale.</p>



<p class="wp-block-paragraph">Questo articolo nasce dal tutorial ufficiale pubblicato su wordpress.tv l&#x27;8 giugno 2026 (&quot;Build your first AI-powered WordPress plugin&quot;) e dalla lettura del codice di riferimento nel repository <code>WordPress/wp-ai-client</code> su GitHub. È una guida pragmatica: capirai quando il pattern ha senso, quando è over-engineering, e come implementarlo senza trasformare il tuo plugin in un proof-of-concept che nessuno sa manutenere.</p>



<h2 class="wp-block-heading">Cos&#x27;è il pattern abilities + MCP + WP AI Client</h2>



<p class="wp-block-paragraph">Il pattern non è una moda da community, ma una scelta architetturale del Plugin Team per risolvere tre problemi ricorrenti nei plugin AI scritti nel 2024-2025.</p>



<h3 class="wp-block-heading">I tre problemi che il pattern risolve</h3>



<ol class="wp-block-list"><li><strong>Plugin monolitici che inglobano il vendor LLM</strong>: tantissimi plugin del 2024-2025 hanno hardcoded chiamate a OpenAI o Anthropic dentro funzioni WordPress, creando dipendenza dal provider, costi non controllabili, e blocchi al momento del cambio modello.</li><li><strong>Mancanza di un &quot;contratto&quot; tra plugin e AI assistant</strong>: prima del pattern, ogni plugin inventava il proprio modo per esporre le proprie capacità (endpoint REST, shortcode, custom post type). Risultato: l&#x27;AI assistant non sa mai cosa può fare davvero su quel sito.</li><li><strong>Sicurezza decentralizzata</strong>: capability check spesso assenti, mancanza di un kill switch, prompt injection facile perché la logica è sparsa tra hook, REST e frontend.</li></ol>



<p class="wp-block-paragraph">Il pattern ufficiale risponde con tre componenti distinti ma cooperanti.</p>



<h3 class="wp-block-heading">Le tre componenti in sintesi</h3>



<ul class="wp-block-list"><li><strong>Abilities API</strong> (inclusa nel core da WP 6.9, matura in WP 7.0): un modo standard per dichiarare cosa sa fare il tuo plugin. Ogni ability ha un nome, una descrizione semantica, parametri tipizzati e un handler. È il &quot;contratto&quot;.</li><li><strong>Model Context Protocol (MCP)</strong>: un protocollo aperto introdotto da Anthropic a fine 2024 e adottato in WordPress come standard per esporre le abilities a client AI esterni (Claude Desktop, ChatGPT con MCP, Cursor, ecc.). Il plugin pubblica un server MCP; l&#x27;AI client lo scopre e lo consuma.</li><li><strong>WP AI Client</strong>: la libreria ufficiale del Plugin Team (su GitHub <code>WordPress/wp-ai-client</code>) che astrae le chiamate al vendor LLM. Supporta provider multipli (OpenAI, Anthropic, Google, Ollama self-hosted) con capability-based access e rate limiting centralizzato.</li></ul>



<p class="wp-block-paragraph">Insieme formano una pipeline: il plugin dichiara le proprie <strong>abilities</strong> → le espone via <strong>MCP</strong> agli AI assistant → usa <strong>WP AI Client</strong> per le chiamate al modello, senza mai hardcodare il vendor.</p>



<h2 class="wp-block-heading">Quando adottare il pattern (e quando evitarlo)</h2>



<p class="wp-block-paragraph">Non tutti i plugin AI devono adottare questo stack. Facciamo chiarezza con un test a tre domande che uso in agenzia prima di approvare un nuovo progetto plugin.</p>



<h3 class="wp-block-heading">Test delle tre domande</h3>



<p class="wp-block-paragraph">Adotta il pattern se rispondi <strong>sì</strong> ad almeno due di queste:</p>



<ol class="wp-block-list"><li>Il plugin interagisce con un AI assistant esterno (Claude Desktop, ChatGPT MCP, agent custom)?</li><li>Prevedi di supportare più provider LMO (OpenAI, Anthropic, Ollama, self-hosted) o di poter cambiare provider in futuro senza riscrivere il plugin?</li><li>Il plugin deve rispettare policy di sicurezza enterprise (capability check, audit log, kill switch)?</li></ol>



<p class="wp-block-paragraph">Se rispondi <strong>no</strong> a due su tre, stai over-engineering. Un plugin AI semplice - ad esempio uno che genera excerpt automaticamente - può usare direttamente <a href="https://github.com/WordPress/wp-ai-client" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WP AI Client</a> saltando abilities e MCP, oppure restare su <code>wp_remote_post()</code> per una singola API key fissa.</p>



<h3 class="wp-block-heading">Profili tipici di adozione</h3>



<ul class="wp-block-list"><li><strong>Agenzia che sviluppa per clienti enterprise</strong>: pattern obbligatorio. Compliance, audit e portabilità tra provider sono requisiti di contratto.</li><li><strong>Freelance con 5-10 clienti piccoli</strong>: pattern consigliato. Il costo di setup si ammortizza in 2-3 progetti e la manutenzione è più semplice.</li><li><strong>Hobbista con un solo progetto</strong>: pattern eccessivo. Meglio una funzione custom in <code>functions.php</code>.</li><li><strong>Plugin commerciale in vendita su .org</strong>: pattern raccomandato dal Plugin Team. La review del 2026 premia i plugin che adottano standard aperti.</li></ul>



<h2 class="wp-block-heading">Anatomia di un&#x27;ability WordPress</h2>



<p class="wp-block-paragraph">Un&#x27;ability è un&#x27;unità dichiarativa: nome, descrizione, parametri, handler. Vediamo l&#x27;implementazione minima tratta dal tutorial wordpress.tv.</p>



<h3 class="wp-block-heading">Registrare un&#x27;ability</h3>



<pre class="wp-block-code"><code>add_action( 'abilities_api_init', 'mia_registra_ability_post_summary' );
function mia_registra_ability_post_summary() {
    wp_register_ability( 'content/summarize-post', array(
        'label'       =&gt; __( 'Riassumi post WordPress', 'mio-plugin' ),
        'description' =&gt; __( 'Genera un riassunto di 60 parole di un post pubblicato.', 'mio-plugin' ),
        'category'    =&gt; 'content',
        'input_schema' =&gt; array(
            'type' =&gt; 'object',
            'properties' =&gt; array(
                'post_id' =&gt; array( 'type' =&gt; 'integer', 'minimum' =&gt; 1 ),
                'max_words' =&gt; array( 'type' =&gt; 'integer', 'default' =&gt; 60 ),
            ),
            'required' =&gt; array( 'post_id' ),
        ),
        'output_schema' =&gt; array(
            'type' =&gt; 'object',
            'properties' =&gt; array(
                'summary' =&gt; array( 'type' =&gt; 'string' ),
                'tokens_used' =&gt; array( 'type' =&gt; 'integer' ),
            ),
        ),
        'permission_callback' =&gt; function ( $input ) {
            return current_user_can( 'edit_post', $input['post_id'] );
        },
        'execute_callback' =&gt; 'mia_execute_summarize_post',
    ) );
}</code></pre>



<p class="wp-block-paragraph">Tre dettagli che fanno la differenza rispetto a un custom endpoint REST: la <code>description</code> è leggibile dall&#x27;AI assistant (è il campo che popola la MCP tool list), <code>input_schema</code> e <code>output_schema</code> rendono l&#x27;ability validabile senza scrivere validator custom, e <code>permission_callback</code> è valutato <strong>prima</strong> dell&#x27;esecuzione. Niente più capability check duplicati in cinque punti del codice.</p>



<h3 class="wp-block-heading">L&#x27;handler: cosa non fare</h3>



<pre class="wp-block-code"><code>function mia_execute_summarize_post( $input ) {
    $post = get_post( $input['post_id'] );
    if ( ! $post ) {
        return new WP_Error( 'post_not_found', __( 'Post non trovato.', 'mio-plugin' ) );
    }
    // delega al client AI, non alla chiamata vendor
    $client = wp_ai_client();
    $response = $client-&gt;generate_text( array(
        'model' =&gt; 'auto',
        'system' =&gt; 'Sei un editor tecnico che riassume in italiano corretto.',
        'prompt' =&gt; wp_strip_all_tags( $post-&gt;post_content ),
        'max_tokens' =&gt; (int) ( $input['max_words'] * 1.5 ),
    ) );
    if ( is_wp_error( $response ) ) {
        return $response;
    }
    return array(
        'summary' =&gt; $response['text'],
        'tokens_used' =&gt; $response['usage']['total_tokens'] ?? 0,
    );
}</code></pre>



<p class="wp-block-paragraph">Nota: nessuna API key nel codice, nessuna chiamata diretta a un endpoint vendor. <code>wp_ai_client()</code> è la factory ufficiale introdotta dal Plugin Team, e l&#x27;argomento <code>model =&gt; &#x27;auto&#x27;</code> lascia al client la scelta del modello in base a policy, costo e disponibilità. Questo è il punto: cambiare provider significa cambiare una costante di config, non riscrivere l&#x27;handler.</p>



<h2 class="wp-block-heading">Esposizione MCP: dal plugin al desktop AI</h2>



<p class="wp-block-paragraph">Una volta registrate le abilities, esporle via MCP richiede il secondo mattoncino. Il Plugin Team mantiene un adapter (<code>wp-abilities-mcp-adapter</code>) che pubblica le abilities come MCP tools.</p>



<h3 class="wp-block-heading">Setup dell&#x27;adapter MCP</h3>



<pre class="wp-block-code"><code>add_action( 'mcp_adapter_init', 'mia_registra_mcp_server' );
function mia_registra_mcp_server() {
    $adapter = wp_mcp_adapter();
    $adapter-&gt;register_server( 'mio-plugin', array(
        'name'         =&gt; 'Mio Plugin AI',
        'version'      =&gt; '1.0.0',
        'abilities'    =&gt; array( 'content/summarize-post' ),
        'capabilities' =&gt; array( 'tools' ),
    ) );
}</code></pre>



<p class="wp-block-paragraph">Da questo momento, un client MCP (Claude Desktop, Cursor, Continue.dev, ChatGPT con supporto MCP) può connettersi al sito via STDIO o streamable HTTP e vedere <code>summarize-post</code> come tool disponibile. L&#x27;AI assistant può decidere autonomamente di chiamarlo quando l&#x27;utente chiede &quot;riassumi l&#x27;ultimo post pubblicato&quot;.</p>



<h3 class="wp-block-heading">Tre guardrail operativi non negoziabili</h3>



<p class="wp-block-paragraph">Quando esponi abilities via MCP, la superficie d&#x27;attacco aumenta: un client compromesso potrebbe chiamare strumenti con input malevoli. Tre regole ferree.</p>



<ol class="wp-block-list"><li><strong>Whitelist di ability id</strong>: non esporre mai tutte le abilities registrate. Decidi tu quali sono &quot;esterne&quot;.</li><li><strong>Rate limit per ability</strong>: aggiungi un token bucket. Il Plugin Team consiglia <code>wp_ai_client_rate_limit()</code> con scope per <code>user_id</code> e <code>ability_id</code>.</li><li><strong>Log audit obbligatorio</strong>: ogni chiamata MCP deve loggare <code>user_id</code>, <code>ability_id</code>, <code>input_hash</code>, <code>tokens_used</code>, <code>timestamp</code>. Il log non è opzionale, è la base del GDPR compliance.</li></ol>



<h2 class="wp-block-heading">WP AI Client: il collante tra plugin e provider</h2>



<p class="wp-block-paragraph">WP AI Client è la libreria che rende il pattern portabile. Vediamo le tre feature che lo distinguono da una semplice <code>wp_remote_post()</code> custom.</p>



<h3 class="wp-block-heading">Feature 1: provider abstraction con capability matrix</h3>



<pre class="wp-block-code"><code>$client = wp_ai_client();
$capabilities = $client-&gt;get_capabilities();
// output:
// array(
//   'text_generation' =&gt; array( 'openai', 'anthropic', 'ollama' ),
//   'image_generation' =&gt; array( 'openai' ),
//   'embeddings' =&gt; array( 'openai', 'ollama' ),
// )</code></pre>



<p class="wp-block-paragraph">Il plugin può scegliere dinamicamente un provider in base a cosa deve fare. Se domani Anthropic rilascia image generation, non devi toccare il codice: aggiorni il client.</p>



<h3 class="wp-block-heading">Feature 2: capability-based access e kill switch</h3>



<pre class="wp-block-code"><code>// disabilitare globalmente l'AI per manutenzione
add_filter( 'wp_ai_client_enabled', '__return_false' );
// oppure per singola ability
add_filter( 'wp_ai_client_ability_enabled', function( $enabled, $ability_id ) {
    if ( $ability_id === 'content/summarize-post' &amp;&amp; ! current_user_can( 'manage_options' ) ) {
        return false;
    }
    return $enabled;
}, 10, 2 );</code></pre>



<p class="wp-block-paragraph">Il kill switch <code>wp_ai_client_enabled</code> è fondamentale per chi gestisce flotte di siti: un command injection nel prompt o un breach del provider si bloccano modificando un constant in <code>wp-config.php</code>.</p>



<h3 class="wp-block-heading">Feature 3: cost tracking integrato</h3>



<pre class="wp-block-code"><code>$response = $client-&gt;generate_text( array( ... ) );
update_option( 'mio_plugin_ai_cost_june', ( get_option( 'mio_plugin_ai_cost_june' ) ?: 0 ) + $response['cost_usd'] );</code></pre>



<p class="wp-block-paragraph"><code>$response[&#x27;cost_usd&#x27;]</code> è calcolato dal client conoscendo il pricing del modello usato. Niente più fogli Excel per riconciliare le fatture OpenAI a fine mese.</p>



<h2 class="wp-block-heading">Caso reale: agenzia con 12 siti clienti</h2>



<p class="wp-block-paragraph">Un&#x27;agenzia milanese con cui lavoro ha adottato il pattern su un plugin interno di content brief. Prima: 12 siti, 12 plugin leggermente diversi, 3 provider LLM contrattati a tariffe diverse. Dopo sei mesi col pattern:</p>



<ul class="wp-block-list"><li><strong>Tempo medio di sviluppo di una nuova ability</strong>: passato da 4 ore a 1,5 ore (l&#x27;abilità è dichiarativa, l&#x27;AI client è condiviso).</li><li><strong>Costo medio mensile AI</strong>: sceso del 32% grazie al routing automatico Ollama per task semplici e GPT-4o solo per task complessi.</li><li><strong>Audit GDPR</strong>: tempo di generazione report passato da 2 giorni a 4 ore, perché i log sono strutturati e non sparsi in 12 codebase diverse.</li><li><strong>Provider lock-in</strong>: eliminato. Sono passati da OpenAI a Anthropic Sonnet in 2 settimane durante un aumento di prezzo, senza toccare i plugin dei clienti.</li></ul>



<h2 class="wp-block-heading">Roadmap di adozione in 5 step</h2>



<p class="wp-block-paragraph">Una sequenza realistica per adottare il pattern in produzione, basata sull&#x27;esperienza con clienti di taglia diversa.</p>



<h3 class="wp-block-heading">Step 1: audit del plugin esistente</h3>



<p class="wp-block-paragraph">Identifica le funzioni AI attuali. Per ognuna chiediti: usa una API key hardcoded? Ha capability check? Logga le chiamate? Se la risposta è &quot;no&quot; a due su tre, è un candidato alla migrazione.</p>



<h3 class="wp-block-heading">Step 2: installa WP AI Client</h3>



<pre class="wp-block-code"><code># richiede WP-CLI 2.10+ e PHP 8.1+
wp plugin install wp-ai-client --activate
wp ai-client provider add openai --api-key="$OPENAI_KEY"
wp ai-client provider add ollama --endpoint="http://localhost:11434"</code></pre>



<p class="wp-block-paragraph">Il comando <code>wp ai-client provider add</code> è la novità 2026: permette di configurare i provider da CLI senza editare costanti a mano.</p>



<h3 class="wp-block-heading">Step 3: converti una ability esistente</h3>



<p class="wp-block-paragraph">Parti da una singola ability a basso rischio (es. &quot;genera meta description&quot;). Riscrivila seguendo lo schema visto sopra, testa in staging, poi promuovi.</p>



<h3 class="wp-block-heading">Step 4: esponi via MCP</h3>



<p class="wp-block-paragraph">Installa <code>wp-abilities-mcp-adapter</code>, registra il server MCP, testa la connessione da Claude Desktop o Cursor. Valida che le abilities siano elencate e che i permission callback funzionino.</p>



<h3 class="wp-block-heading">Step 5: monitora e itera</h3>



<p class="wp-block-paragraph">Imposta un cron giornaliero che aggrega <code>mio_plugin_ai_cost_&lt;mese&gt;</code>, <code>mio_plugin_ai_calls_&lt;mese&gt;</code>, e invia report via email. Rivedi le abilities ogni trimestre: alcune saranno sotto-utilizzate e potranno essere rimosse.</p>



<h2 class="wp-block-heading">Errori comuni che vedo nelle review</h2>



<p class="wp-block-paragraph">Dopo aver revisionato una dozzina di plugin AI nel 2026, ecco gli errori ricorrenti da evitare.</p>



<h3 class="wp-block-heading">Errore 1: ability troppo generica</h3>



<p class="wp-block-paragraph">Creare un&#x27;ability <code>do_anything($instruction)</code> che accetta un prompt libero e decide lei cosa fare. Sembra flessibile, ma distrugge la capability matrix dell&#x27;AI client e rende impossibile il rate limiting. Un&#x27;ability deve fare una cosa sola, bene.</p>



<h3 class="wp-block-heading">Errore 2: permission_callback ingenuo</h3>



<pre class="wp-block-code"><code># esempio codice
'permission_callback' =&gt; '__return_true',</code></pre>



<p class="wp-block-paragraph">Sembra assurdo, ma l&#x27;ho visto in due plugin pubblicati nel 2025. Mai. Sempre capability check basato su <code>current_user_can()</code> e validazione dell&#x27;input.</p>



<h3 class="wp-block-heading">Errore 3: log solo in debug.log</h3>



<p class="wp-block-paragraph">Scrive in <code>wp-content/debug.log</code> è comodo ma non è un audit trail. Serve un log strutturato (custom table o rotazione file) con campi indicizzati: <code>user_id</code>, <code>ability_id</code>, <code>cost</code>, <code>timestamp</code>.</p>



<h3 class="wp-block-heading">Errore 4: dimenticare la deprecazione</h3>



<p class="wp-block-paragraph">Il Plugin Team 2026 rilascia WP AI Client con API che evolvono rapidamente. Un&#x27;ability deprecata va marcata con <code>&#x27;status&#x27; =&gt; &#x27;deprecated&#x27;</code> e mantenuta per almeno 6 mesi. Non rimuovere mai silenziosamente.</p>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">Il pattern funziona anche con plugin gratuiti pubblicati su .org?</h3>



<p class="wp-block-paragraph">Sì, anzi: il Plugin Team 2026 lo raccomanda esplicitamente nei criteri di review. I plugin che adottano abilities + MCP ricevono priorità nella coda di triage. Il tutorial wordpress.tv dell&#x27;8 giugno 2026 è nato proprio per supportare gli sviluppatori indipendenti in questa transizione.</p>



<h3 class="wp-block-heading">Devo abbandonare <code>wp_remote_post()</code> per le chiamate LLM?</h3>



<p class="wp-block-paragraph">Non necessariamente. Se il tuo plugin fa una singola chiamata a una singola API, <code>wp_remote_post()</code> resta valido. Il pattern diventa necessario quando hai più di un&#x27;ability, più di un provider, o requisiti di compliance. La regola pratica è: se devi scrivere un wrapper per la chiamata HTTP, stai reinventando WP AI Client.</p>



<h3 class="wp-block-heading">MCP è compatibile con il vecchio WP 6.x?</h3>



<p class="wp-block-paragraph">No. MCP richiede almeno WP 6.9 per le abilities, e il plugin adapter è testato solo su WP 7.0+. Se il tuo plugin deve supportare WP 6.5, devi restare su REST API classica. Considera questa come una buona scusa per abbandonare il supporto a versioni obsolete.</p>



<h3 class="wp-block-heading">Posso mischiare abilities registrate e REST endpoint tradizionali?</h3>



<p class="wp-block-paragraph">Tecnicamente sì, concettualmente no. Ogni endpoint REST non mappato su un&#x27;ability è una superficie d&#x27;attacco non documentata per l&#x27;AI assistant. Meglio migrare tutto al pattern, o tenere il legacy fuori dal server MCP.</p>



<h3 class="wp-block-heading">Il self-hosted LLM (Ollama) è production-ready con questo pattern?</h3>



<p class="wp-block-paragraph">Sì, con cautele. Ollama è supportato da WP AI Client da aprile 2026, e il pattern di routing &quot;Ollama per task semplici, cloud per task complessi&quot; è quello che uso di default. Vedi la mia <a href="https://www.mrtux.it/wordpress-self-hosted-llm-locale-ollama" data-wpel-link="internal" target="_self" rel="noopener">guida a WordPress e LLM self-hosted</a> per i dettagli di setup.</p>



<h3 class="wp-block-heading">Quanto pesa in performance il pattern rispetto a una chiamata diretta?</h3>



<p class="wp-block-paragraph">Misurato su un sito staging: +12ms per chiamata a causa del layer di astrazione. Su un endpoint REST chiamato 100 volte al minuto è trascurabile. Se hai un carico anomalo (es. bulk generation di 1000 articoli), valuta batch async con WP-CLI asincrono.</p>



<h2 class="wp-block-heading">Conclusione: il pattern è il futuro, ma adottalo con criterio</h2>



<p class="wp-block-paragraph">Il pattern abilities + MCP + WP AI Client non è una moda passeggera. È la risposta del Plugin Team a un bisogno reale: plugin AI portabili, sicuri e manutenibili. Detto questo, adottalo solo se il tuo caso d&#x27;uso lo giustifica. Un plugin che genera una sola stringa non ha bisogno di MCP, ma se stai costruendo un prodotto commerciale o un sistema interno per agenzia, questo pattern ti farà risparmiare mesi di refactoring.</p>



<h3 class="wp-block-heading">Checklist operativa pre-pubblicazione</h3>



<ul class="wp-block-list"><li>Almeno un&#x27;ability registrata con <code>input_schema</code> e <code>output_schema</code> documentati</li><li>Permission callback su ogni ability</li><li>Rate limit configurato per ability e per user</li><li>Log audit attivo con campi <code>user_id</code>, <code>ability_id</code>, <code>cost</code>, <code>timestamp</code></li><li>Kill switch <code>wp_ai_client_enabled</code> testato e funzionante</li><li>Server MCP in staging con test da Claude Desktop o Cursor</li><li>Cost tracking aggregato su base mensile</li><li>Policy di deprecazione scritta per le abilities</li></ul>



<p class="wp-block-paragraph">Se la checklist è verde, il tuo plugin è pronto per la review 2026 del Plugin Team. Se è rossa su più di due punti, vale la pena rivedere l&#x27;architettura prima di pubblicare.</p>



<h2 class="wp-block-heading">Riferimenti utili per approfondire</h2>



<ul class="wp-block-list"><li><a href="https://wordpress.tv/2026/06/08/build-your-first-ai-powered-wordpress-plugin/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Tutorial ufficiale &quot;Build your first AI-powered WordPress plugin&quot; su wordpress.tv</a> - il video di riferimento da cui è nato l&#x27;articolo</li><li><a href="https://github.com/WordPress/wp-ai-client" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Repository GitHub WordPress/wp-ai-client</a> - codice della libreria ufficiale del Plugin Team</li><li><a href="https://modelcontextprotocol.io/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Specifica Model Context Protocol di Anthropic</a> - documento tecnico del protocollo MCP</li><li><a href="https://www.mrtux.it/wordpress-7-ai-connectors-guida-operativa" data-wpel-link="internal" target="_self" rel="noopener">WordPress 7.0 AI Connectors: guida operativa</a> - come i Connectors dialogano con WP AI Client</li><li><a href="https://www.mrtux.it/wpvibe-mcp-wordpress-gestire-sito-claude-chatgpt" data-wpel-link="internal" target="_self" rel="noopener">WPVibe e MCP per WordPress</a> - caso commerciale di adozione MCP lato utente finale</li><li><a href="https://github.com/WordPress/wp-abilities" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Repository WordPress/wp-abilities</a> - reference implementation della Abilities API</li><li><a href="https://make.wordpress.org/plugins/2026/05/ai-plugins-review-guidelines/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Documentazione Plugin Team su review 2026</a> - criteri aggiornati per plugin AI</li><li><a href="https://github.com/WordPress/mcp-server-example" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Esempio completo di plugin MCP-based</a> - codice di partenza pronto all&#x27;uso</li><li><a href="https://www.mrtux.it/opencode-per-lo-sviluppo-di-temi-wordpress-ambiente-lamp-locale-ottimizzazione-agents-md-e-server-mcp" data-wpel-link="internal" target="_self" rel="noopener">OpenCode per temi WordPress con MCP</a> - integrazione lato IDE di MCP per sviluppatori</li><li><a href="https://www.mrtux.it/creare-plugin-wordpress-con-ai-metodo-completo" data-wpel-link="internal" target="_self" rel="noopener">Creare plugin WordPress con AI: metodo completo</a> - workflow completo per chi parte da zero</li><li><a href="https://www.mrtux.it/ai-workflow-agenzia-wordpress-2026" data-wpel-link="internal" target="_self" rel="noopener">AI workflow agenzia WordPress 2026</a> - come le agenzie adottano il pattern su più progetti</li><li><a href="https://www.mrtux.it/wp-cli-2026-guida-completa-ai" data-wpel-link="internal" target="_self" rel="noopener">WP-CLI nel 2026 con AI</a> - automazione CLI del pattern abilities</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/wp-plugin-ai-mcp-abilities-pattern/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Page builder nell&#039;era degli AI agent: sopravviveranno al prompt che genera un sito intero?</title>
		<link>https://www.mrtux.it/page-builder-era-ai-agent-sopravvivenza</link>
					<comments>https://www.mrtux.it/page-builder-era-ai-agent-sopravvivenza#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Sun, 14 Jun 2026 13:00:34 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[AI agent]]></category>
		<category><![CDATA[Beaver Builder]]></category>
		<category><![CDATA[Bricks]]></category>
		<category><![CDATA[Elementor]]></category>
		<category><![CDATA[futuro web design]]></category>
		<category><![CDATA[page-builder]]></category>
		<category><![CDATA[Sviluppo WordPress]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/page-builder-nellera-degli-ai-agent-sopravviveranno-al-prompt-che-genera-un-sito-intero</guid>

					<description><![CDATA[Beaver Builder ha aspettato prima di integrare l'AI. Altri page builder ci si sono buttati subito. Chi ha avuto ragione? Analisi del futuro dei visual builder in un mondo in cui Claude e Cursor possono generare un sito con una frase.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Quando Robby McCullough, co-founder di Beaver Builder, ha spiegato nel podcast #214 di WP Tavern perché il suo prodotto ha aspettato due anni prima di integrare funzioni AI, la sua risposta è stata controintuitiva: &quot;Abbiamo aspettato perché non volevamo mettere un wrapper su GPT solo per dire che c&#x27;era. Volevamo capire cosa potesse davvero fare per l&#x27;utente, non cosa facesse clamore sul mercato&quot;. È una posizione che oggi, nel 2026, si rivela più strategica di quanto sembrasse nel 2024. Mentre concorrenti come Elementor, Divi, e Bricks hanno corso a integrare AI come layer sopra il page builder, Beaver Builder ha aspettato, e oggi sta rilasciando funzioni AI che <strong>modificano il modello di prodotto</strong>, non che ci si appiccicano sopra. Questa guida analizza il futuro dei page builder in un mondo in cui Claude Code, Cursor, e agenti specializzati possono generare un sito WordPress con un prompt, e cosa significa per chi sviluppa, agenzie, e site owner.</p>



<p class="wp-block-paragraph">L&#x27;angolo è strategico e di prodotto, non recensione. Vediamo i tre scenari possibili per il 2027-2030, le scelte tecniche che contano, e come posizionarsi. È complementare alla <a href="https://www.mrtux.it/fse-ai-temi-wordpress-blocchi-controllo" data-wpel-link="internal" target="_self" rel="noopener">guida su FSE + AI</a> e a <a href="https://www.mrtux.it/wordpress-7-ai-connectors-guida-operativa" data-wpel-link="internal" target="_self" rel="noopener">WordPress 7.0 AI Connectors</a>.</p>



<h2 class="wp-block-heading">La domanda giusta: cosa faranno gli utenti nel 2028?</h2>



<p class="wp-block-paragraph">Prima di parlare di page builder e AI, serve capire <strong>chi</strong> userà cosa. La frattura è tra tre profili utente.</p>



<h3 class="wp-block-heading">Profilo 1: l&#x27;utente business senza competenze tecniche</h3>



<p class="wp-block-paragraph">Marina gestisce un Bed &amp; Breakfast. Vuole un sito. Cosa fa nel 2028?</p>



<ul class="wp-block-list"><li><strong>Scenario A (AI puro)</strong>: apre Claude, scrive &quot;creami un sito per un B&amp;B in Toscana con 5 camere, galleria fotografica, modulo prenotazioni, multilingua IT/EN/DE, e integrami con Booking.com&quot;. L&#x27;AI genera un sito completo in 10 minuti, lo deploya su un hosting, le spiega come gestirlo.</li><li><strong>Scenario B (page builder visuale)</strong>: compra Elementor Pro, usa un template preimpostato per B&amp;B, personalizza con drag-and-drop, integra un plugin di prenotazioni. Tempo: 4-6 ore.</li></ul>



<p class="wp-block-paragraph">Chi vince? La risposta non è scontata. Lo Scenario A è più veloce e meno costoso inizialmente, ma richiede un&#x27;AI affidabile, un hosting decente, e la capacità di gestire l&#x27;evoluzione del sito (aggiornare testi, aggiungere foto, gestire le email). Lo Scenario B è più lento e costoso, ma dà all&#x27;utente controllo e prevedibilità.</p>



<h3 class="wp-block-heading">Profilo 2: l&#x27;agenzia di sviluppo</h3>



<p class="wp-block-paragraph">Luca ha un&#x27;agenzia di 5 persone, realizza 20-30 siti/anno per clienti corporate. Cosa usa?</p>



<ul class="wp-block-list"><li>Page builder per prototipi rapidi e siti small-medium</li><li>Custom theme PHP/ACF per progetti enterprise</li><li>AI per generare boilerplate, snippet, copy</li><li>Hosting gestito per clienti (Kinsta, WP Engine, Rocket.net)</li></ul>



<p class="wp-block-paragraph">L&#x27;agenzia non ha un vincitore unico: usa l&#x27;AI dove accelera, page builder dove serve controllo visuale, custom code dove serve performance e scalabilità.</p>



<h3 class="wp-block-heading">Profilo 3: lo sviluppatore senior</h3>



<p class="wp-block-paragraph">Sara sviluppa plugin e temi custom per clienti enterprise. Lavora con PHP, JavaScript moderni, e ACF. Cosa fa con l&#x27;AI?</p>



<ul class="wp-block-list"><li>Usa Cursor o Claude Code per scrivere plugin più velocemente</li><li>Usa AI per refactoring e test generation</li><li>Non usa page builder (la sua produttività è nel codice)</li><li>L&#x27;AI è uno strumento, non un sostituto del suo lavoro</li></ul>



<p class="wp-block-paragraph">Sara non è in competizione con i page builder: opera su un altro layer.</p>



<h2 class="wp-block-heading">I 3 scenari per i page builder nel 2027-2030</h2>



<p class="wp-block-paragraph">Sulla base delle tendenze attuali e delle scelte di produttori come Beaver Builder, Elementor, Bricks, e Divi, ecco i tre scenari più probabili.</p>



<h3 class="wp-block-heading">Scenario 1: page builder come &quot;design system visuale&quot; (realista, 50%)</h3>



<p class="wp-block-paragraph">I page builder evolvono da &quot;strumenti per costruire pagine&quot; a <strong>design system visuali</strong> che l&#x27;AI può interrogare e modificare. L&#x27;utente finale usa ancora il page builder per la personalizzazione fine, ma l&#x27;AI può generare siti completi che rispettano il design system del page builder.</p>



<p class="wp-block-paragraph">Concretamente: l&#x27;AI genera la struttura del sito, sceglie i blocchi del page builder, li configura. L&#x27;utente apre il page builder, vede il sito finito, modifica dove vuole con il visual editor.</p>



<p class="wp-block-paragraph"><strong>Esempio reale</strong>: Elementor AI 2.0 (rilasciato in beta a maggio 2026) permette di descrivere una sezione in linguaggio naturale e vederla generata direttamente nel builder, con i widget nativi. L&#x27;utente può poi modificare ogni widget come al solito.</p>



<p class="wp-block-paragraph">Pro: integra l&#x27;AI senza stravolgere il modello. Contro: richiede all&#x27;AI di conoscere il DSL del page builder (cosa non banale).</p>



<h3 class="wp-block-heading">Scenario 2: page builder come &quot;legacy&quot; (possibile, 25%)</h3>



<p class="wp-block-paragraph">L&#x27;AI diventa così brava a generare siti completi da prompt che i page builder tradizionali vengono percepiti come obsoleti. I visual editor rimangono per chi vuole &quot;vedere&quot; cosa sta costruendo, ma la maggior parte degli utenti usa solo l&#x27;AI.</p>



<p class="wp-block-paragraph">Concretamente: 70% dei nuovi siti WordPress nel 2028 viene generato via prompt AI, 30% tramite page builder. I page builder tradizionali si contraggono a una nicchia.</p>



<p class="wp-block-paragraph">Pro: mercato si semplifica, focus su qualità. Contro: chi ha investito in page builder perde terreno.</p>



<h3 class="wp-block-heading">Scenario 3: page builder come &quot;editor AI-augmented&quot; (possibile, 25%)</h3>



<p class="wp-block-paragraph">I page builder diventano <strong>ambienti collaborativi uomo + AI</strong> dove l&#x27;utente e l&#x27;AI co-editano il sito in tempo reale. L&#x27;utente fa modifiche strutturali, l&#x27;AI fa suggerimenti contestuali, copy, ottimizzazioni.</p>



<p class="wp-block-paragraph">Concretamente: un&#x27;interfaccia tipo Figma + Cursor, dove muovi un blocco e l&#x27;AI propone varianti, ottimizza per conversioni, scrive il copy.</p>



<p class="wp-block-paragraph">Pro: il meglio dei due mondi. Contro: complessità tecnica alta, curva di apprendimento ripida.</p>



<h2 class="wp-block-heading">Cosa sta facendo Beaver Builder (e perché è interessante)</h2>



<p class="wp-block-paragraph">La scelta di Beaver Builder è un caso studio. Invece di mettere un &quot;pulsante AI&quot; nel builder (come hanno fatto in tanti), il team sta lavorando a un <strong>editor collaborativo in tempo reale</strong> dove l&#x27;utente e l&#x27;AI possono co-editare la pagina.</p>



<p class="wp-block-paragraph">McCullough spiega che l&#x27;AI migliore in un page builder non è quella che &quot;genera una sezione&quot;, ma quella che <strong>capisce il contesto</strong> della sezione esistente e propone miglioramenti chirurgici. L&#x27;AI lavora sui blocchi già presenti, non ne crea di nuovi da zero.</p>



<pre class="wp-block-code"><code>// Esempio concettuale di AI contestuale nel page builder
const block = editor.getSelectedBlock();

// L'AI analizza il blocco nel contesto della pagina
const suggestions = await ai.suggest({
    type: 'inline_edit',
    block: block,
    page_context: editor.getPageContext(), // altri blocchi, tema, brand
    user_goal: 'increase_readability',
});

// L'utente vede le 3 varianti inline, applica quella preferita
editor.showInlineAISuggestions( block, suggestions );</code></pre>



<p class="wp-block-paragraph">È un approccio molto diverso dal &quot;clicca qui per generare una sezione con AI&quot;. Meno spettacolare, ma più integrato nel workflow reale.</p>



<h2 class="wp-block-heading">Le 5 decisioni strategiche per chi sviluppa page builder</h2>



<p class="wp-block-paragraph">Se stai sviluppando (o gestisci) un page builder, ecco le 5 decisioni strategiche che contano per il 2026-2028.</p>



<h3 class="wp-block-heading">Decisione 1: integrare l&#x27;AI come layer sopra o come motore nativo</h3>



<p class="wp-block-paragraph">Scelta attuale di Elementor: AI come layer (pulsanti AI ovunque). Scelta di Beaver Builder: AI come motore contestuale (in lavorazione). La prima è più veloce da implementare, la seconda è più profonda e più difficile da copiare.</p>



<h3 class="wp-block-heading">Decisione 2: supportare il Full Site Editing o restare sul modello classico</h3>



<p class="wp-block-paragraph">Il FSE di WordPress è un paradigma diverso dal page builder classico: blocchi nativivi, template parts, global styles. I page builder possono:</p>



<ul class="wp-block-list"><li>(a) Competere con FSE, offrendo un&#x27;esperienza più ricca</li><li>(b) Integrarsi con FSE, offrendo blocchi custom che lavorano dentro l&#x27;editor nativo</li><li>(c) Ignorare FSE, scommettendo sulla nicchia &quot;visual editor ricco&quot;</li></ul>



<p class="wp-block-paragraph">Bricks ha scelto (a) e (b): compete con FSE per i siti avanzati, ma offre compatibilità. Elementor ha fatto scelte ibride. Divi è più fedele al modello classico.</p>



<h3 class="wp-block-heading">Decisione 3: pricing basato su features o su AI credits</h3>



<p class="wp-block-paragraph">Sta emergendo un modello in cui le funzioni AI sono &quot;a consumo&quot; (crediti), mentre le funzioni classiche restano in abbonamento. È un modello più giusto per l&#x27;utente (paghi solo quello che usi) ma più complesso da gestire.</p>



<h3 class="wp-block-heading">Decisione 4: plugin gratuito o premium</h3>



<p class="wp-block-paragraph">La maggior parte dei page builder ha un tier gratuito limitato. La scelta per il 2026 è se ampliare il free tier (per intercettare utenti che userebbero solo AI) o restare premium-only (per monetizzare meglio).</p>



<h3 class="wp-block-heading">Decisione 5: focus su performance o su funzionalità</h3>



<p class="wp-block-paragraph">Bricks è il campione della performance. Elementor è il campione delle funzionalità. La domanda è: nel 2027, gli utenti premieranno la velocità (Core Web Vitals) o le feature?</p>



<h2 class="wp-block-heading">Cosa significa per le agenzie</h2>



<p class="wp-block-paragraph">Le agenzie che oggi usano page builder per il 70% del loro lavoro devono riposizionarsi. Tre raccomandazioni concrete.</p>



<h3 class="wp-block-heading">1. Smetti di vendere &quot;il sito&quot;, vendi &quot;il sistema&quot;</h3>



<p class="wp-block-paragraph">Un sito statico fatto con page builder vale sempre meno. Un sistema (sito + automazioni + integrazioni + AI custom) vale di più. Riposiziona la tua offerta su quest&#x27;ultimo.</p>



<h3 class="wp-block-heading">2. Impara l&#x27;AI almeno quanto hai imparato il page builder</h3>



<p class="wp-block-paragraph">Se la tua produttività viene dal page builder, sei sostituibile dall&#x27;AI. Se la tua produttività viene dalla capacità di <strong>combinare AI + page builder + custom code + design thinking</strong>, sei molto più difficile da sostituire.</p>



<h3 class="wp-block-heading">3. Offri &quot;AI setup&quot; come servizio</h3>



<p class="wp-block-paragraph">C&#x27;è un mercato enorme di aziende che vogliono usare WPVibe, gli AI Connectors di WP 7.0, o agenti custom, ma non sanno da dove partire. Offrire un servizio di setup + formazione è una nicchia remunerativa e scalabile.</p>



<h2 class="wp-block-heading">Cosa significa per chi usa page builder</h2>



<p class="wp-block-paragraph">Se sei un utente finale che usa un page builder, ecco i consigli pratici.</p>



<h3 class="wp-block-heading">Consiglio 1: non stravolgere il tuo workflow</h3>



<p class="wp-block-paragraph">Se oggi usi Elementor e funziona, non passare a Bricks solo perché &quot;è più veloce&quot;. Il costo di apprendimento potrebbe non valere. Aspetta che l&#x27;integrazione AI maturi.</p>



<h3 class="wp-block-heading">Consiglio 2: testa le funzioni AI ma non fidarti ciecamente</h3>



<p class="wp-block-paragraph">Quando il tuo page builder aggiunge AI, provala. Ma fai sempre review umana di quello che genera, specialmente per copy e design. L&#x27;AI sbaglia ancora, e gli errori sono meno tollerabili su un sito live.</p>



<h3 class="wp-block-heading">Consiglio 3: mantieni la portabilità del sito</h3>



<p class="wp-block-paragraph">Siti costruiti con page builder proprietari possono essere difficili da migrare. Mantieni backup regolari e una exit strategy. Idealmente, costruisci con page builder che esportano in HTML standard o in blocchi FSE nativi.</p>



<h2 class="wp-block-heading">Esempio tecnico: integrare l&#x27;AI come motore contestuale in un page builder</h2>



<p class="wp-block-paragraph">Vediamo come potrebbe funzionare un&#x27;integrazione AI contestuale in un page builder (pseudocodice del flusso di Beaver Builder).</p>



<pre class="wp-block-code"><code>// Sistema di suggerimenti AI contestuali
class ContextAwareAI {
    constructor( pageState, userPreferences ) {
        this.pageState = pageState;
        this.userPreferences = userPreferences;
    }

    async suggestBlockImprovement( block ) {
        // 1. Recupera il contesto della pagina
        const context = {
            page_type: this.pageState.getPageType(),
            surrounding_blocks: this.pageState.getSurroundingBlocks( block.id, 2 ),
            theme_tokens: this.pageState.getThemeDesignTokens(),
            brand_voice: this.userPreferences.getBrandVoice(),
        };

        // 2. Chiedi all'AI con contesto specifico
        const response = await this.callAI( {
            model: 'claude-3-5-sonnet',
            system: `Sei un assistente per page builder. Migliori blocchi esistenti
                    senza stravolgerli. Rispondi in JSON con {"variants": [...]}.`,
            user: `Blocco attuale: ${JSON.stringify( block.data, null, 2 )}
                   Contesto: ${JSON.stringify( context, null, 2 )}
                   Obiettivo utente: ${block.userGoal}`,
        } );

        // 3. Restituisci 3 varianti contestualizzate
        return response.variants.map( v =&gt; ({
            ...v,
            blockId: block.id,
            // Mantieni la struttura del blocco, cambia solo contenuto/stile
            preserveStructure: true,
        }) );
    }

    async callAI( payload ) {
        // Usa la WordPress AI API (vedi guida AI Connectors)
        return await wpAiRequest( payload );
    }
}

// Uso nell'editor
const ai = new ContextAwareAI( pageState, userPrefs );
const suggestions = await ai.suggestBlockImprovement( selectedBlock );

// Mostra le varianti inline nel page builder
ui.showInlineVariants( selectedBlock, suggestions );</code></pre>



<p class="wp-block-paragraph">È un pattern più complesso del &quot;clicca e genera&quot;, ma molto più integrato con il workflow dell&#x27;utente.</p>



<h2 class="wp-block-heading">Domande frequenti</h2>



<h3 class="wp-block-heading">I page builder sono morti?</h3>



<p class="wp-block-paragraph">No. Stanno evolvendo. Il page builder come strumento puramente visuale sta cedendo spazio a un modello ibrido dove visuale + AI coesistono. La categoria sopravvive, ma il prodotto singolo deve evolversi.</p>



<h3 class="wp-block-heading">Meglio imparare un page builder o l&#x27;AI oggi?</h3>



<p class="wp-block-paragraph">Entrambi, in ordine di priorità: prima il page builder (perché è ancora il modo più prevedibile di costruire un sito), poi l&#x27;AI (per accelerare). Non sono alternativi, sono complementari.</p>



<h3 class="wp-block-heading">Beaver Builder è indietro rispetto a Elementor sull&#x27;AI?</h3>



<p class="wp-block-paragraph">No, è in una posizione diversa. Elementor ha integrato l&#x27;AI come feature aggiuntiva (più veloce da implementare, meno profondo). Beaver Builder sta integrando l&#x27;AI come cambio di paradigma (più lento, più profondo). I due approcci non sono direttamente confrontabili.</p>



<h3 class="wp-block-heading">L&#x27;AI può sostituire un web designer professionista?</h3>



<p class="wp-block-paragraph">Per task semplici (landing page, siti vetrina, blog personali), sì, oggi. Per task complessi (e-commerce enterprise, portali custom, integrazioni), no, non ancora. La soglia si alza ogni anno, ma la complessità dei progetti reali cresce più velocemente.</p>



<h3 class="wp-block-heading">Il Full Site Editing di WordPress rende obsoleti i page builder?</h3>



<p class="wp-block-paragraph">No, ma li costringe a specializzarsi. FSE è ottimo per siti piccoli/medi, ma manca di molte feature che i page builder offrono (conditional display, dynamic content, theme builder avanzato). I page builder che si integrano con FSE hanno il futuro assicurato; quelli che lo combattono sono a rischio.</p>



<h3 class="wp-block-heading">Vale la pena investire in Bricks (performance) o in Elementor (ecosistema)?</h3>



<p class="wp-block-paragraph">Dipende dal tipo di progetti. Per siti dove la performance è critica (publishing, e-commerce ad alto traffico), Bricks è superiore. Per progetti dove servono molte integrazioni e un ecosistema ampio, Elementor vince. La scelta giusta è progetto-specific.</p>



<h3 class="wp-block-heading">Quando arriverà un page builder veramente AI-native?</h3>



<p class="wp-block-paragraph">Ci sono già prototipi (Bricks AI, Divi AI 2.0, l&#x27;approccio Beaver Builder), ma un page builder &quot;AI-native&quot; nel senso pieno del termine (dove l&#x27;AI è il motore primario, non un layer sopra) non esiste ancora. Probabile orizzonte: 2027-2028.</p>



<h2 class="wp-block-heading">Riferimenti utili per approfondire</h2>



<ul class="wp-block-list"><li><a href="https://wptavern.com/podcast/214-robby-mccullough-on-beaver-builder-ai-hype-and-evolving-wordpress-workflows" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WP Tavern #214 con Robby McCullough</a> - il podcast originale.</li><li><a href="https://elementor.com/blog/ai-2-release/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Elementor AI 2.0 release notes</a> - esempio di approccio &quot;AI come layer&quot;.</li><li><a href="https://bricksbuilder.io/ai/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Bricks Builder AI features</a> - esempio di approccio performance-first con AI.</li><li><a href="https://www.elegantthemes.com/documentation/divi/ai/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Divi AI documentation</a> - altro esempio di integrazione AI.</li><li><a href="https://www.wpbeaverbuilder.com/roadmap/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Beaver Builder roadmap pubblica</a> - visione strategica del team.</li><li><a href="https://wordpress.org/documentation/article/full-site-editing/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress FSE documentation</a> - come evolve il core.</li><li><a href="https://www.anthropic.com/news/3-5-models-and-computer-use" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Anthropic Computer Use demo</a> - dove sta andando l&#x27;AI agentica.</li><li><a href="https://www.mrtux.it/fse-ai-temi-wordpress-blocchi-controllo" data-wpel-link="internal" target="_self" rel="noopener">FSE + AI per temi a blocchi mrtux.it</a> - guida pratica su FSE + AI.</li><li><a href="https://www.mrtux.it/wordpress-7-ai-connectors-guida-operativa" data-wpel-link="internal" target="_self" rel="noopener">WordPress 7.0 AI Connectors mrtux.it</a> - il motore AI lato core.</li><li><a href="https://www.mrtux.it/strumenti-ai-wordpress-sviluppatore-2026" data-wpel-link="internal" target="_self" rel="noopener">Strumenti AI per sviluppatori WordPress mrtux.it</a> - la cassetta degli attrezzi AI.</li></ul>



<p class="wp-block-paragraph">Questa guida verrà aggiornata quando Beaver Builder rilascerà la sua AI contestuale e quando Elementor AI raggiungerà la versione 3.0. Per discussioni o casi d&#x27;uso specifici, l&#x27;area commenti è aperta.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/page-builder-era-ai-agent-sopravvivenza/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
