Come illustrare ogni articolo che pubblichi — con foto reali, su larga scala

Perché i team editoriali stanno tornando alla fotografia reale, e la pipeline esatta — prompt incluso — che trasforma una bozza finita in un'immagine di copertina con credito in circa 150 millisecondi.

Condividi
Una persona a una scrivania luminosa che lavora a un laptop che mostra una griglia di foto, con uno stilo in mano.
Foto via Pexels

Ogni articolo che pubblichi ha bisogno di un'immagine. Non è un accessorio: l'immagine principale è ciò che mostra l'anteprima social, ciò che il lettore vede prima della prima frase, e ciò che gli dice in mezzo secondo se questa pagina è stata realizzata da qualcuno a cui importava. Moltiplica per quattro immagini per post e quaranta post a trimestre, e “trovare una foto” smette di essere un compito e diventa un problema di flusso di lavoro.

Ecco come lo risolviamo: cosa usare al posto delle immagini generate e perché, e i tre modi per integrare Pexafy nel flusso di lavoro — manualmente, via API o tramite un agente AI — incluso il prompt che trasforma una bozza finita in una frase di ricerca che effettivamente trova qualcosa.

Perché le foto reali battono ancora quelle generate

Generare un'illustrazione è facile, ed è proprio questo il problema. Quattro cose sono cambiate tra “le immagini AI sono una scorciatoia” e oggi:

1 · Su grandi volumi, cercare è più veloce che generare

Una generazione è un prompt, un'attesa, un controllo e — onestamente — altri due o tre tentativi prima che uno sia utilizzabile. Una ricerca semantica è un'unica richiesta che restituisce sedici candidati in circa 150 millisecondi, ciascuno già concesso in licenza, già accreditato, già dimensionato, con le sue dimensioni nella risposta. Per un'immagine la differenza è un caffè. Per quattrocento immagini a trimestre è la differenza tra un flusso di lavoro e un lavoro a tempo pieno.

2 · Una fotografia è accurata; una generazione è plausibile

Nel momento in cui il tuo articolo parla di qualcosa di reale — una professione, un'attrezzatura, una città, un gesto, un materiale — un'immagine generata coglie l'atmosfera giusta ma sbaglia i dettagli. Le mani con sei dita sono la versione scherzosa; la versione costosa è uno strumento chirurgico che non esiste, una cabina di pilotaggio con comandi inventati, o una “strada di Lisbona” che nessun lisboeta riconosce. I lettori che conoscono il tuo argomento se ne accorgono, e se ne accorgono guardando prima l'immagine.

3 · Tutti hanno lo stesso look

I modelli di diffusione convergono su uno stile di casa, e un muro di illustrazioni dal gradiente morbido, sovrailluminate e sospettosamente simmetriche viene ormai letto come riempitivo. Quella percezione è il vero costo: non una penalizzazione, un segnale. Una fotografia reale — grana, una sedia scomoda, qualcuno a metà frase — viene letta come reportage.

4 · E ora arrivano con un'etichetta attaccata

Questo è più un elemento di contesto che un argomento, ma è la direzione in cui si va. Dal 2 agosto 2026, l'articolo 50 dell'EU AI Act richiede ai fornitori di sistemi generativi di contrassegnare gli output sintetici in un formato leggibile da macchina, e ai deployer di dichiarare i deepfake.1 Sul fronte del rilevamento, Google legge le C2PA Content Credentials e il proprio watermark SynthID per rispondere alla domanda “è generato dall'AI?” all'interno di Search, Images e Lens.2 Nulla di tutto ciò è una regola su quali immagini un blog possa pubblicare, e nulla di tutto ciò ti costa posizionamento. Ciò che è cambiato è a valle: la provenienza dell'immagine in cima al tuo articolo è ora qualcosa che un lettore può verificare in due clic, senza doverlo chiedere a te. Una fotografia con licenza non ha nulla da dichiarare.

