AI Transparency Ledger — come funziona
Un registro aperto, append-only e verificabile che certifica per ogni articolo e tool di federicocalo.dev la percentuale AI-generated vs human-authored. Pensato come estensione dell'E-E-A-T di Google e come conformità anticipata all'art. 50 del Regolamento UE 2024/1689 (AI Act).
Perché un ledger di trasparenza?
- Trust moltiplicatore. Il 77% dei lettori che identifica AI-generated content senza disclosure dichiara sfiducia permanente nel publisher (Edelman Trust Barometer 2025).
- Conformità anticipata AI Act. L'art. 50 del Regolamento UE 2024/1689 impone, dal 2 agosto 2026, il labeling machine-readable di contenuti AI-generated. Il ledger è già compliant.
- AI citation authority. Perplexity, ChatGPT e Claude iniziano a pesare la provenance dei contenuti. Dichiarare onestamente human vs AI contribution è un ranking signal emergente.
Cosa contiene una entry
Ogni entry del ledger è un record JSON firmato hash-chain. I campi principali:
aiGeneratedPct- Percentuale (0–100) di contributo AI stimata onestamente. 0 = 100% umano. 100 = AI grezzo, zero revisione.
aiProvider- Fornitore/modello usato (es. "cloudflare-llama-3-8b", "claude-opus-4-7"). Null se la generazione è puramente umana.
humanReviewer- Persona che ha validato il contenuto prima della pubblicazione. Default: Federico Calò.
promptHash- SHA-256 del prompt usato — non il prompt stesso (privacy). Permette la verifica: "dato il prompt X, il suo hash coincide?".
outputHash- SHA-256 del contenuto finale pubblicato. Consente verificare che il contenuto letto oggi corrisponde a quello dichiarato.
entryHash- SHA-256 di
outputHash || previousEntryHash || generationDate. È l'anello della catena. previousEntryHash- Link al precedente entry dello stesso contenuto. Se cambio idea e riscrivo un articolo, creo una nuova entry che punta a quella vecchia — la storia è immutabile.
Come verificare un'entry
- Fai
GET /api/v1/transparency/article/mio-articolo-slugper scaricare la catena completa. - Scarica il contenuto pubblicato e calcolane SHA-256. Deve coincidere con l'ultimo
outputHash. - Per ogni entry: calcola
SHA-256(outputHash || previousEntryHash || generationDate)e confronta conentryHash. Se uno qualsiasi dei campi è stato modificato a posteriori, la catena si rompe.
# Esempio verifica chain (bash + jq + openssl)
curl -s https://federicocalo.dev/api/v1/transparency/article/mio-slug | jq .data > chain.json
# Verifica outputHash per ogni entry
jq -r '.[].outputHash' chain.json
# Verifica entryHash
jq -r '.[] | "\(.outputHash)\(.previousEntryHash // "")\(.generationDate)"' chain.json \
| while read concat; do echo -n "$concat" | sha256sum; done
Policy editoriale
- Ogni articolo pubblicato dopo il 2026-04-22 ha obbligatoriamente una entry.
- Gli articoli precedenti sono stati backfillati con
aiGeneratedPct = 0(stima conservativa). Federico correggerà manualmente i casi in cui l'AI è stata usata. - Una modifica significativa (≥20% del testo) produce una nuova entry. Refusi, link broken, piccoli update SEO non generano nuove entry.
- La stima di
aiGeneratedPctè onesta ma soggettiva. Non pretende di essere metrica scientifica.
FAQ
Il ledger è pubblico?
Sì. Chiunque può leggere qualsiasi entry via API pubblica. Il write-access è riservato a Federico (admin-only).
È un Merkle tree come una blockchain?
No — per l'MVP è un single-linked hash chain (più semplice, sufficiente per il caso d'uso). Una versione futura potrebbe evolvere verso Merkle tree + anchoring su blockchain pubblica (Bitcoin OpenTimestamps, Ethereum L2).
Come posso contribuire o segnalare inesattezze?
Scrivi a [email protected] con oggetto "Transparency Ledger — [titolo]". Dopo la creazione del sistema lead, useremo un canale dedicato.
È conforme GDPR?
Sì. Il ledger registra hash dei prompt (non il contenuto), modello AI usato, nome del reviewer. Nessun dato personale di utenti.