Cursorhero 文档

环境变量

所有环境变量的完整参考。

必需变量

数据库

DATABASE_URL="postgresql://user:password@host/db?sslmode=require"

认证

BETTER_AUTH_SECRET="至少32字符的随机密钥"
BETTER_AUTH_URL="http://localhost:3000"

应用 URL

NEXT_PUBLIC_APP_URL="http://localhost:3000"

服务集成

Kie.ai(光标生成主流程)

主产品 cursor-generator 的图像生成必需(替代了模板里的火山引擎):

KIE_API_KEY="your-kie-api-key"
KIE_API_BASE_URL="https://api.kie.ai"
KIE_IMAGE_MODEL="gpt-image-2-5-flare-image-to-image"
KIE_TEXT_MODEL="gpt-image-2-5-flare-text-to-image"
KIE_IMAGE_RESOLUTION="1K"

火山引擎(仅 demo 页面)

可选。仅 demo 页面 (app/[locale]/demo/) 和 demo API (/api/chat、/api/image/generate、/api/video/*) 使用。 主产品 cursor-generator 不使用火山引擎,统一走 Kie.ai。如果不发布 demo 页面就跳过这两个变量。

# VOLCANO_ENGINE_API_KEY="your-volcano-engine-api-key"
# VOLCANO_ENGINE_API_URL="https://ark.cn-beijing.volces.com/api/v3"

Creem(支付)

订阅和一次性购买必需:

CREEM_API_KEY="your-creem-api-key"
CREEM_WEBHOOK_SECRET="whsec_..."

测试模式(跳过真实支付):

CREEM_SIMULATE="true"

Resend(邮件)

认证邮件和通知必需:

RESEND_API_KEY="re_your_api_key"
RESEND_FROM_EMAIL="Your App <[email protected]>"

newsletter 订阅流程可选:

RESEND_AUDIENCE_ID="your-resend-audience-id"

Google OAuth(可选)

AUTH_GOOGLE_ID="your-google-client-id"
AUTH_GOOGLE_SECRET="your-google-client-secret"

定时任务

CRON_SECRET(Bearer)或 CRON_JOBS_USERNAME + CRON_JOBS_PASSWORD (Basic Auth)。必须至少填一组,否则 /api/cron/* 全部拒绝请求。 用于订阅发放任务(/api/cron/subscription-grants)和后续的其它定时任务。

# 用这个:
CRON_SECRET="your-cron-secret"

# ...或者这两个:
# CRON_JOBS_USERNAME="your_username"
# CRON_JOBS_PASSWORD="your_password"

可选分析工具

NEXT_PUBLIC_POSTHOG_KEY="phc_..."
NEXT_PUBLIC_GOOGLE_ANALYTICS_ID="G-..."
NEXT_PUBLIC_CLARITY_PROJECT_ID="..."

可选存储(S3 兼容 / Cloudflare R2)

如果想把生成的光标包镜像到自己的 bucket 而不是依赖 provider 的 URL,就需要配。 推荐用 R2。

STORAGE_ENDPOINT="https://<account-id>.r2.cloudflarestorage.com"
STORAGE_BUCKET_NAME="your-bucket"
STORAGE_REGION="auto"
STORAGE_ACCESS_KEY_ID="..."
STORAGE_SECRET_ACCESS_KEY="..."
STORAGE_PUBLIC_URL="https://<your-public-r2-domain>"

字段名是 STORAGE_BUCKET_NAME,不是 STORAGE_BUCKET。代码里所有地方都用前者,写错会静默上传失败。

On this page