Quando le immagini generate sono la scelta giusta. Diagrammi concettuali e schemi. Una scena che non può essere fotografata (un prodotto che non esiste ancora, un meccanismo astratto, una città futura). Uno stile illustrativo di casa che possiedi e che vuoi ripetere su ogni post. E qualsiasi caso in cui l'immagine è deliberatamente intesa come illustrazione piuttosto che come prova. Usa entrambe — semplicemente smetti di usare la generazione come opzione predefinita per “mi serve una foto di persone in riunione”.

Tre modi per illustrare, in base al tuo volume

Stesso motore, stesso catalogo — 9M+ foto gratuite da 9 librerie — e tre punti di accesso. Scegli in base a quanti articoli pubblichi, non a quanto sei tecnico.

Punto di accesso Adatto achi e quanto Per articolo Cosa ti serve
Interfaccia di ricerca Editor, un post alla volta — fino a ~20/mese ~30 secondi Un browser. Non serve un account per cercare.
API REST Un CMS, una build di sito statico, un lotto di bozze ~1 richiesta, ~150 ms Una chiave API. 5.000 richieste/mese gratis, 20/min.
Server MCP L'agente AI che scrive o modifica la bozza All'interno della stessa conversazione Un URL del connettore, OAuth o una chiave.

I tre condividono un unico catalogo e un unico ranking, quindi una foto trovata da un editor nell'interfaccia è la stessa foto, con lo stesso identificatore, che l'API restituisce al tuo script di build.

Un articolo, 30 secondi: l'interfaccia di ricerca

Descrivi la scena come la descriveresti a un fotografo, in una frase completa, nella tua lingua. Non team meeting — “a small team standing in a semi circle for a short morning stand-up meeting in a bright open plan office”. Ogni dettaglio concreto in più restringe l'insieme dei risultati invece di svuotarlo, perché il motore classifica in base al significato anziché confrontare le tue parole con i tag di qualcun altro.

pexafy.com — una frase, risultati da più librerie in un'unica griglia
La pagina dei risultati di ricerca Pexafy che mostra foto di un team riunito per un incontro mattutino, trovate da una query in forma di frase completa.
Il piccolo punto colorato su ogni scheda è il punteggio di rilevanza — verde significa che il motore è sicuro. I risultati vengono uniti e riclassificati tra tutte le librerie indicizzate, non giustapposti una libreria dopo l'altra. Esegui questa ricerca esatta →

Poi restringi con i filtri che contano per l'impaginazione di un articolo — e solo quelli:

Filtri — colore, orientamento, fonte, licenza
Il pannello dei filtri Pexafy, con campioni di colore, opzioni di orientamento e selezione della fonte.
Orientamento → orizzontale per un'immagine principale (il ritaglio verticale rende male nelle anteprime social). Colore per mantenere coerente visivamente una serie di post con il tuo brand — scegli lo stesso campione per ogni articolo di una campagna e l'indice del blog appare all'improvviso curato.
  1. Scrivi la frase, non la parola chiave. Soggetto + azione + luogo + luce. Fino a 500 caratteri, in una delle oltre 100 lingue disponibili.
  2. Filtra per orizzontale per l'immagine principale, poi rilancia senza il filtro per le immagini interne all'articolo, dove il verticale spesso rende meglio.
  3. Apri la foto per ottenere la riga di attribuzione già pronta, la pagina di origine e il file a piena risoluzione.
  4. Usa “foto simili” su quella scelta per illustrare la sezione successiva nello stesso registro visivo — stessa luce, stesso trattamento, scena diversa.

Il prompt: trasformare una bozza in una frase di ricerca

Questo è il passaggio che tutti sbagliano quando automatizzano. Inseriscono direttamente il titolo dell'articolo nel campo di ricerca, e il titolo è esattamente l'input sbagliato: è astratto (“Il costo nascosto del cambio di contesto”) e nessuna fotografia al mondo lo raffigura. Ciò che vuoi dal modello non è un riassunto — è un brief da fotografo.

Il prompt del photo editor — copialo così com'è
# system prompt
You are a photo editor. Read the article and write ONE search sentence
for a stock-photo engine that ranks by meaning, not by keywords.

Rules:
1. Describe a scene a camera could have taken: someone doing
   something, somewhere. Never name the topic itself ("fintech",
   "productivity", "SEO") — name what would be in the frame.
