# AssemblyAI — diarization + transcription # https://www.assemblyai.com ASSEMBLYAI_API_KEY=your_assemblyai_key_here # OpenAI — semantic classification + TTS voice synthesis # https://platform.openai.com OPENAI_API_KEY=your_openai_key_here # Pexels — stock video B-roll # https://www.pexels.com/api PEXELS_API_KEY=your_pexels_key_here # ── Social media (optional, for announce.js) ────────────────────────────────── # Discord bot token + channel ID DISCORD_BOT_TOKEN= DISCORD_CHANNEL_ID= # Telegram TELEGRAM_BOT_TOKEN= TELEGRAM_CHAT_ID= # X / Twitter OAuth2 (confidential client — needed for token refresh) X_CLIENT_ID= X_CLIENT_SECRET= X_ACCESS_TOKEN= X_TOKEN_FILE= # path to JSON token file with refresh_token + expires_at X_OAUTH1_CONSUMER_KEY= # OAuth 1.0a, for video upload only (see README step 9) X_OAUTH1_CONSUMER_SECRET= X_OAUTH1_ACCESS_TOKEN= X_OAUTH1_ACCESS_TOKEN_SECRET= # Moltbook MOLTBOOK_API_KEY= MOLTBOOK_SUBMOLT=agentfinance # LinkedIn (optional) # Run: node linkedin_auth.js — saves tokens + person_urn to linkedin-tokens.json # Scopes needed: w_member_social (Share on LinkedIn product) # App must have "Share on LinkedIn" + "Sign In with LinkedIn using OpenID Connect" products LINKEDIN_CLIENT_ID= LINKEDIN_CLIENT_SECRET= LINKEDIN_TOKEN_FILE=linkedin-tokens.json # --- Optional media providers --- # ElevenLabs voices (TTS_PROVIDER=elevenlabs for tts_replace.py) ELEVENLABS_API_KEY=your_elevenlabs_key_here ELEVENLABS_VOICE_A= ELEVENLABS_VOICE_B= # Higgsfield generated B-roll (BROLL_PROVIDER=higgsfield for pod2vid.py), "key_id:key_secret" HIGGSFIELD_API_KEY=your_key_id:your_key_secret # HIGGSFIELD_MAX_CLIPS=8 # paid generations per run (cap)