NODE_ENV=development
PORT=80

# Logging
# Set log level: debug, info, warn, error. Defaults to debug in development, info in production.
LOG_LEVEL=debug

# Supabase
SUPABASE_URL=
SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=

# AI Providers
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
GOOGLE_GENERATIVE_AI_API_KEY=
DEFAULT_SUGGESTION_MODEL=google/gemini-3-flash-preview
TOPIC_SUGGESTION_MODEL=google/gemini-3-flash-preview
PROMPT_SUGGESTION_MODEL=google/gemini-3-flash-preview
COMPETITOR_SUGGESTION_MODEL=google/gemini-3-flash-preview
# Model used for the Site Audit LLM-judged signals (provider/model). Cheap by
# default; point it at anthropic/claude-... or openai/... if you prefer.
AUDIT_LLM_MODEL=google/gemini-3-flash-preview

# Site Audit page fetching (proxy + JS render)
SCRAPEDO_API_KEY=

# CORS
ALLOWED_ORIGINS=http://localhost:3000

# Cloud / Self-hosted mode
# Set to "true" only for the official cloud deployment.
# Self-hosted instances should leave this unset or "false" — all features
# will be unlocked automatically.
IS_CLOUD=false

# DataForSEO (for keyword volume data)
DATAFORSEO_LOGIN=
DATAFORSEO_PASSWORD=

# Cloro (platform web scrapers)
CLORO_API_KEY=

# Cloro webhook callback URL (publicly reachable, e.g. https://api.example.com/cloro/callback).
# When set, tracking jobs submit tasks with this webhook and DO NOT poll inline —
# Cloro pushes results to /cloro/callback as they complete (survives server restarts
# and scales without blocking workers). Leave empty to fall back to inline polling.
CLORO_WEBHOOK_URL=

# Cloro webhook signing secret (whsec_…). Generated when you enable signed
# deliveries at https://dashboard.cloro.dev/webhooks — shown exactly once, store
# it here. When set, /cloro/callback rejects any delivery without a valid
# HMAC signature (401) or with a stale timestamp (400). Leave empty to accept
# unsigned deliveries (the default; required while dashboard signing is off).
# IMPORTANT: flip the dashboard switch and set this value together — setting
# only one of the two breaks webhook delivery.
CLORO_WEBHOOK_SECRET=

# Platform provider for web scrapers (default: cloro)
PLATFORM_PROVIDER=cloro

# AI Volume Multiplier (AI search adoption rate, e.g. 0.15 = 15%)
AI_VOLUME_MULTIPLIER=0.15

# Cron / Internal-endpoint secret (cloud only — not needed for self-hosted)
# Guards three internal server endpoints:
#   /api/internal/daily-tracking
#   /api/internal/content/:id/brief
#   /api/internal/trigger-tracking
# The web app sends this as "Authorization: Bearer <value>"; the server
# compares against its own copy. MUST be the same value on both sides.
# Generate: openssl rand -hex 32
# CRON_SECRET=

# Stripe (cloud only — not needed for self-hosted)
# STRIPE_SECRET_KEY=sk_test_...
# STRIPE_WEBHOOK_SECRET=whsec_...

# Paystack (optional)
# PAYSTACK_SECRET=paystack_live_xxx

# PayPal (optional)
# PAYPAL_CLIENT_ID=YOUR_PAYPAL_CLIENT_ID
# PAYPAL_CLIENT_SECRET=YOUR_PAYPAL_CLIENT_SECRET