2. 12 to 25 words. Longer beats shorter: every concrete detail
   (light, place, gesture, time of day) sharpens the match.
3. No text, logos, brands, charts, screenshots or famous people.
   Free photo libraries have almost none of those.
4. No invisible metaphors ("growth", "synergy", "transformation").
5. Match the mood of the article: calm, tense, tired, celebratory.
6. Write the sentence in English even if the article is not.

Return JSON only:
{ "query": "…", "orientation": "landscape", "alt": "…" }

La regola 1 fa gran parte del lavoro. Ecco la stessa regola applicata a tre bozze reali — la colonna centrale è ciò che una persona digita quando ha fretta, la colonna a destra è ciò che restituisce il prompt:

L'articolo parla di… La query frettolosa Il brief da fotografo
Perché il tuo stand-up quotidiano non funziona team meeting “a small team standing in a semi circle for a short morning stand-up meeting in a bright open plan office”
Ridurre l'onboarding da 6 settimane a 9 giorni onboarding “a new employee on their first day at a desk, listening while a colleague leans in and points at their screen”
Il costo nascosto del cambio di contesto productivity “a tired developer rubbing their eyes in front of two monitors late in the evening, the office empty behind them”

team meeting restituisce lo stock generico della sala riunioni che tutti gli altri sul tuo stesso argomento stanno già usando. La frase nella terza colonna restituisce questo, in 155 millisecondi:

GET /search/photos — “a small team standing in a semi circle for a short morning stand-up meeting…” · 16 risultati · 155 ms
Tre librerie diverse nei primi sei risultati, classificate insieme anziché una libreria dopo l'altra. Ognuna mostra persone in piedi, in gruppo, in un ufficio reale — esattamente ciò che la frase chiedeva e ciò che team meeting non garantisce mai.

La pipeline: bozza in ingresso, immagine principale accreditata in uscita

Quaranta righe, due chiamate: una al modello per il brief, una a Pexafy per la foto. Inseriscila nell'hook di salvataggio del tuo CMS, nella build del tuo sito statico, o in uno script che scorre una cartella di file Markdown.

illustrate.py — articolo in ingresso, immagine + alt + credito in uscita
import json, os, requests
from anthropic import Anthropic

SEARCH = "https://api.pexafy.com/api/v1/search/photos"
llm = Anthropic()  # ANTHROPIC_API_KEY dall'ambiente

def camera_brief(article: str) -> dict:
    # PHOTO_EDITOR = il system prompt qui sopra
    msg = llm.messages.create(
        model="claude-sonnet-5",
        max_tokens=300,
        system=PHOTO_EDITOR,
        messages=[{ "role": "user", "content": article[:12000] }],
    )
    return json.loads(msg.content[0].text)

def illustrate(article: str) -> dict | None:
    brief = camera_brief(article)
    r = requests.get(
        SEARCH,
        headers={"X-Api-Key": os.environ["PEXAFY_API_KEY"]},
        params={
            "q": brief["query"],           # la frase completa
            "orientation": brief["orientation"],
            "per_page": 8,
            "score_threshold": 0.55,      # scarta i risultati deboli
        },
        timeout=10,
    )
    hits = r.json()["data"]
    if not hits:                        # brief troppo restrittivo → allarga, riprova
        return None

    top = hits[0]
    return {
        "src":    top["urls"]["regular"],        # 1080px — dimensione hero
        "alt":    brief["alt"] or top["alt_description"],
        "credit": top["attribution"]["html"],   # pronto da mostrare
        "width":  top["width"],
        "height": top["height"],
        "id":     top["photo_id"],           # salvalo: niente ripetizioni
    }

