# Social Compliance Generator v2.0 - Environment Variables # Copy this file to .env and fill in your values # ============================================================================= # LLM (OpenRouter) # ============================================================================= # Get your API key at: https://openrouter.ai/keys OPENROUTER_API_KEY= # Optional: Specify which model to use (defaults to claude-sonnet-4.5) # See available models at: https://openrouter.ai/models # Examples: anthropic/claude-sonnet-4.5-20250929, openai/gpt-4o, meta-llama/llama-3.1-70b-instruct OPENROUTER_MODEL=anthropic/claude-sonnet-4.5-20250929 # ============================================================================= # Web Search (Tavily) # ============================================================================= # Get your API key at: https://tavily.com/ TAVILY_API_KEY= # ============================================================================= # Image Generation (Google Gemini) # ============================================================================= # Uses Nano Banana Pro (Gemini 3 Pro Image) with Gemini 2.5 Flash fallback # # Option 1: Vertex AI (Recommended for production / GitHub Actions) # See README.md for service account setup instructions GOOGLE_CLOUD_PROJECT= GOOGLE_CLOUD_LOCATION=us-central1 # # Option 2: Gemini Developer API (Local development only) # Get your API key at: https://aistudio.google.com/apikey # Note: Free tier has strict rate limits GOOGLE_API_KEY= # ============================================================================= # Video Generation # ============================================================================= # Select the preferred video API: "veo" (default) or "sora" # - veo: Google Veo 3.1 (uses same credentials as Image Generation above) # - sora: OpenAI Sora 2 (requires OPENAI_API_KEY below) PREFERRED_VIDEO_API=veo # OpenAI API Key (only required if using Sora) # Get your API key at: https://platform.openai.com/api-keys # Note: Sora API access requires invitation from OpenAI OPENAI_API_KEY= # Optional: Organization ID (required if you belong to multiple organizations) # Find your org ID at: https://platform.openai.com/settings/organization/general OPENAI_ORG_ID= # ============================================================================= # X/Twitter API (OAuth 2.0) # ============================================================================= # Set up at: https://developer.twitter.com/ # See README-AUTH.md for detailed setup instructions X_API_CLIENT_ID= X_API_CLIENT_SECRET= X_API_ACCESS_TOKEN= X_API_REFRESH_TOKEN= # ============================================================================= # Cloudflare KV (Token Storage) # ============================================================================= # Used to store OAuth refresh tokens for X API # Create a KV namespace: wrangler kv namespace create "X_TOKENS" # Create an API token at: https://dash.cloudflare.com/profile/api-tokens CLOUDFLARE_ACCOUNT_ID= CLOUDFLARE_KV_NAMESPACE_ID= CLOUDFLARE_KV_API_TOKEN= # ============================================================================= # Cloudflare R2 (Workflow Storage) # ============================================================================= # Used to store intermediate workflow results (news, content, images, videos) # Enables replay of failed workflows and manual posting # # Setup: # 1. Create an R2 bucket at: https://dash.cloudflare.com/ -> R2 -> Create bucket # 2. Create R2 API Token: Dashboard -> R2 -> Manage R2 API Tokens -> Create API token # - Select "Object Read & Write" permission # - Apply to specific bucket or all buckets # 3. Copy the Access Key ID and Secret Access Key # # Note: R2 storage is optional. If not configured, workflows will run without persistence. CLOUDFLARE_R2_BUCKET= CLOUDFLARE_R2_ACCESS_KEY_ID= CLOUDFLARE_R2_SECRET_ACCESS_KEY=