26 06 Canale ambientale news development
Letti i 4 file. Riassunto stato: cartella e conoscenza pronte; canale pilota Ambientale News (short 9:16 IT); esiste workflow n8n F1 (fonti→AI→Telegram, inattivo); piano ancora scheletro. Proposta di partire dalla strategia (sez. 1–3) perché sono decisioni dell'utente. Poste 4 domande: Obiettivo (imparare pipeline / crescere e monetizzare / entrambi), Piattaforma (YouTube Shorts / Reels / TikTok / multi), Budget mensile strumenti, Stile visivo (voce+b-roll / testo+immagini+voce / avatar AI / proponi tu).
Verificate online: soglie YouTube Partner Program 2026 (1.000 iscritti + 4.000h su long o 10M views Shorts/90gg; le ore Shorts non contano per le 4.000h) e la policy "inauthentic content" (15-07-2025) (no contenuti templated/mass-produced; AI ammessa se c'è varietà e punto di vista). Proposta strategia sez. 1–3 (obiettivo, identità/formato Short 30–45s, pubblico). Chiesta conferma o modifiche.
Pivot registrato: canale inglese / internazionale (aiuta la monetizzazione, alza la concorrenza). Svolta analisi competitor con ricerca diretta su YouTube + web. Risultato: la nicchia "daily climate news short" è affollata di micro-canali tutti uguali (es. Daily Climate News, 103 iscritti); chi cresce ha un volto/brand (Simon Clark 737K, DW Planet A 790K, Down To Earth 857K). Servono angolo + qualità. Salvato materiali/analisi_competitor_2026-06-24.md. Chiesto quale angolo editoriale (soluzioni/good news / explainer "spiega il perché" / breaking-velocità / wow-natura&dati).
Scritte nel piano le sezioni 1–4 (obiettivo, identità/formato EN, pubblico internazionale, sintesi competitor) → v0.2. Aggiornati 01_contesto_canale.md (v1.1) e DIARIO.md. Chiesto come procedere sulla pipeline (tutta ora / solo Fase 1 / prima il nome).
Letta la conoscenza in cartella; verificati prezzi 2026 (ElevenLabs Creator ~$22, JSON2Video da ~$49,95, Google Chirp 3 HD $30/1M car. ma 1M car./mese gratis). Definite sez. 5–6: RSS gratis → LLM → voce Google Chirp 3 HD (gratis) → visual stock+immagini AI (Ken Burns) → montaggio cloud (JSON2Video/Creatomate) poi FFmpeg self-host → YouTube Data API. Tabella costi: ~€50–60/mese (avvio) o ~€5–15/mese (self-host). Piano → v0.3. Chiesto prossimo passo.
Ispezionati (sola lettura): workflow F1 (RSS ANSA → Limit → AI Agent OpenRouter → Telegram), base Airtable con tabella VF · Idee & Script, credenziali n8n (OpenRouter, OpenAI, Tavily, Brave, Airtable×2 httpHeaderAuth, Telegram, Perplexity, Postgres, Supabase; niente Anthropic né Google Drive). Proposto un nuovo workflow F1 EN (Guardian RSS → ultima notizia → AI Agent EN output JSON → Airtable Bozza → Telegram), lasciando intatto l'F1 IT. Chiesta conferma.
Chiesto cosa modificare, elencando gli aspetti tipici (fonti RSS/mix, selezione notizia, output/campi, struttura script, notifica, nome canale).
Riformulato: Fase 1 = studio editoriale a 2 agenti (Ricercatore multi-fonte → GDrive → Editor → Airtable). Segnalati due prerequisiti bloccanti: mancano in n8n le credenziali Anthropic API e Google Drive (le aggiunge l'utente). Trovato l'agente ricercatore esistente: "🛠️✅Agente 1 Ricerca" (usa Perplexity). Salvata in memoria l'impostazione "studio editoriale". Creata linea editoriale con criteri di rilevanza + 24 esempi (materiali/linea_editoriale_2026-06-24.md). Aggiornati piano (v0.4), contesto e memoria. Costruito e validato con l'SDK n8n il workflow "Video Factory - F1 EN" (id 9r6avQrhWyp90XTh): Ricercatore (Opus 4.7 + Brave + Tavily) → Google Drive → Editor (Opus 4.7, output strutturato) → Airtable (Bozza) → Telegram. Note: l'Opus supportato nel nodo n8n è claude-opus-4-7; Perplexity aggiungibile come 3° tool.
Airtable ora usa un Personal Access Token (le vecchie API key sono dismesse). Dove: airtable.com/create/tokens → Create new token → scopes data.records:read + data.records:write → concedere l'accesso alla base. In n8n la credenziale "Airtable auth" (httpHeaderAuth) deve avere Name = `Authorization`, Value = `Bearer <token>`. Indicate anche le altre chiavi utili (Anthropic: console.anthropic.com; Brave/Tavily già presenti).
Creata base "Video Factory" (id app671YeLxFM8eYyJ, workspace WSxClaude) con la tabella VF · Idee & Script (id tbl3QSLaW84ITRw3y) ricreata identica (campi e opzioni; omesso il link "Progetto"). Aggiornato il nodo Airtable del workflow F1 EN per puntare alla nuova base. Ricordato: il token deve concedere l'accesso a questa base.
Diagnosi: nel campo Name dell'header è stato messo "Airtable auth"; deve essere Authorization. Fix: Name = Authorization, Value = Bearer <token>. Il resto della pipeline aveva funzionato (Ricercatore/Drive/Editor ok).
È un 401: token rifiutato. Tre cause tipiche: (1) il token non ha accesso alla base nuova "Video Factory" (sospetto n°1, la base è nuova); (2) manca lo scope data.records:write; (3) Value non esatto (Bearer + token, uno spazio, niente virgolette). Consiglio: creare un token nuovo spuntando la base "Video Factory" + i due scope.
L'Editor ha messo N/A in un campo data. Fix lato workflow: se la data non è valida (regex YYYY-MM-DD) il campo resta vuoto (null); aggiunto typecast: true; corretti gli accenti dei Temi ("Natura & Biodiversità", "Politica & Società"); sistemati resource/operation del nodo Telegram. Chiesto di rilanciare.
Buona notizia travestita: l'Editor si è rifiutato di inventare (integrità corretta). Ma la causa vera è che le ricerche hanno restituito vuoto. Analizzata l'esecuzione: i tool Brave/Tavily hanno risposto con stringa vuota e l'agente cercava "2025"/"June 2025" (pensa di essere nel 2025). Applicati due fix: disattivato "Optimize response" su Brave/Tavily e iniettata la data odierna nel prompt del Ricercatore. Chiesto di rilanciare e cosa si intende per "prossima parte"; segnalato che conviene chiudere il bug della ricerca prima di costruirci sopra.
Ricerca strumenti avatar 2026. Scoperta chiave: l'API di HeyGen è pay-as-you-go (~$1/min standard, ~$4/min Avatar IV) → per uno Short di 40s ~$0,5–0,75 (≈$15–22/mese a 1/giorno), dentro budget. Proposta Fase 2: script → voce TTS → avatar pronuncia → montaggio (avatar+sottotitoli+b-roll) → pubblicazione. Poste 3 domande: sequenza (voce+montaggio poi avatar / avatar subito), voce (Google Chirp gratis / ElevenLabs brand), strumento avatar (HeyGen / D-ID / Synthesia / decidi dopo).
Aggiornata la roadmap del piano (Fase 2a voce → 2b montaggio → 2c avatar). Spiegato che Google Chirp è gratis ma richiede setup Google Cloud, mentre OpenAI è già collegato. Chiesto: partire con OpenAI ora o configurare prima Google.
Spiegazione semplice: il TTS trasforma lo script scritto in voce parlata; per usarlo n8n deve essere collegato al servizio. Google Chirp (gratis) richiede setup Google Cloud; OpenAI è già collegato e funziona subito (centesimi). Opzione A: partire con OpenAI e passare a Google dopo; Opzione B: configurare prima Google. Ri-posta la domanda.
Chiarito ElevenLabs: i $22 sono l'abbonamento Creator, ma esiste anche il pay-as-you-go (ricarichi crediti); per uso commerciale serve almeno Starter $5/mese. Fornita tabella comparativa TTS (Google Chirp 3 HD, OpenAI, ElevenLabs, Azure, Amazon Polly, PlayHT, Cartesia, Fish Audio) con modello di prezzo, costo, free tier, qualità EN, note. Per il nostro volume i costi sono minuscoli. Tre strade: OpenAI (subito), Google (gratis a regime), ElevenLabs (voce-brand).
Verificato stato 2026. Ai vertici per espressività: ElevenLabs v3 e Google Gemini-TTS; poi OpenAI, Azure. Spiegate le modalità di controllo: tag in linea parola-per-parola (ElevenLabs v3 [whispers], Gemini 200+ tag), istruzione per l'intera clip (OpenAI), SSML/stili (Azure "newscast"). Avviso: la "Chirp 3 HD gratis" è naturale ma la meno espressiva. Per l'avatar/brand meglio ElevenLabs v3 o Gemini-TTS; OpenAI ottima via di mezzo per partire.
Spiegato: quasi nessuno addestra da zero. Tre livelli: (1) clonazione vocale (facile, ore — es. ElevenLabs PVC), (2) fine-tuning di un modello open (medio, settimane — XTTS/StyleTTS2/Fish Speech/F5-TTS; 20k ore sono abbondanti), (3) da zero (difficile, mesi, non ne vale la pena). Punto controintuitivo: il collo di bottiglia è la preparazione dati (taglio, trascrizione/allineamento con Whisper, pulizia). Note su diritti/consenso e voce singola vs multi-voce. Consiglio: clonazione su ElevenLabs + eventuale fine-tuning open in homelab.
Salvata materiali/nota_voce_su_misura.md. Presentato il quadro mentale: piccola redazione automatica (ricerca → script → tua approvazione → voce → video → pubblicazione), con l'approvazione umana nel mezzo. Elencati i pezzi rimanenti con la domanda-chiave di ciascuno (struttura modulare, bug ricerca, voce, video/montaggio, avatar, pubblicazione, nome/identità). Proposto ordine; chiesto da dove ripartire (consigliato montaggio vs avatar).
Disegnata l'automazione F2 (produzione): legge record Approvato → voce OpenAI → salva audio → montaggio (render asincrono) → salva video → Airtable "Da revisionare" → ping Telegram. Già predisposta per l'avatar (come livello). Poste 2 domande: motore di montaggio (Creatomate / JSON2Video / FFmpeg) e ricchezza visiva del ponte (minimo sottotitoli+sfondo / + b-roll immagini).
Panoramica: due famiglie — motori di render (Creatomate, Shotstack, JSON2Video, Vidocu, FFmpeg) e generatori tutto-in-uno (Submagic, Kineclip, Revid, Vadoo, AutoFaceless). Consigliato Creatomate (editor visuale + API + livelli per l'avatar + controllo brand), con passo Pexels per il b-roll. Alternative: Shotstack (più codice), JSON2Video, o tutto-in-uno (meno controllo, rischio "tutti uguali"). Chiesto di confermare il motore.
Riflessione riformulata: la sincronizzazione è un problema di dati, non di strumento — la spina dorsale sono i timestamp (da Whisper). Correzione all'istinto "agente scrive codice ogni volta" (fragile): meglio agente-regista che produce un piano JSON + renderer in codice stabile che esegue e garantisce il sync. Candidati renderer: Remotion (React, sync al frame, gratis ≤3 persone) o FFmpeg. Chiesto di confermare l'impostazione e la scelta del renderer.
Spiegata la pipeline: audio → Whisper (timestamp) → agente-regista (piano JSON) → Remotion → video. Scaffolddato il progetto `montaggio_remotion/` (Remotion 9:16: EnvShort.tsx con sottotitoli sincronizzati + b-roll a livelli + titolo/brand + audio; Root.tsx; sample-plan.json; README.md). Mostrata un'anteprima di un fotogramma.
Costruito e creato il workflow "Video Factory - F2a Voce (test)" (id aq9Z7DKbzkThQl1M): legge uno script Approvato da Airtable → OpenAI TTS (tts-1-hd, voce onyx) → audio su Telegram. Testabile con le credenziali già presenti (selezionare a mano Airtable auth; eventualmente usare la credenziale "OpenAi account"). Fornite le istruzioni di test.
Chiave: per un canale explainer il visual serve a far capire, e Remotion è anche un motore di animazioni esplicative (gratis, nativo). Menu fonti: stock (Pexels), immagini AI (fal.ai/FLUX), clip video AI (care), motion graphics (grafici/mappe/numeri animati). Proposta "lingua visiva" (opzione b): contesto stock/AI + un modulo grafico per il dato chiave. Esempi (record temperatura → grafico che sale; solare vs carbone → barre; deforestazione → mappa; EV → linea). Chiesto quanto spingere sulle animazioni (a minimo / b mix consigliato / c spinto).
Aggiunti a Remotion i moduli grafici riutilizzabili in src/Graphic.tsx: counter (numero animato, es. 21.1°C) e barChart (barre che crescono). Integrati in EnvShort.tsx; aggiornati Root.tsx, sample-plan.json, README.md. Mostrata l'anteprima del "momento explainer" con il contatore.
Vincolo chiave: n8n cloud non può eseguire Remotion → architettura a due parti (n8n orchestratore + servizio "video worker" nell'homelab che rende via HTTP). Costruiti: (1) servizio render in montaggio_remotion/ (server.mjs con /health, /render renderer puro testabile col sample, /produce con Whisper per i timestamp), Dockerfile, .dockerignore, SERVER.md; (2) workflow "Video Factory - F2 Genera video" (id SO352a2tWVD6rC6R): Airtable Approvato → Regista (GPT-5 mini, output: accent+brollQuery+grafico) → Pexels (3 immagini portrait) → OpenAI TTS → Code (assembla brief + audio base64) → POST al servizio /produce → video su Telegram + Stato Da revisionare. Prerequisiti: credenziale Pexels, servizio attivo con OPENAI_API_KEY, URL pubblico via tunnel. Revisione onesta: gira solo con l'infrastruttura; testare prima il servizio da solo.
Corretto /render per accettare direttamente il sample-plan.json. Forniti i comandi PowerShell (due finestre): Finestra 1 npm install + npm run serve; Finestra 2 curl.exe /health + curl.exe -X POST /render --data-binary @src/sample-plan.json --output out/test.mp4 + start. Note: usare curl.exe; primo render lento; video muto ma completo.
Aggiunto il Passo 0: winget install OpenJS.NodeJS.LTS + chiudere/riaprire PowerShell + verificare node --version/npm --version. Poi Finestra 1 e Finestra 2.
Spiegato il flusso in 4 passi: (1) testo rielaborato da un LLM; (2) voce TTS (monotona = firma del TTS long-form o voce clonata); (3) una sola immagine di Penrose; (4) lip-sync audio-driven su immagine singola (InfiniteTalk open-source per lunghezza illimitata, HeyGen Photo Avatar, Hedra, D-ID; open: SadTalker/Wav2Lip/LivePortrait). Perché 400k views con pochi iscritti: costo bassissimo + spinta algoritmo + titolo/miniatura. Nota etica: è un deepfake di una persona reale (policy/diritti) → noi useremo un avatar sintetico generico. Stessa tecnica utile per la Fase 2c, con audio nostro.
È un problema di PATH: la finestra era aperta prima dell'installazione. Aprire una finestra nuova; se node non c'è, installare con winget e riaprire; in alternativa forzare il PATH di sessione $env:Path += ";C:\Program Files\nodejs".
È l'Execution Policy di PowerShell. Fix consigliato: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned (rispondere S), poi npm install / npm run serve. Alternativa senza modifiche: usare npm.cmd.
Servizio acceso. Fornite le istruzioni Finestra 2 (health + /render col sample → out/test.mp4 → start). Note su primo render lento (download browser) ed errori eventuali.
Traguardo: il motore di montaggio funziona. Prossimo: un video "vero" (script → voce → sync Whisper → b-roll → grafico). Mancano setup "casa" (chiave OpenAI al servizio) e setup "automazione" (Pexels + tunnel). Poste 2 opzioni: video vero in locale (consigliato) o collegare subito n8n.
In locale il passo aggiunge: il tuo script, la voce AI, i sottotitoli sincronizzati davvero (Whisper). Non ancora il b-roll vero (serve Pexels/n8n). Serve a verificare voce + sync prima di investire nel tunnel. Chiesto se procedere così o saltare all'automazione.
Esteso il servizio: /produce ora accetta anche uno script (genera voce con OpenAI TTS + Whisper + montaggio); fallback a 3 sfondi a tinta se non c'è b-roll. Creato test-produce.json (script reale + contatore 21.1°C). Forniti i comandi: Finestra 1 riavvio con $env:OPENAI_API_KEY="…" + npm run serve; Finestra 2 curl.exe -X POST /produce --data-binary @test-produce.json --output out/real.mp4 + start. Note su costo (due chiamate OpenAI) ed errore chiave.
Riformulato il sotto-progetto "bot di ricerca notizie → file → Telegram". Nota di sicurezza: il token Telegram è un segreto, non lo salvo in chiaro né in memoria; va usato per creare la credenziale in n8n. Avviato l'esame dello spazio di lavoro per leggere le lettere personali e capire i temi (la lettura via shell ha dato errore transitorio).
Nessun problema; recap dello stato (servizio render locale attivo, test video "vero" pronto; bot di ricerca → Telegram da riprendere leggendo le lettere personali).
Creato questo file di log.
Stato del progetto a fine chat (riepilogo)
Fase 1 (testo) — costruita. Workflow n8n "Video Factory - F1 EN" (id 9r6avQrhWyp90XTh): studio editoriale a 2 agenti (Ricercatore Opus 4.7 + Brave/Tavily → Google Drive → Editor Opus 4.7 → Airtable Bozza → Telegram). Aperto: la ricerca a volte torna vuota (applicati fix optimizeResponse + data odierna, da riverificare); mancano credenziali Anthropic e Google Drive in n8n.
Airtable. Nuova base "Video Factory" (app671YeLxFM8eYyJ), tabella VF · Idee & Script (tbl3QSLaW84ITRw3y). Credenziale "Airtable auth" = header Authorization: Bearer <PAT>, con accesso alla base + scope data.records:write.
Fase 2a (voce) — test funzionante. Workflow "Video Factory - F2a Voce (test)" (id aq9Z7DKbzkThQl1M): script Approvato → OpenAI TTS → audio su Telegram.
Fase 2 (video) — costruita. Servizio `montaggio_remotion/` (Remotion + server.mjs: /render, /produce con Whisper; Dockerfile; moduli grafici counter/barChart). Workflow "Video Factory - F2 Genera video" (id SO352a2tWVD6rC6R). Prerequisiti: credenziale Pexels, servizio con OPENAI_API_KEY, URL pubblico via tunnel. Servizio testato in locale con successo (render del sample).
Materiali creati: analisi_competitor_2026-06-24.md, linea_editoriale_2026-06-24.md, nota_voce_su_misura.md, cartella montaggio_remotion/ (progetto Remotion + servizio). Piano 02_piano_sviluppo.md a v0.4.
Prossimo passo: completare il test del video "vero" in locale (/produce con test-produce.json), poi collegare l'automazione (Pexels + tunnel). In sospeso: sotto-progetto "bot di ricerca → Telegram" (leggere le lettere personali per i temi, creare contesto + file sui tipi di ricerca, sviluppare i workflow stile Agente 1 Ricerca).