Tre dettagli che trasformano una demo in qualcosa che puoi lasciare in esecuzione:

  • score_threshold — non restituire nulla è meglio che restituire una foto scadente. Se il brief era troppo specifico, allargalo (togli l'ultima clausola) e riprova una volta.
  • Salva il photo_id — una riga nel tuo database, e nessuna coppia di articoli sul tuo sito condividerà mai un'immagine principale. È l'errore in cui tutti incappano al trentesimo post.
  • Una richiesta per ogni slot immagine — un'immagine principale più tre immagini di sezione sono quattro richieste per articolo, oppure una sola se prendi quattro risultati diversi dalla stessa ricerca.

Non usi Python? Tutta la parte di ricerca è una riga sola, e ogni risultato porta gli stessi campi qualunque sia la libreria di provenienza:

La stessa chiamata, in shell
curl -sG "https://api.pexafy.com/api/v1/search/photos" \
  -H "X-Api-Key: $PEXAFY_API_KEY" \
  --data-urlencode "q=a tired developer rubbing their eyes at two monitors" \
  --data-urlencode "orientation=landscape" \
  --data-urlencode "per_page=6"

# → { "success": true, "data": [ … ], "meta": { "took_ms": 147 } }

La forma della risposta — urls, width, photographer_full_name, source, license_type, relevance_score, attribution — è identica per una foto Pexels, una foto Pixabay e una foto Unsplash. Quella normalizzazione è la parte che altrimenti dovresti scrivere e mantenere tu stesso; l'abbiamo scomposta campo per campo in il confronto tra API di foto stock gratuite.

Seconda sezione, secondo brief, seconda ricerca — il punto è che un articolo produce diverse scene distinte invece di una sola foto tirata quattro volte:

Sezione 2 — “a woman working alone on a laptop at her kitchen table early in the morning with a cup of coffee” · 129 ms
Stesso articolo, sezione diversa, scena diversa — e l'atmosfera si mantiene perché era il brief a portarla. Esegui anche questa →

Lascia che sia l'agente a scegliere l'immagine: MCP

Se un modello sta già scrivendo o modificando la bozza, la pipeline più pulita è nessuna pipeline: dai all'agente lo strumento di ricerca e lascia che illustri ciò che ha appena scritto, nella stessa conversazione, mentre ha ancora il contesto.

Pexafy gestisce un server Model Context Protocol ospitato all'indirizzo mcp.pexafy.com/mcp. Tre strumenti: search_photos (una frase), search_photos_by_image (un'immagine di riferimento, eventualmente più una frase — “come questa, ma al tramonto”), e get_similar_photos (di più simile a quella già scelta, che è il modo per mantenere coerente una serie).

Claude.ai e Claude Desktop — OAuth, nessuna chiave da gestire
Settings → Connectors → Add custom connector
Name: Pexafy
URL:  https://mcp.pexafy.com/mcp
# poi accedi con il tuo account Pexafy quando si apre la finestra
Claude Code — un solo comando
claude mcp add --transport http pexafy https://mcp.pexafy.com/mcp \
  --header "Authorization: Bearer $PEXAFY_API_KEY"

