TL;DR: se un modello AI alimenta WordPress, chiedere “rispondi in JSON” non basta. Definisci uno schema, valida l’output sul server e imposta lo stato draft nel codice. Il modello scrive; l’automazione decide se il dato può proseguire.
Il problema compare appena colleghi un modello AI a WordPress, Make o n8n: oggi restituisce il payload previsto, domani aggiunge una frase introduttiva, cambia il nome di un campo o inventa una categoria. Il JSON può essere sintatticamente corretto e restare inutilizzabile per il workflow.
Il contratto viene prima del prompt
La soluzione è trattare l’output AI come input non affidabile. Prima definisci un contratto con JSON Schema: tipo dei campi, proprietà obbligatorie, lunghezze massime e valori ammessi. Per esempio, la categoria può accettare soltanto Enterprise, Governance, Infrastruttura, Mercato o Sicurezza. La keyword enum serve proprio a limitare un valore a un insieme chiuso.
{
"type": "object",
"required": ["title", "excerpt", "content", "category"],
"properties": {
"title": {"type": "string", "maxLength": 60},
"excerpt": {"type": "string", "maxLength": 170},
"content": {"type": "string", "minLength": 1200},
"category": {
"enum": ["Enterprise", "Governance", "Infrastruttura", "Mercato", "Sicurezza"]
}
},
"additionalProperties": false
}
I passaggi essenziali
- Conserva lo schema nel codice o nella configurazione dell’automazione, non soltanto nel prompt.
- Chiedi al modello un oggetto conforme, senza testo prima o dopo il JSON.
- Valida l’output sul server. Se manca un campo o compare un valore fuori allowlist, scarta il payload e richiedi una correzione mirata.
- Solo dopo la validazione mappa la categoria al relativo ID WordPress e crea il post tramite REST API.
OWASP raccomanda di validare i dati il prima possibile, sia sul piano sintattico sia su quello semantico. Raccomanda inoltre allowlist e controlli server-side: la validazione nel browser migliora l’esperienza, ma può essere aggirata. Lo stesso principio vale per l’AI. Il fatto che l’output arrivi da un modello non lo rende attendibile.
L’errore da evitare
Non lasciare che sia il modello a scegliere "status": "publish". Lo stato non è contenuto editoriale: è una decisione del workflow. Il codice deve impostare sempre draft, stato supportato dall’endpoint dei post WordPress, e promuovere il contenuto solo dopo i controlli previsti. È lo stesso approccio del gate per le bozze AI in WordPress.
Altro errore comune: “riparare” automaticamente un payload non valido. Se il validator trova Governance AI invece di Governance, non indovinare l’intenzione. Restituisci l’errore al modello o ferma il flusso. Una correzione silenziosa trasforma un controllo in una scommessa.
Take finale
Un prompt più dettagliato riduce gli errori, ma non sostituisce un contratto verificabile. In un’automazione seria il modello è l’autore della proposta; schema, validator e gate WordPress sono l’editor responsabile. Se manca questa separazione, non hai una pipeline: hai testo generato con accesso al pulsante Pubblica.

