Machine 01 · Script Generator Shorts
Pipeline quotidien : scrape → Whisper → Claude → compliance → B-rolls. Ton, sources, coûts, reproduction.
Vue d'ensemble
Machine 01 produit chaque matin à 2h00 (Europe/Paris) 7 scripts de Reels Instagram / TikTok lus face caméra, prêts à être tournés. Elle consomme en entrée les signaux du web (Instagram, X, YouTube, RSS, Product Hunt) et les transcriptions audio des reels top-performants, puis elle les passe dans un prompt enrichi du Second Cerveau pour générer des scripts qui sonnent comme Romain.
7
Scripts / jour
58+
Sources scrappées
~0,90€
Coût par run
10 pts
Conforme
Pipeline complet
- 1
Scrape multi-sources
~4-6 minApify Instagram (14 comptes, filtre ≥10k vues, J-3), xAI Grok (20 posts X / 24h, 49 keywords IA), YouTube Data API (3 queries), 20+ flux RSS, Product Hunt daily. Résultat : jusqu'à 100+ signaux bruts stockés dans
m01_signals. - 2
Whisper transcription
~3-5 minTop 30 reels (par score d'engagement) envoyés à Replicate Whisper pour récupérer le voice-over. Injection dans
rawData.transcriptdu signal. Permet au LLM de voir ce qui a été dit, pas juste le titre. - 3
Second Cerveau chargé
~1 s12 fichiers chargés depuis GitHub
Romstjames/cerveauvia l'API GitHub : tone-of-voice, voice-samples/instagram, hooks-putaclic, strategy, leads-magnets, etc. Liste configurable via UI Machine 01 → Réglages → Cerveau M01. Cache 5 min. - 4
Claude CLI génération
~45-90 sLe prompt system (cerveau + consignes machine depuis
m01_prompt_config) + les signaux sélectionnés sont envoyés au CLI Claude via shell redirect (claude -p < file). 0€ d'APIgrâce à l'abonnement Max d'OAuth. Retourne un JSON avec 7 scripts complets (hook, body, cta, tool_name, broll_segments). - 5
Compliance 10 points
~15 sChecklist auto-évaluée par Claude (hook putaclic, anti-IA, tutoiement, mots évidence, parenthèses vécu, closer insight, chiffres, em dash absent, CTA 2-7 lettres, tutoiement strict). Score entre 0 et 10. Les scripts sous 7/10 sont flaggés pour révision.
- 6
B-roll pool
~30-60 s / scriptPour chaque script, récupération de B-rolls : CDN videos (deep crawl du site officiel de l'outil), X videos (Twitter syndication API, MP4 directs), Hyperframes (HTML+GSAP→MP4, à venir M02). Stocké en JSON dans
m01_scripts.brollPool. YouTube désactivé par défaut (trop de faux positifs). - 7
Stockage + cleanup
~2 sLes 7 scripts atterrissent en
m01_scripts(statusdraft). Signaux de la veille purgés pour ne pas polluer les runs suivants. Run loggé dansmachine_runs.
Sources de signaux
Apify Instagram
~0,05€14 comptes suivis, scraper officiel. Filtre ≥10k vues, J-3. Injection en DB + trigger Whisper sur top 30.
xAI Grok (X/Twitter)
~0,80€20 posts / 24h, 49 keywords IA. Utilise aussi pour re-ranker les B-rolls via prompt dédié.
YouTube Data API v3
0€3 queries (IA / automation / ecom), filtres CPC récents. Gratuit jusqu'à 10k quota/jour.
RSS feeds (x20+)
0€Veille tech/IA : The Rundown, Ben's Bites, Batch, The Neuron, etc. Parser natif node-rss-parser.
Product Hunt
0€Catégorie artificial-intelligence, posts du jour. API publique.
Replicate Whisper
~0,04€Transcription audio des top 30 reels Instagram. Modèle large-v3.
Claude CLI — cœur de la machine
🎯 Pourquoi pas l'API Anthropic ?
L'abonnement Claude Max permet d'utiliser Claude à volonté via le CLI local sans facturation API. ~0,07€ / appel API → 0€ via CLI. Sur 7 scripts + compliance + B-roll ranking par jour, économie mensuelle ≈ 50€.
Invocation CRITIQUE: le CLI est appelé via shell redirect, PAS via Node spawn (le pipe buffer > 64Ko cause un deadlock).
// lib/claude-cli.ts
const cmd = `${CLAUDE_PATH} -p --allowed-tools '' < ${JSON.stringify(tmpFile)}`
const { stdout } = await execAsync(cmd, {
timeout,
maxBuffer: 50 * 1024 * 1024,
env: minimalEnv, // ANTHROPIC_API_KEY: undefined ← force OAuth
cwd: os.tmpdir(),
shell: process.env.SHELL || "/bin/bash",
})- •
CLAUDE_PATHauto-détecté :/Users/romainbrunel/.local/bin/claude(macOS) //usr/bin/claude(VPS). - •ANTHROPIC_API_KEY doit être UNSET, sinon le CLI bascule en mode API facturé.
- •
--allowed-tools ''désactive le tool loop (pur LLM, pas d'agentic). - •Env minimal (pas de vars Next.js/Turbopack qui hangent le CLI).
- •Pas de
--dangerously-skip-permissions(refusé en root sur Linux).
Second Cerveau (source de vérité)
Le Cerveau est un repo GitHub privé (Romstjames/cerveau) contenant l'ADN éditorial de Romain. L'app lit les fichiers via l'API GitHub (PAT CERVEAU_GITHUB_TOKEN) et les injecte dans le system prompt. Cache 5 min.
Fichiers critiques par défaut (configurables via Réglages → Cerveau M01) :
- • identity/tone-of-voice.md
- • canals/instagram/voice.md
- • canals/instagram/hooks.md
- • canals/instagram/wiki.md
- • knowledge/copywriting/wiki/masterclass.md
- • canals/instagram/strategy.md
- • products/leads-magnets.md + 4 fiches produits
Checklist compliance (10 points)
Claude auto-évalue chaque script contre 10 critères. Score = nombre de critères validés.
B-rolls — comment ça marche
Chaque script contient 5 à 8 broll_segments générés par le LLM (une phrase du script = un segment). Pour chaque segment, un pool de B-rolls est scrapé depuis 3 sources en parallèle :
CDN videos (screencasts outils)
Deep crawl du site officiel de l'outil (tool_name) via scraper maison. Cherche les vidéos MP4 en CDN. Fonctionne bien sur Vercel, Supabase, Notion, Anthropic, OpenAI, Claude, ElevenLabs, HeyGen.
X (Twitter) videos
Twitter syndication API (cdn.syndication.twimg.com) pour récupérer les MP4 directs. Recherche via xAI Grok avec prompt qui combine hook + body + tool_name. Filtre relevance ≥ 80.
Hyperframes (à venir M02)
HTML + CSS + GSAP rendus en MP4 via Chromium headless. 40+ blocs disponibles (Instagram Follow, TikTok, X Post Card, Mac window, Code terminal...). Prérequis : Node ≥ 22 + FFmpeg.
Règle Romain
Ne jamais screenshoter les sites directement (Cloudflare bloque). Toujours passer par les CDN ou les videos tierces. Romain est TOUJOURS visible en bas de l'écran en talking head, donc il faut un visuel plein écran derrière lui pour chaque phrase.
Planification (4 crons)
| Heure | Job | Fichier | Rôle |
|---|---|---|---|
| 02:00 | Pipeline M01 | m01-daily.sh → m01-daily.ts | Run principal |
| 02:30 | Watchdog | m01-watchdog.sh | 3 retries si 0 scripts générés |
| 03:00 | Backup | backup-daily.sh | DB + secrets + n8n, rotation 14j |
| 04:00 | Safety net | m01-safety-net.sh | Dernier recours si watchdog échoue |
Coûts quotidiens
| Service | Coût / run |
|---|---|
| Apify Instagram | 0,05 € |
| xAI Grok (scrape + B-roll x7) | 0,80 € |
| Whisper Replicate | 0,04 € |
| YouTube / RSS / GitHub | 0 € |
| Claude génération + compliance | 0 € (CLI) |
| Total par run | ~0,90 € |
| Mensuel estimé | ~27 € |
Comment reproduire (fresh install)
- 1
Cloner le repo + installer
git clone git@github.com:Romstjames/affiseo-os.git && cd affiseo-os && npm install
- 2
Configurer les API keys
Aller dans /settings → API & Secrets. Toutes les clés nécessaires sont listées par catégorie, avec liens vers la doc de chaque fournisseur et explications pour obtenir chaque clé. Les copier aussi dans
.env(les services runtime lisent process.env). - 3
Installer Claude CLI (0€)
Puis
claude loginpour OAuth. LaisserANTHROPIC_API_KEYUNSET.curl -fsSL https://claude.ai/install.sh | bash
- 4
Initialiser la DB
npx prisma migrate deploy && npx prisma generate
- 5
Seeder les sources + Cerveau + API keys
Démarrer l'app (
npm run build && npm start), puis visiter /machines/01. Les tablesm01_sources,m01_prompt_config,m01_cerveau_filesetapi_keyssont seedées automatiquement au premier accès. - 6
Configurer les crons
# crontab -e 0 2 * * * /root/affiseo-os/scripts/m01-daily.sh 30 2 * * * /root/affiseo-os/scripts/m01-watchdog.sh 0 3 * * * /root/affiseo-os/scripts/backup-daily.sh 0 4 * * * /root/affiseo-os/scripts/m01-safety-net.sh
- 7
Premier run manuel
Dans /machines/01, cliquer Lancer le pipeline. Durée totale attendue : 5 à 10 minutes. Vérifier les logs PM2 (
pm2 logs affiseo-ui) pour tracer chaque étape.
Tables SQLite impliquées
m01_sourcesScrapers (type, config JSON, enabled, lastRun)m01_signalsSignaux scrapés (title, url, score, rawData)m01_scriptsScripts générés (hook, body, cta, brollSegments, compliance, status)m01_cerveau_filesFichiers Cerveau activés (path, label, priority)m01_prompt_configConsignes machine éditables (mission, répartition, CTA, B-roll)api_keysRegistry des clés API (valeur, metadata, scope machine)machine_runsHistorique des runs pipeline (status, durée, output)