# oppure salvalo nel repository, così l'intero team lo ottiene — .mcp.json
{
  "mcpServers": {
    "pexafy": {
      "type": "http",
      "url": "https://mcp.pexafy.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

Da qui, illustrare un articolo è una frase, non un compito. L'agente scrive il proprio brief da fotografo — ha appena letto la bozza, quindi è più in grado di chiunque altro di descrivere la scena:

Com'è nella pratica
You  Here's the draft of this week's post. Find a landscape hero
     and one photo for section 2, and give me the credit lines.

Claude  → search_photos(
       q="a small team standing in a semi circle for a short morning
          stand-up meeting in a bright open plan office",
       orientation="landscape")
     ← 16 photos · 155 ms

     Hero    → Photo by Thirdman on Pexels · 6453×4302 · score 0.80
     Section → Photo by Marcus Aurelius on Pexels · 6000×4000
     Both licence-free, attribution lines below, ready to paste.

Unsplash, Pexels, Pixabay e Openverse non hanno un server MCP ufficiale — quello che esiste sono wrapper della comunità che devi ospitare e configurare con la chiave tu stesso. Se il tuo flusso editoriale passa già attraverso un agente, quella differenza è l'integrazione.

Testo alternativo, licenza e velocità della pagina

L'immagine è scelta. Quattro cose decidono se aiuta la pagina o la danneggia silenziosamente:

  1. Scrivi il testo alternativo per una persona, non per un crawler. Ogni risultato include un alt_description — usalo come bozza, poi riscrivilo nel contesto del tuo paragrafo. “Quattro colleghi in piedi in una riunione mattutina” batte un'insalata di parole chiave, ed è il testo che uno screen reader leggerà davvero. Mantienilo sotto i ~125 caratteri; lascialo vuoto (alt="") solo se l'immagine è puramente decorativa.
  2. Includi il credito anche quando nulla ti obbliga a farlo. L'attribuzione non è richiesta dai termini dell'API Pexafy e ogni risultato porta con sé una stringa attribution.html già pronta — ma la licenza associata dalla libreria originale continua a regolare l'uso che fai di quella foto, e una riga di credito visibile è ciò che dice a un lettore (e a un motore di risposta) che si tratta di una fotografia reale con un autore reale.
  3. Servi la dimensione giusta. urls.regular (1080 px) è adatta a un'immagine principale; urls.full è un file da 2400 px che nessun articolo richiede. Emetti sempre width/height dalla risposta perché il browser riservi lo spazio — quella singola coppia di attributi fa la differenza tra un buon e un cattivo punteggio di layout-shift. Usa fetchpriority="high" sull'immagine principale, loading="lazy" su tutto ciò che sta sotto la piega.
  4. Passa l'immagine principale ai tuoi metadati. Lo stesso URL dovrebbe essere il tuo og:image, il tuo twitter:image e la proprietà image dei tuoi dati strutturati Article. Una foto, tre posizioni, zero lavoro extra — e un'anteprima social che non ricade più sul tuo logo.

Quanto costa davvero 100 articoli al mese

Ipotizza un'immagine principale più tre immagini nell'articolo, quindi quattro richieste di ricerca per post — la versione deliberatamente dispendiosa, in cui esegui una query separata per ogni slot invece di riutilizzare i risultati di una sola:

Volume Richieste di ricerca / mese Piano Costo di ricerca
20 articoli 80 Gratuito — 5.000 richieste/mese $0
100 articoli 400 Gratuito — 5.000 richieste/mese $0
1.000 articoliun'agenzia, o l'intero portafoglio di un cliente 4.000 Gratuito — ancora entro le 5.000 richieste/mese $0

Sì — la quota mensile è un non-problema ai volumi tipici del content marketing, e preferiamo dirlo piuttosto che inventare un motivo per farti pagare. Il limite che incontrerai davvero è quello al minuto. Il piano gratuito consente 20 richieste API al minuto; uno script di build che ri-illustra 100 articoli in un unico passaggio spara 400 richieste alla velocità che il tuo ciclo consente, quindi o passa venti minuti a essere limitato, oppure inizia a raccogliere errori 429. Due vie d'uscita: distanziare le chiamate (un sleep nel ciclo, e un job notturno non se ne accorge nemmeno), oppure passare a un piano il cui limite di frequenza corrisponda alla tua build — Starter è 30 richieste/minuto, Pro 60. Scegli in base al picco, non al volume.

L'unica altra voce è una breve chiamata al modello per articolo per produrre il brief — poche centinaia di token in entrata, trenta in uscita, che sarà la voce più economica di qualsiasi pipeline di contenuti tu possieda. Confrontalo con la generazione di quattro immagini per post, a quattrocento immagini al mese, più i tentativi che non sono stati selezionati.

E la parte che non compare in una tabella dei costi: l'editor smette di aprire cinque schede. È quello il vero risparmio.

Riferimenti e note

1 EU AI Act, articolo 50 — obblighi di trasparenza per fornitori e deployer di determinati sistemi AI, applicabile dal 2 agosto 2026. I fornitori di sistemi che generano audio, immagini, video o testo sintetici devono contrassegnare gli output in un formato leggibile da macchina e renderli rilevabili come generati artificialmente; i deployer devono dichiarare i deepfake e, in casi definiti, il testo generato dall'AI pubblicato per informare il pubblico. Il Digital Omnibus (Regolamento (UE) 2026/1744, in vigore dal 27 luglio 2026) lascia l'articolo 50 stesso non modificato, ma concede ai sistemi già sul mercato prima del 2 agosto 2026 tempo fino al 2 dicembre 2026 per soddisfare il requisito di contrassegno leggibile da macchina dell'articolo 50(2). Tutto ciò vincola i fornitori e i deployer di AI — non è una regola su quali immagini un blog possa pubblicare.

2 Google legge le C2PA Content Credentials e il proprio watermark SynthID per mostrare la provenienza in Informazioni su questa immagine in Search, Images e Lens. Questa è provenienza mediatica, non una penalizzazione nel ranking per i contenuti generati dall'AI.

Domande frequenti

Dovrei usare immagini generate dall'IA o foto reali per gli articoli del blog?
Usa foto reali ogni volta che l'articolo parla di qualcosa che esiste — un mestiere, un luogo, un oggetto, un gesto — perché una fotografia rende i dettagli fedelmente e porta con sé una fonte verificabile, una data e un fotografo. Dal 2 agosto 2026, l'Articolo 50 dell'EU AI Act impone ai sistemi generativi di contrassegnare i propri output in un formato leggibile da macchina, e piattaforme come Google ora mostrano questa provenienza ai lettori. Le immagini generate restano la scelta giusta per i diagrammi, per le scene non fotografabili e per uno stile illustrativo proprietario.
Come trovo automaticamente un'immagine che corrisponda al mio articolo?
Due chiamate. Prima chiedi a un modello linguistico di trasformare la bozza in un camera brief — un'unica frase di 12-25 parole che descrive una scena che una macchina fotografica avrebbe potuto catturare, mai l'argomento in sé. Poi invia quella frase a un'API di ricerca semantica di immagini, che classifica le foto in base al significato anziché all'abbinamento di tag. Con Pexafy si tratta di GET /api/v1/search/photos?q=…, circa 150 ms, e ogni risultato arriva già con dimensioni, licenza e una stringa di attribuzione pronta all'uso.
Qual è il prompt migliore per trasformare un articolo in una query di ricerca immagini?
Chiedi una scena fotografabile, non un riassunto: “scrivi UNA frase di 12-25 parole che descriva qualcuno che fa qualcosa da qualche parte; non nominare mai l'argomento; niente testo, loghi, grafici o persone famose; niente metafore invisibili; rispetta il tono dell'articolo; restituisci JSON”. Il prompt completo, pronto da copiare, è in questo articolo. La regola più importante di tutte è il divieto di astrazioni: “produttività” non trova nulla, “uno sviluppatore stanco che si strofina gli occhi davanti a due monitor a tarda sera” trova la foto.
Devo dare credito alle foto che uso nei post del blog?
L'attribuzione non è richiesta dai termini dell'API di Pexafy, e ogni risultato arriva già con una riga di credito pronta in HTML e testo semplice. La licenza associata a ciascuna foto dalla sua libreria d'origine continua comunque a disciplinarne l'uso, e mostrare il credito è ciò che segnala ai lettori — e ai motori di risposta — che l'immagine è una fotografia reale con un autore reale.
Claude o un altro agente IA possono trovare le foto per il mio articolo?
Sì, tramite il server MCP (Model Context Protocol) ospitato da Pexafy all'indirizzo mcp.pexafy.com/mcp. Aggiungilo come connettore personalizzato in Claude.ai o Claude Desktop e accedi con OAuth, oppure aggiungilo a Claude Code con un solo comando claude mcp add e una chiave API. L'agente potrà quindi cercare per frase, per immagine di riferimento o trovare foto simili da sé, mentre ha ancora la tua bozza nel contesto.
Come evito che ogni articolo del mio blog usi la stessa foto?
Salva il photo_id di ogni immagine pubblicata ed escludilo nell'esecuzione successiva — basta una colonna nel tuo CMS. È il tipo di errore in cui inciampa ogni pipeline automatizzata intorno al trentesimo articolo, ed è invisibile finché qualcuno non scorre l'indice del blog. Scrivere un nuovo camera brief per ogni sezione, invece di riutilizzare il titolo dell'articolo, fa il resto.

Basta cercare parole chiave. Descrivi ciò che intendi.

Cerca 9M+ immagini libere per significato — in qualsiasi lingua, in meno di 100 ms.