# ─────────────────────────────────────────────────────────────
# Image Generation Configuration / 图片生成配置
# ─────────────────────────────────────────────────────────────

# This file is an optional fallback config source for image_gen.py.
# Current process environment variables take precedence over this file.
# 当前文件是 image_gen.py 的可选 fallback 配置来源。
# 当前进程环境变量优先于这个文件。
#
# Resolution order (only the FIRST existing file is read; keys are NOT merged across files):
#   1. ./.env in your current working directory
#   2. <skill-dir>/.env (skill install, e.g. ~/.agents/skills/ppt-master/.env)
#   3. <repo-root>/.env (when running from a clone)
#   4. ~/.ppt-master/.env (user-level config)
# 查找顺序（只读第一个存在的文件，多个 .env 之间不合并）：
#   1. 当前工作目录下的 ./.env
#   2. skill 安装目录下的 .env（如 ~/.agents/skills/ppt-master/.env）
#   3. 仓库根目录下的 .env（仅在 clone 模式下）
#   4. ~/.ppt-master/.env（用户级配置）

# Active backend (required) / 当前启用后端（必需）
# Recommended core backends: openai / gemini / qwen / zhipu / volcengine
# 推荐核心后端：openai / gemini / qwen / zhipu / volcengine
# IMAGE_BACKEND=openai

# You may also provide the same variables directly via the current process environment.
# 也可以不写 .env，而是直接通过当前运行进程的环境变量提供同样的配置。

# IMPORTANT:
# - IMAGE_API_KEY / IMAGE_MODEL / IMAGE_BASE_URL are no longer supported.
# - Use provider-specific keys only.
# 重要：
# - 不再支持 IMAGE_API_KEY / IMAGE_MODEL / IMAGE_BASE_URL。
# - 请只使用各提供商自己的变量。

# ─────────────────────────────────────────────────────────────
# Example: OpenAI / OpenAI 示例  (recommended / 推荐)
# ─────────────────────────────────────────────────────────────
# IMAGE_BACKEND=openai
# OPENAI_API_KEY=sk-xxx
# OPENAI_MODEL=gpt-image-2
# OPENAI_BASE_URL=http://127.0.0.1:3000/v1
# OpenAI-compatible providers may need these compatibility knobs.
# OpenAI-compatible 第三方平台可按需开启以下兼容参数。
# OPENAI_SIZE_PRESET=auto
# OPENAI_RESPONSE_FORMAT=auto
# OPENAI_QUALITY=auto
# Allowed values: png / jpeg / webp
# OPENAI_OUTPUT_FORMAT=png
# jpeg/webp only, 0-100
# OPENAI_OUTPUT_COMPRESSION=80
# gpt-image-2: auto / opaque
# OPENAI_BACKGROUND=auto
# auto / low
# OPENAI_MODERATION=auto

# ─────────────────────────────────────────────────────────────
# Example: Gemini / Gemini 示例
# ─────────────────────────────────────────────────────────────
# IMAGE_BACKEND=gemini
# GEMINI_API_KEY=your-gemini-api-key
# GEMINI_MODEL=gemini-3.1-flash-image-preview
# GEMINI_BASE_URL=https://your-proxy-url.com

# ─────────────────────────────────────────────────────────────
# Example: MiniMax / MiniMax 示例
# ─────────────────────────────────────────────────────────────
# IMAGE_BACKEND=minimax
# MINIMAX_API_KEY=your-minimax-key
# MINIMAX_MODEL=image-01
# Default China endpoint / 默认国内地址
# MINIMAX_BASE_URL=https://api.minimaxi.com/v1/image_generation
# Optional overseas endpoint / 可选海外地址
# MINIMAX_BASE_URL=https://api.minimax.io/v1/image_generation

# ─────────────────────────────────────────────────────────────
# Example: Qwen / 通义生图示例
# ─────────────────────────────────────────────────────────────
# IMAGE_BACKEND=qwen
# QWEN_API_KEY=your-dashscope-key
# QWEN_MODEL=qwen-image-2.0-pro
# QWEN_BASE_URL=https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis

# ─────────────────────────────────────────────────────────────
# Example: Zhipu / 智谱生图示例
# ─────────────────────────────────────────────────────────────
# IMAGE_BACKEND=zhipu
# ZHIPU_API_KEY=your-zhipu-key
# ZHIPU_MODEL=glm-image
# ZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4/images/generations

# ─────────────────────────────────────────────────────────────
# Example: Volcengine / 火山引擎示例
# ─────────────────────────────────────────────────────────────
# IMAGE_BACKEND=volcengine
# VOLCENGINE_API_KEY=your-volcengine-key
# VOLCENGINE_MODEL=doubao-seedream-4-5-251128
# VOLCENGINE_BASE_URL=https://operator.las.cn-beijing.volces.com/api/v1/images/generations

