# Copy this file to deploy/.env.production on the VPS. # Keep real API keys out of git. # Runtime JOBS_DIR=/data/jobs ASSET_LIBRARY_DIR=/data/asset_library PROMPT_LIBRARY_DIR=/data/prompt_library KEYFRAME_COUNT=12 CORS_ORIGINS=https://marketing.skg.com API_PORT=4291 # Company persistence database. Real password and DATABASE_URL live only on server. POSTGRES_DB=skg_marketing POSTGRES_USER=skg_marketing POSTGRES_PASSWORD= DATABASE_URL=postgresql://skg_marketing:CHANGE_ME@postgres:5432/skg_marketing # Web login. Keep real password and session secret only on the server. PASSWORD_AUTH_ENABLED=false WEB_AUTH_USERNAME=skg WEB_AUTH_PASSWORD= WEB_AUTH_SESSION_SECRET= WEB_AUTH_COOKIE_NAME=skg_marketing_session WEB_AUTH_COOKIE_SECURE=true AUTH_DATA_ISOLATION_ENABLED=true VIDEO_QUEUE_MAX_CONCURRENT=2 VIDEO_QUEUE_MAX_CONCURRENT_PER_USER=1 # Feishu OAuth login. Register this callback in the Feishu developer console: # https://marketing.skg.com/api/auth/feishu/callback FEISHU_APP_ID= FEISHU_APP_SECRET= FEISHU_REDIRECT_URI=https://marketing.skg.com/api/auth/feishu/callback FEISHU_OAUTH_SCOPE= FEISHU_ALLOWED_EMAIL_DOMAINS= FEISHU_ALLOWED_EMAILS= FEISHU_ALLOWED_TENANT_KEYS= # SKG AI gateway, OpenAI-compatible LLM_BASE_URL=https://ai.skg.com/ezlink/v1 LLM_API_KEY= # Model routing # Azure ASR can be re-enabled once the real deployment name exists. ASR_BASE_URL=https://ai.skg.com/azure/v1 ASR_API_KEY= ASR_MODEL=gpt-4o-transcribe ASR_LANGUAGE=en ASR_REMOTE_ENABLED=false ASR_LOCAL_FALLBACK_ENABLED=true ASR_AUDIO_FALLBACK_ENABLED=false ASR_FALLBACK_MODEL=gemini-2.5-flash ASR_TIMEOUT_SECONDS=45 FASTER_WHISPER_MODEL=tiny.en FASTER_WHISPER_DEVICE=cpu FASTER_WHISPER_COMPUTE_TYPE=int8 TRANSLATE_MODEL=gemini-2.5-flash GPT_TEXT_MODEL=gpt-4o REWRITE_MODEL=gpt-4o-mini REWRITE_MODEL_FALLBACKS=gemini-2.5-flash VISION_MODEL=gpt-4o PRODUCT_VIEW_MODEL=gpt-image-2 IMAGE_BASE_URL=https://ai.skg.com/ezlink/v1 IMAGE_API_KEY= IMAGE_MODEL=gpt-image-2 IMAGE_REQUEST_TIMEOUT_SECONDS=60 IMAGE_FALLBACK_ENABLED=true IMAGE_FALLBACK_MODEL=gemini-3-pro-image-preview IMAGE_FALLBACK_MODELS=gemini-3-pro-image-preview IMAGE_EXTRA_MODELS= # Optional JSON model overrides. Use api_key_env/base_url_env; do not put real keys in git. # IMAGE_MODEL_CONFIGS_JSON={"custom-model":{"label":"Custom Image","base_url_env":"CUSTOM_IMAGE_BASE_URL","api_key_env":"CUSTOM_IMAGE_API_KEY","provider":"openai","sizes":["1024x1024"],"default_size":"1024x1024"}} IMAGE_CIRCUIT_FAILURE_THRESHOLD=2 IMAGE_CIRCUIT_COOLDOWN_SECONDS=600 GPT_IMAGE_MODEL=gpt-image-2 SUBJECT_ASSET_IMAGE_MODEL=gpt-image-2 SUBJECT_ASSET_IMAGE_MODELS=gpt-image-2,gemini-3-pro-image-preview # Optional Ark Seedream image channel. Keep the real key only in deploy/.env.production on the VPS. ARK_SEEDREAM_ENABLED=true ARK_IMAGE_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 ARK_IMAGE_API_KEY= ARK_SEEDREAM_IMAGE_MODEL=doubao-seedream-4-5-251128 # Optional outbound proxy for AI gateway calls. Leave blank on normal VPS networking. AI_HTTP_PROXY= # Optional TikTok download login state for yt-dlp. Keep cookies files private. # Leave blank for public TikTok videos. Set to /run/secrets/tiktok_cookies.txt only when a link explicitly requires login cookies. YTDLP_COOKIES_FILE= YTDLP_COOKIES_FROM_BROWSER= # Audio rewrite and Azure OpenAI TTS AUDIO_REWRITE_MODEL=gemini-2.5-pro AUDIO_PRODUCT_BRIEF="SKG smart massage products for daily neck, shoulder, back, eye, knee, and foot relaxation. Keep claims premium, clean, credible, and non-medical." # Voice is fixed to Azure OpenAI in the backend. VOICE_PROVIDER=azure_openai AZURE_OPENAI_BASE_URL=https://ai.skg.com/azure AZURE_OPENAI_API_KEY= AZURE_TTS_MODEL=gpt-4o-mini-tts AZURE_TTS_VOICE_ID=alloy AZURE_TTS_VOICE_POOL=alloy,verse,shimmer AZURE_TTS_PATH=/audio/speech AZURE_TTS_PATHS=/audio/speech,/v1/audio/speech # Video generation. Use SKG Doubao / Seedance gateway in production. POE_API_BASE_URL=https://api.poe.com/v1 POE_API_KEY= VIDEO_API_BASE_URL=https://ai.skg.com/doubao VIDEO_API_KEY= VIDEO_MODEL=seedance VIDEO_MODEL_SEEDANCE=doubao-seedance-2-0-fast-260128 VIDEO_MODEL_XAI=grok-imagine-video VIDEO_CREATE_PATHS=/api/v3/contents/generations/tasks VIDEO_STATUS_PATH=/api/v3/contents/generations/tasks/{id} VIDEO_CONTENT_PATH=/api/v3/contents/generations/tasks/{id}/content VIDEO_DURATION_FIELD=seconds VIDEO_POLL_TIMEOUT_SECONDS=900 VIDEO_CREATE_RETRY_ATTEMPTS=3 VIDEO_CREATE_RETRY_BACKOFF_SECONDS=2 XAI_VIDEO_API_BASE_URL=https://ai.skg.com/ezlink/xai XAI_VIDEO_API_KEY= XAI_VIDEO_CREATE_PATH=/v1/videos/generations XAI_VIDEO_STATUS_PATH=/v1/videos/{id} XAI_VIDEO_CONTENT_PATH=