di GIOVANNI CERUTTI
Indice del contenuto
A questo punto della trilogia dovrebbe essere chiaro che il soggetto dei nostri articoli, l’indice EPIX, ambisce a definire uno standard teso a restituire con un solo dato il numero di visualizzazioni di un brand online a favor di brand equity.
È l’indice che unisce editoria, pubblicità, social media, SEO: tutto in un unico sguardo, per fornire una risposta sensata a chi, come l’editore di Eufemia che toccandola piano chiede una settimana sì ed una no “come stiamo andando”: presente?
Dopo aver spiegato com’è nato EPIX e cosa c’è dentro, passiamo ora a spiegare come ci stiamo immaginando il codice, come lavoreremmo con Python (per esempio) per mettere a sistema non solo articoli, ma anche campagne, canali e iniziative diverse.

Programmazione
Dietro la semplicità di EPIX c’è una sfida tecnica: raccogliere e selezionare dati dalle più disparate fonti di performance – tantissime – e sommarli. Nella nostra testa Python è il coltellino svizzero perfetto: parla con le API, estrae i dati, li invia nella propria routine per restituire alla fine quel numero unico che, chissà, un giorno potremmo leggere persino nel Cifra 3 di Solari (ci torneremo). E per dire dell’impegno attorno ad EPIX, scatta la sfida, per chi vorrà cimentarsi: contribuire a perfezionare il prompt qui sotto o – grazie fin d’ora – scriverlo da zero. Insomma, sporcarsi le mani per raffinarlo.
Obiettivo
Progetta la libreria Python (>=3.10) “epix_pipeline” + CLI che calcola EPIX come somma di TUTTI gli eventi (forti+deboli) per contenuto in una finestra configurabile (7d/30d/evergreen). Nessuna ponderazione (EPIX+ verrà dopo). Output: CSV+JSON + serie per trend.
Input & schemi
Supporta CSV iniziali (POC). Specifiche comuni: UTF-8, separatore “,”, header.
GA4.csv: canonical_url, pageview, session_start, scroll_50, engaged_time_s, ts
Social.csv: channel, canonical_url, event(raw), ts
Email.csv: campaign, canonical_url, event(raw: send|open|open_weak|click), ts
Search.csv: canonical_url, query, impression, click, ts
Aggiungi 3 file di esempio con 100 righe ciascuno.
Normalizzazione & mapping
Tutti i timestamp in UTC; campi ts ISO8601.
Mappa eventi raw → event_type {impression, click, read, read_qualified (>=30s o >=50% scroll), share, save, comment, reply, video_view, video_complete (>=90%), cta_click, dm, email_open, email_open_weak, email_click, newsletter_signup, other}.
Definisci una YAML “mapping.yml” per canale→event_type (fornisci esempi).
Identità & dedup
content_id = hash(canonical_url normalizzata).
Dedup primario: event_id se presente.
Dedup secondario quando manca: chiave (channel, content_id, event_type, ts_round_1s).
Gestisci late-arriving events: considera una finestra di backfill configurabile (default 7 giorni).
Regole EPIX
EPIX(content_id, window) = COUNT di QUALSIASI event_type nel range [start,end).
Calcola diagnostica epix_strong (read_qualified, share, save, comment, reply, video_complete, cta_click, email_click, newsletter_signup) vs epix_weak (resto).
Trend: serie giornaliera, delta assoluto e percentuale vs periodo precedente omologo, media mobile 7g. Se copertura <70% canali attesi → coverage_warning.
Output
CSV epix_snapshot.csv: content_id, canonical_url, window_label, epix_total, epix_strong, epix_weak, delta_prev_abs, delta_prev_pct, rolling_7d.
JSON epix_api.json con stesso payload per integrazione.
CLI
epix run –window 7d –since 2025-01-01 –input ./data/*.csv –out ./out
epix backfill –window 30d –from 2024-01-01 –to 2025-09-20
epix check (stato mapping.yml, copertura canali, validazione schemi)
Config via .env (API keys future) + mapping.yml.
Qualità & test
Test unitari: parsing CSV, mapping, dedup, calcolo EPIX, trend, coverage_warning.
Report qualità per canale (eventi/cont per giorno) in logs.
Gestisci file grandi con lettura a chunk.
Sicurezza
Nessun user_id o PII; solo conteggi aggregati per content_id.
Note GDPR nel README.
Roadmap
Fase 1: CSV importer + core EPIX + test + CLI.
Fase 2: stubs connettori (GA4, Search Console, Meta, LinkedIn, YouTube, ESP).
Fase 3: connettori reali (fuori scope di questa consegna).

Attenzione!
I più attenti avranno notato che all’interno del nostro codice manca l’istruzione ”Nessuna ponderazione (EPIX+ verrà dopo)”.
Non è una svista, ma una scelta deliberata: prima di investire energie su un indice più complesso (EPIX+), vogliamo capire se la radicale semplicità di EPIX, lasciata respirare nel tempo, possa rivelarsi più solida di qualunque sofisticazione successiva.
Perché non sarebbe la prima volta che la semplicità batte la complicazione.
Certo, i nostri partner immaginano già EPIX+ come un indice ponderato, capace di restituire sfumature interpretative — tiepido, buono, risonante. In quell’algoritmo, accanto a V (le visualizzazioni totali, base di EPIX) entrerebbe almeno T (il tempo medio di esposizione per visualizzazione).
E riducendo le equazioni al minimo (EPIX = V, EPIX+ = V x T), restiamo convinti che la vera forza stia nell’idea originaria: cominciare da EPIX, semplice fino all’osso.
Troppo semplice?
Non “quanti click” o “quanti follower”, ma quali articoli hanno generato movimento, conversazioni, condivisioni? Quante azioni totali effettive?
Basta EPIX e la risposta si materializza da sola, situazione interessante per un finanziatore o uno sponsor. A persone con quel profilo non servono decine di dashboard: basterà dir loro che un contenuto ha toccato un EPIX di 8.200 mentre un altro si è fermato a 2.700.
EPIX diventa così uno strumento di confronto non solo tra articoli, ma anche tra campagne, canali e iniziative diverse.

E i concorrenti?
Nel secondo articolo si diceva che EPIX non avesse veri competitor: è sorprendente, ma è proprio così, e se la spiegazione potrebbe essere banale (non c’è perché non serve), viceversa la sua creazione potrebbe essere l’uovo di Colombo che ha dato il titolo a questa trilogia.
Diteci la vostra.
L’invito alla riflessione è aperto e ora tocca a voi, lettori, professionisti, curiosi.
Vi interessa che EPIX diventi un linguaggio condiviso, oltre i confini di Eufemia?
Vedete margini di perfezionamento, rischi, applicazioni nuove?
Tenendo presente che la complicazione dev’essere un’opzione e non il punto di partenza, come emerge anche da un post di Francesco Agostini all’insegna della semplificazione.
Pensateci bene, e diteci la vostra.
Parola di Eufemia.