# ─────────────────────────────────────────────────────────────
# Extended / Experimental backends
# 扩展 / 实验后端
# ─────────────────────────────────────────────────────────────
# STABILITY_API_KEY=your-stability-key
# STABILITY_MODEL=stable-image-core
# STABILITY_BASE_URL=https://api.stability.ai
#
# BFL_API_KEY=your-bfl-key
# BFL_MODEL=flux-pro-1.1-ultra
# BFL_BASE_URL=https://api.bfl.ai
#
# IDEOGRAM_API_KEY=your-ideogram-key
# IDEOGRAM_MODEL=ideogram-v3
# IDEOGRAM_BASE_URL=https://api.ideogram.ai
#
# MINIMAX_API_KEY=your-minimax-key
# MINIMAX_MODEL=image-01
# Default China endpoint / 默认国内地址
# MINIMAX_BASE_URL=https://api.minimaxi.com/v1/image_generation
# Optional overseas endpoint / 可选海外地址
# MINIMAX_BASE_URL=https://api.minimax.io/v1/image_generation
#
# SILICONFLOW_API_KEY=your-siliconflow-key
# SILICONFLOW_MODEL=Qwen/Qwen-Image
# SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1/images/generations
#
# FAL_KEY=your-fal-key
# FAL_MODEL=fal-ai/imagen3/fast
# FAL_BASE_URL=https://fal.run
#
# REPLICATE_API_TOKEN=r8_xxx
# REPLICATE_MODEL=black-forest-labs/flux-1.1-pro
# REPLICATE_BASE_URL=https://api.replicate.com/v1/predictions
#
# OPENROUTER_API_KEY=sk-or-v1-xxx
# OPENROUTER_MODEL=google/gemini-3.1-flash-image-preview
# OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
#
# OpenAI-compatible example: Agnes AI / OpenAI-compatible 示例：Agnes AI
# IMAGE_BACKEND=openai
# OPENAI_API_KEY=your-agnes-key
# OPENAI_MODEL=agnes-image-2.1-flash
# OPENAI_BASE_URL=https://apihub.agnes-ai.com/v1
# OPENAI_SIZE_PRESET=gpt-image-2
# OPENAI_RESPONSE_FORMAT=omit
# OPENAI_QUALITY=omit
#
# IMAGE_BACKEND=modelscope
# MODELSCOPE_API_KEY=your-modelscope-key
# MODELSCOPE_MODEL=Tongyi-MAI/Z-Image-Turbo
# MODELSCOPE_BASE_URL=https://api-inference.modelscope.cn/v1

# ─────────────────────────────────────────────────────────────
# Multi-provider example / 多提供商共存示例
# ─────────────────────────────────────────────────────────────
# IMAGE_BACKEND=openai
# OPENAI_API_KEY=sk-xxx
# OPENAI_MODEL=gpt-image-2
# OPENAI_OUTPUT_FORMAT=png
# GEMINI_API_KEY=your-gemini-api-key
# GEMINI_MODEL=gemini-3.1-flash-image-preview
#
# Switch providers by changing IMAGE_BACKEND only.
# 切换提供商时，只改 IMAGE_BACKEND 即可。

# ─────────────────────────────────────────────────────────────
# Audio narration TTS (notes_to_audio.py) / 旁白音频 TTS
# ─────────────────────────────────────────────────────────────
# edge-tts is the default narration backend and needs no API key.
# Use cloud providers only when you want high-quality or cloned voices —
# all four (ElevenLabs / MiniMax / Qwen / CosyVoice) accept a cloned voice_id.
# Clone the voice in the provider's console first, then pass --voice-id to
# notes_to_audio.py. See workflows/stages/generate-audio.md.
# edge-tts 是默认旁白后端，无需 API Key。
# 需要高质量云端旁白或复刻音色时再配置云端提供商——
# ElevenLabs / MiniMax / Qwen / CosyVoice 四家都支持传入复刻 voice_id。
# 先在 provider 控制台复刻得到 voice_id，再用 --voice-id 传给 notes_to_audio.py。
# 详见 workflows/stages/generate-audio.md。
#
# ELEVENLABS_API_KEY=your-elevenlabs-api-key
# MINIMAX_API_KEY=your-minimax-key
# QWEN_API_KEY=your-dashscope-key
# COSYVOICE_API_KEY=your-dashscope-key
# DASHSCOPE_API_KEY=your-dashscope-key
#
# Optional provider-specific TTS endpoint overrides.
# 可选：按提供商覆盖 TTS 接入点。
# Default China endpoint / 默认国内地址
# MINIMAX_TTS_BASE_URL=https://api.minimaxi.com/v1/t2a_v2
# Optional overseas endpoint / 可选海外地址
# MINIMAX_TTS_BASE_URL=https://api.minimax.io/v1/t2a_v2
# QWEN_TTS_BASE_URL=https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# COSYVOICE_TTS_BASE_URL=https://dashscope.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer

# ─────────────────────────────────────────────────────────────
# Web image search (image_search.py) / 网络图片搜索
# ─────────────────────────────────────────────────────────────
# Used by scripts/image_search.py — separate from IMAGE_BACKEND above.
# image_search.py 用，与上面的 IMAGE_BACKEND 互不影响。
#
# Openverse and Wikimedia work with no key, but image quality can be uneven.
# For polished stock-style PPT images, configure Pexels and/or Pixabay.
# Openverse 和 Wikimedia 无需 Key，但图片质量不稳定。
# 如需更稳定的商业图库风格 PPT 配图，建议配置 Pexels 和/或 Pixabay。
#
# Sign up: https://www.pexels.com/api/
# PEXELS_API_KEY=your-pexels-key
# Sign up: https://pixabay.com/api/docs/
# PIXABAY_API_KEY=your-pixabay-key
