Sistema pagine pillar: differenze tra le versioni

[versione verificata][versione verificata]
WikiBot (discussione | contributi)
manuale sistema pillar v1
 
WikiBot (discussione | contributi)
wiki_new.py
 
(6 versioni intermedie di uno stesso utente non sono mostrate)
Riga 15: Riga 15:
* MAI ripetere automaticamente un comando non idempotente: un timeout lato client puo' essere stato comunque eseguito lato server (rischio doppie esecuzioni). Mettere la guardia nel comando stesso (if pgrep ... then GIA_ATTIVO else lancia).
* MAI ripetere automaticamente un comando non idempotente: un timeout lato client puo' essere stato comunque eseguito lato server (rischio doppie esecuzioni). Mettere la guardia nel comando stesso (if pgrep ... then GIA_ATTIVO else lancia).
* se l'SSH verso hostgator risponde "Connection reset", e' throttling temporaneo: loop di retry ogni 5 minuti sulla VM, non a mano.
* se l'SSH verso hostgator risponde "Connection reset", e' throttling temporaneo: loop di retry ogni 5 minuti sulla VM, non a mano.
== ChatGPT e il connettore MCP: problema noto e soluzioni ==
SINTOMO (osservato il 29/08): il discovery MCP riesce (25 tool elencati) ma la chiamata immediatamente successiva fallisce con "Resource not found: Command_Center_V3.wiki".
DIAGNOSI VERIFICATA (29/08, test diretto sul bridge): il bridge MCP (/mcp-v3 su sheets-connector) e' GIA' STATELESS — initialize, tools/list e tools/call funzionano da connessioni separate senza sessione. Il blocco e' nel CLIENT ChatGPT: in chat normale i connettori possono invocare solo tool chiamati "search" e "fetch"; gli altri vengono elencati dal discovery ma rifiutati all'invocazione ("Resource not found" e' il messaggio di ChatGPT, non del server). Credenziali e Command Center non c'entrano.
RISOLUZIONE APPLICATA (29/08, bridge v3.1): al bridge sono stati AGGIUNTI i tool "search" e "fetch" nel formato che ChatGPT accetta in chat normale. search interroga wiki di lavoro + memoria CC (con timeout: se la memoria e' lenta rispondono comunque i risultati wiki); fetch recupera il contenuto per id ("wiki:TITOLO" o "mem:ID"; un titolo wiki nudo vale come wiki:TITOLO). Quindi la chat coordinatrice ChatGPT puo' LEGGERE tutto il sistema (manuale, bacheca, cantieri, memoria) attraverso il connettore stesso, anche quando il suo browser fallisce.
PER L'ESECUZIONE COMPLETA (cc_vm_exec, wiki edit, ecc.) dalla chat ChatGPT: serve la modalita' sviluppatore dei connettori MCP di ChatGPT (impostazioni dell'account ChatGPT, lato OpenAI: non dipende da noi); in alternativa un custom GPT con Actions sullo schema OpenAPI "openapi_command_center.yaml" (nel Project Claude). Con la modalita' sviluppatore attiva valgono per ChatGPT gli STESSI obblighi delle chat Claude: cc_session_open a inizio chat, commessa aperta al primo comando, journal STEP, handoff a milestone (vedi sotto).
AGGIORNAMENTO v3.2 (29/08, pomeriggio): AUTO-SESSIONE. Se il client non passa il parametro session a cc_vm_exec o cc_vm_task, il bridge apre da solo una sessione via /session/open e la usa: il bootstrap circolare (serve la sessione per eseguire, ma serve eseguire per avere la sessione) non esiste piu'. Testato end-to-end: cc_vm_exec senza session esegue sulla VM. La chat coordinatrice ChatGPT puo' quindi operare in modo completo dal connettore; resta buona pratica chiamare cc_session_open una volta a inizio chat e passare l'ID (audit piu' leggibile), e restano OBBLIGATORI commessa, journal STEP, handoff e annuncio in bacheca prima di toccare un pid.
Rollback del bridge se servisse: backup pre-patch in gs://isicnv-command-center-routes/backups/ (mcp-v3 e mcp-bridge, timestamp 20260829T134644Z per la v3.0 e 20260829T142125Z per la v3.1), da ripostare su POST /self-update.


== Coordinamento tra chat (interchat) ==
== Coordinamento tra chat (interchat) ==
Riga 42: Riga 51:


Banda 1800-2200 parole, ma la sostanza vince sulla banda. H2 formulati come le domande reali degli utenti (prendere le query da Google Search Console, non inventarle). Grassetti: uno ogni ~13 parole, mai frasi intere. Citazioni dirette solo reali, tra virgolette basse con attribuzione. Niente promesse terapeutiche; sempre una sezione su ambito e limiti. Uno o due elenchi puntati (le AI li citano). FAQ con 4 domande. Note numerate a pie' di pagina con fonti. Link interni solo a pagine VERIFICATE esistenti. Chiusura con il paragrafo sui seminari dal vivo e l'Universite Europeenne. I tre rami polivagali si spiegano UNA volta sola per pagina. Nessun taglio va perso: tutto negli scorpori. Il tema che coincide col titolo della pagina non si scorpora mai.
Banda 1800-2200 parole, ma la sostanza vince sulla banda. H2 formulati come le domande reali degli utenti (prendere le query da Google Search Console, non inventarle). Grassetti: uno ogni ~13 parole, mai frasi intere. Citazioni dirette solo reali, tra virgolette basse con attribuzione. Niente promesse terapeutiche; sempre una sezione su ambito e limiti. Uno o due elenchi puntati (le AI li citano). FAQ con 4 domande. Note numerate a pie' di pagina con fonti. Link interni solo a pagine VERIFICATE esistenti. Chiusura con il paragrafo sui seminari dal vivo e l'Universite Europeenne. I tre rami polivagali si spiegano UNA volta sola per pagina. Nessun taglio va perso: tutto negli scorpori. Il tema che coincide col titolo della pagina non si scorpora mai.
=== Regole nei gate deterministici (aggiornato 31/08/2026) ===
I gate vivono in <code>/home/claudeuser/scripts/pipeline_completa.py</code> (numeri R123-R137 dal coordinatore; R138-R144 da Marco e dai suoi libri di scrittura). Sintesi vincolante:
* '''R138 la regola del segreto''': le pagine parlano di segreti e misteri (anche "trascendere l'abituale"), come minimo nella parte storica e con formule dirette ("il segreto è..."). Almeno 2 occorrenze; la frase su Paracelso/Fludd/alchimia/Egitto deve contenerle. Frase storica canonica: "Nelle radici storiche del magnetismo si ritrovano precedenti in Paracelso, Fludd e nei segreti degli antichi alchimisti; la Scuola legge questa linea in continuità con radici ancora più antiche, che riconduce agli antichi egizi e pratiche considerate sacre."
* '''R139''' la cifra tangibile batte la percentuale: niente "fino al X%", "molti", "many" senza un numero vero nella frase.
* '''R140''' il terzo rigo è l'apertura vera: niente preamboli meta nel primo paragrafo ("in questo articolo", "before we begin", "nowadays").
* '''R141''' la parola più corta vince: via "utilizzare, effettuare, implementare, leverage, in order to"; frasi entro 30 parole.
* '''R142''' ogni sigla spiegata alla prima occorrenza (esenti: MESMERISMUS, ISI-CNV, PNL, CNV).
* '''R143''' la parola di potere è "perché": ogni invito all'azione porta la sua ragione nella frase.
* '''R144''' rapporto dei pronomi: molto tu/voi, "noi" solo per la partnership, "io" al massimo tre volte.
Orientamenti vincolanti per il Concilio (richiedono giudizio, non regex): '''C2''' titoli e immagini mostrano la soluzione, mai il problema; '''C5''' ogni caratteristica (livelli, ore, moduli) porta accanto il suo beneficio; '''C9''' ogni promessa ("imparerai") ha nel paragrafo una prova (numero, esempio, nome). Origine e meccanismi di verifica: wiki ops, pagina Regole_scrittura_libri.
=== Revisione e pubblicazione (regola di Marco, 31/08/2026) ===
Niente più cartelle preview-*. Una pagina in revisione vive già al suo URL definitivo, pubblicata con noindex (<code>preview_pillar.py PID</code> imposta il post meta <code>_isicnv_preview=1</code>, letto dal mu-plugin isicnv-pillar-seo.php). Pubblicare = <code>pubblica_pillar.py --cluster NOME --lingue en=PID,it=PID,...</code>: toglie il flag, imposta l'estratto (meta description), registra il gruppo hreflang nel mu-plugin, verifica dall'esterno (200, lang, title, canonical, noindex assente, meta description, hreflang, GA4, sitemap) e con un browser vero. Le altre lingue: <code>traduci_cluster.py --sorgente PID --base slug --lingue fr,es,de,pt,ru,bg</code> crea post nativi (slug -lang, meta _pll_lang) solo se passano il gate di qualità (H2 completi, parole ±30%, niente inglese residuo, MESMERISMUS® conservato).
== Il secondo motore: espansione (attivo dal 29/08) ==
Il primo motore SCRIVE le pagine; il secondo decide QUALI scrivere, le misura e le arricchisce.
* STRATEGA (scripts/stratega.py, cron domenica 05:30 UTC): legge 90 giorni di query reali da Search Console sui due siti, le confronta col registro pagine, individua i cluster di domanda SENZA pagina dedicata e le pagine in posizione 5-25 da potenziare. Con --proponi aggiunge i 2 migliori candidati a coda_temi (marcati "proposta stratega"); con --questionario genera per il candidato di punta il QUESTIONARIO DI GROUNDING per Marco e lo crea come Google Doc su Drive (titolo "Questionario pillar - TEMA") oltre che su GCS docs/. Le risposte di Marco sono il materiale che nessun concorrente ha: la fabbrica non scrive un tema proposto finche' il questionario non e' compilato. Report: pillars/strategia_report.txt e GCS docs/strategia_report.txt.
* SENTINELLA ANALYTICS (scripts/bq_sink_cruscotto.py, cron 07:35 UTC, dopo il cruscotto delle 07:15): ogni giorno versa le metriche del cruscotto in BigQuery, dataset pillar_intelligence, tabella metrics_giornaliere (data, sito, pagina, impressioni, click, posizione, coorte, finestra). Il perimetro cresce DA SOLO: il registro pagine del cruscotto si estende automaticamente a ogni pagina pubblicata su WordPress. Idempotente sul giorno. Alert automatici in bacheca (mittente sentinella-analytics): calo impressioni >40 percento su pagina pillar, ingresso in top 10. Interrogazione: cc_bq_query o POST /bq/query su pillar_intelligence.metrics_giornaliere.
* ARRICCHITORE GEO/SEO (scripts/arricchitore.py, nella catena della fabbrica): scrivere bene non basta: la pagina deve avere ELEMENTI RICCHI per punteggiare in SEO e GEO. Pagella per pagina (arricchitore.py PID): almeno 1 VIDEO embed del Prof. sul tema, immagini con ALT descrittivo, DATI STRUTTURATI JSON-LD, liste citabili. Con --schema genera e inserisce Article + FAQPage JSON-LD (snapshot prima; annunciare in bacheca se la pagina e' live). Video e immagini restano scelte umane o della chat che rifinisce: la pagella dice DOVE mancano. Stato attuale: 6751 e 6828 sono senza video, immagini e JSON-LD - primo lavoro di arricchimento da fare.


== Stato al 28/08/2026, sera ==
== Stato al 28/08/2026, sera ==
Riga 51: Riga 82:
* Versione A (crisi-mesmerica-liberazione, pid 6747) — proposta: redirect 301 sulla definitiva; DECISIONE APERTA
* Versione A (crisi-mesmerica-liberazione, pid 6747) — proposta: redirect 301 sulla definitiva; DECISIONE APERTA
* Coda temi fabbrica: catalessi (il tema Arkeos NON va in fabbrica: la pagina arkeos-direttore-interno esiste gia', va potenziata)
* Coda temi fabbrica: catalessi (il tema Arkeos NON va in fabbrica: la pagina arkeos-direttore-interno esiste gia', va potenziata)
== PIPELINE PAGINE v2 — analisi e ridisegno (06/09/2026) ==
Analisi fatta dopo le pagine 7094 e 7110 (passi mesmerici) e la revisione anti-impronta AI (sezione 52 del registro). Vale per QUALSIASI modello: Claude, ChatGPT (via Actions), Gemini.
=== Che cosa non funziona nella v1 (pagina.py, 10 stadi) ===
{| class="wikitable"
! Stadio v1 !! Problema misurato !! Decisione
|-
| 3 titolo+struttura via LLM (JSON) || fragile: JSON non trovato, struttura sempre uguale || TOLTO come LLM. Struttura = scelta di ARCHETIPO (52.5) + H2 dalle query GSC reali. LLM solo per proporre 3 titoli.
|-
| 4 collage BM25 (8085) || rumoroso || SOSTITUITO: semantico 8088 + reranker 8089.
|-
| 7 stesura con i motori del gateway (kimi/glm/minimax) || 8 tentativi falliti, ignorano le bande, tic AI, tolgono il nome di Marco || TOLTO. La stesura e HANDOFF a un editor AI (Claude o ChatGPT) sul materiale degli stadi 1-6. E cio che ha funzionato su 7094 e 7110.
|-
| 9 concilio_pid.py || fallisce (persuasion plan / GSC assente) || SOSPESO finche non riparato.
|-
| 9 pipeline_completa.py --esegui || PEGGIORA i testi || MAI sulle pagine di Marco.
|-
| 2 wiki idee collegate || spesso vuoto || OPZIONALE.
|}
=== Che cosa manca nella v1 (aggiunto in v2) ===
* 0. CANNIBALIZZAZIONE: prima di creare, cercare pagine sorelle con lo stesso intento (caso 7068 vs 7094). Si affianca SOLO con intento diverso (M43); altrimenti si unisce o si fa redirect.
* 3b. ARCHETIPO (52.5): storica / fenomenologica / scientifica / dimostrativa / personale. Mai due consecutive uguali.
* 7b. OSSERVAZIONI PERSONALI DI PARET (52.3): 2-3 per pagina, pescate con query mirata sul corpus dei SUOI libri e seminari. Mai inventate.
* 8a. GATE ANTI-IMPRONTA AI: metafore max 3 (metafore.py come gate); simmetria delle H2; tic vietati (52.8); doppia frase nelle note max 1/3 (52.6); tradizione-neuroscienza una volta sola (52.7).
* 8b. DEDUP TRA PAGINE SORELLE (51.21): eccezione solo slogan/aforismi/forti affermazioni.
* 8c. LINT TEMPI (51.13): pratica al presente; opere, autori, episodi, magnetisti del passato al passato.
* 8d. LINT MARCHIO E LESSICO: Mesmerismus(R) (51.2); no copione, no vecchi, no una scuola, no negativi.
* 9v. VERIFICA LIVE = FILE (52.13): dopo la pubblicazione si confronta la pagina pubblica con il file finale; se diversa il deliverable NON e compiuto (bug trovato su 7062: online c era ancora la v1).
* 11. CICLO NOTE DI MARCO (oggi manuale, ora stadio): Doc IT, sue note, estrazione regole (nuova sezione in modelli_paret.md + registro), reintegrazione, pubblicazione, Doc STRATIFICATO (note di Marco / VECCHIA VERSIONE / NUOVA VERSIONE) (M50.6).
* 12. CHIUSURA: History wiki + memoria CC + cantiere (handoff.py).
=== La pipeline v2, stadio per stadio (comandi via /vm/exec-direct) ===
Per ogni modello: GET /session/open?chat=NOME&scopo=pagina (restituisce session); poi POST /vm/exec-direct {"session":ID,"cmd":"..."} (max 60 s). Regole: memory_search "modelli_paret" oppure /home/claudeuser/scripts/modelli_paret.md.
# 0 cannibalizzazione: cercare pagine sorelle con intento simile (wp post list + GSC); se una c e gia: STOP e proporre affiancamento con intento diverso
# 1 tema+GSC: pagina.py --slug SLUG --tema "..." --lang en --da 1
# 2 wiki (opzionale): --da 2
# 3 archetipo + H2 da GSC: scegliere l archetipo e registrarlo in stato.json; H2 = domande reali delle query; titolo: 3 proposte
# 4 collage semantico: 8088/query + 8089/rerank per ogni H2 (non BM25)
# 5 concorrenza: --da 5
# 6 regole: modelli_paret.md priorita 1 + ultime tre sezioni (oggi 50-52)
# 7 stesura = HANDOFF: materiale (stadi 1-6) in un Doc su Drive Per pagine; l editor AI scrive pagina.html rispettando bande, archetipo, sezione 52
# 7b osservazioni di Paret: query corpus solo autore Marco Paret (Training Manual, Mesmerismus, seminari): 2-3 frasi vere con fonte
# 8a gate anti-AI: metafore.py --pid PID --max 3; tic; simmetria H2
# 8b dedup sibling: dedup_frasi.py --pid PID --siblings SLUG1,SLUG2
# 8c-8d lint: forma_finale.py + lint tempi + lint marchio/lessico
# 8 bozza WP con guardia e backup: --da 8 (ESCE SEMPRE IN BOZZA)
# 10 Doc IT in Per pagine: --da 10
# 11 ciclo note di Marco: note nel Doc, nuova sezione N nel registro, reintegrazione, pubblicazione (decisione di Marco), Doc stratificato
# 9v verifica live: curl URL pubblica e grep di 3 frasi-chiave della versione finale; se mancano non e FATTO
# 12 chiusura: History wiki (via wiki_new.py), memoria CC, handoff.py --salva
=== Come la usa ChatGPT (senza MCP) ===
ChatGPT usa le Actions OpenAPI del Command Center (OpenAPI_Command_Center_GPT_Actions.yaml): session_open, vm_exec, memory_search, memory_add, jobs_list, learnings_check. Sequenza: (1) session_open chat=chatgpt-pagine scopo=pagina; (2) memory_search "pipeline pagine v2" e "modelli_paret sezione 52"; (3) vm_exec per gli stadi 0-6; (4) legge il Doc del materiale su Drive e SCRIVE la pagina come editor (stadio 7) rispettando archetipo e sezione 52; (5) vm_exec per caricare pagina.html a blocchi base64 e lanciare i gate 8a-8d; (6) vm_exec --da 8 (bozza) e --da 10 (Doc IT); (7) annuncia sulla Bacheca_interchat; (8) chiude con ESITO/PROVA/RESTA. La pubblicazione la fa Marco, o l editor su sua istruzione esplicita (poi verifica live 9v).
=== Regola d oro anti-AI per l editor ===
Prima di scrivere: scegli l archetipo. Mentre scrivi: massimo 3 metafore, non tutte le sezioni con lo stesso schema, 2-3 osservazioni vere di Paret con fonte, qualche frase breve e assertiva, doppia lettura in un solo punto, doppia frase solo dove serve. Dopo: gate 8a-8d, dedup con le sorelle, lint tempi, verifica live. Le idee-brand si ripetono; la sceneggiatura no.
=== Aggiunta v2.1 (06/09/2026): stadio 7c — VIDEO IN OGNI PAGINA (sezione 53 del registro) ===
* Ogni pagina incorpora UN video YouTube nostro, scelto per argomento + engagement + viste (BigQuery isicnv_youtube.videos, v_top_videos_global, video_retention).
* Si VARIA: registro isicnv_youtube.video_assegnazioni (gia_usato_volte); mai lo stesso video su due pagine.
* TRASCRIZIONE LETTA PRIMA (isicnv_youtube.video_transcripts). Se manca: scaricarla con il token del canale (YouTube Data API captions, token yt-neurolinguistic) — YouTube blocca i download anonimi dal server. Nel testo si descrive del video SOLO cio che dice la trascrizione. Parte rilevante -> start=<secondo>.
* MERGE con pagina-video sottile: la pagina nuova tiene il video (o uno nostro migliore verificato) e riproduce in testa le due righe originali con tutte le keyword, poi continua. La pagina vecchia resta finche Marco non decide il 301.
* Comando tipo: bq query "SELECT video_id,title,view_count,like_count FROM isicnv_youtube.videos WHERE LOWER(title) LIKE %tema% ORDER BY view_count DESC" -> verificare transcript -> INSERT in video_assegnazioni -> embed iframe in testa alla pagina.