跳转到正文

Read this guide in English

网站配置 ​

唯一入口:packages/core/website.ts,类型为 WebsiteConfig。这里没有服务密钥,不读取 process.env,可安全用于 Astro、React 和 API。兼容的 site 对象由它派生。

配置结构 ​

ts
export const websiteConfig: WebsiteConfig = {
  metadata: {/* 品牌、文案、语言、联系邮箱、OG 图片、社交链接 */},
  brand: {
    mark: "✳",
    logo: { light: null, dark: null },
    favicon: "/brand/favicon.svg",
    touchIcon: null,
    emailLogo: null,
  },
  i18n: {
    locales: ["en", "zh"],
    translations: { zh: {/* 完整中文产品文案 */}, es: null },
  },
  ui: { defaultMode: "system", enableSwitch: true },
  auth: { password: true, emailOtp: true, passkey: true },
  blog: { enabled: true, homePosts: 2, relatedPosts: 3 },
  notifications: {
    taskEmail: false,
    preferenceVersion: "2026-10-11",
    retentionDays: 30,
    operator: { enabled: false, since: null },
  },
  analytics: {
    provider: "none",
    toolEvents: {
      enabled: false,
      consentVersion: "2026-10-10",
      retentionDays: 30,
    },
    serverEvents: {
      enabled: false,
      consentVersion: "2026-10-10.2",
      retentionDays: 30,
    },
  },
  marketing: {
    newsletter: false,
    waitlist: false,
    contactsSync: false,
    consentVersion: "2026-10-10",
    confirmationHours: 24,
    resendMinutes: 15,
  },
  payment: { provider: "stripe", enabled: true, trialDays: 14 },
  support: { provider: "crisp", enabled: false, websiteId: null },
  affiliates: {
    provider: "rewardful",
    enabled: false,
    campaignId: null,
    stripeAccountId: null,
    tracking: { enabled: false, publicKey: null },
  },
  credits: { signupCredits: 20 },
  history: { maxSavedRuns: 100 },
  storage: {
    enabled: true,
    maxFileBytes: 5 * 1024 * 1024,
    maxFiles: 25,
    maxTotalBytes: 50 * 1024 * 1024,
    retentionDays: 7,
    uploadsPerMinute: 10,
    readsPerMinute: 120,
  },
  plans: [/* free、starter、pro */],
};

上面的注释只说明结构,完整默认值以源码为准。账号、私有文件、任务与支付已有本地验收;营销订阅、联系人同步以及公开工具 / 工作台观测默认关闭。工作台观测包含实际任务、附件下载、积分包与个人订阅账单确认。团队付款观测已有独立选择、管理权限保护和去重恢复;AI 扩展、云资源和真实外部环境仍按计划验收,见模块总览。

品牌与元数据 ​

字段作用
metadata.id小写站点 ID;认证 cookie 前缀。上线后修改会使原 cookie 不再被读取
metadata.name网站标题、页头、邮件品牌、Passkey 名称;同步修改 Wrangler APP_NAME
metadata.tagline / hero / description默认标题、首页两行主标题和描述
metadata.language默认语言保持 en;第二语言通过 i18n 启用,不直接更改此字段
metadata.supportEmailContact 页联系方式;上线前填真实地址
support默认 { provider: "crisp", enabled: false, websiteId: null };开启需公开 Website UUID 与真实支持邮箱,只在联系页主动加载,失败保留邮件回退,见教程
metadata.ogImagenull 或 /brand/ 内 PNG / JPEG / WebP;静态分享元数据使用它,两个产品构建的 public 目录均须有文件
metadata.social{ label, href }[];生成页脚公开链接,空数组不显示

公开域名放在 PUBLIC_SITE_URL,认证同源域名放在 APP_ORIGIN。本站三 Worker 以一个公共域名工作,两者应相同。新站工厂还会更换安装清单名称和 Worker 名称,并重置品牌素材、OG、联系方式与社交链接。brand 字段、图片目录、浅深主题和邮件限制见品牌素材。

产品语言 ​

i18n.locales 默认 ["en"];可开启 ["en", "es"],需要完整的 i18n.translations.es 元数据与计划说明。首页、功能与价格共用页面结构,真实译文放在产品字典;登录 / 注册 / 找回与重置、工作台首页、任务列表 / 详情、文件库、历史、积分 / 购买记录、成员 / 邀请 / 设置与管理后台已支持语言路径与认证回跳;公开工具列表、JSON / 文本完整交互与说明已支持双语,博客目录、两篇全文译文与分语言 RSS 已交付,账号验证 / 重置 / 验证码 / 邀请邮件已本地验收,任务邮件持久化语言已本地验收,营销确认邮件语言已本地验收,托管支付回站语言已本地验收。路径、语言切换、缺失译文与 SEO 规则见产品语言。

主题与登录 ​

字段默认实际效果
ui.defaultModesystem没有已保存偏好时的默认主题;公共页与工作台预绘制脚本都读取它
ui.enableSwitchtrue显示 / 隐藏公共页、工作台和设置里的主题切换;不清除已有用户偏好
auth.passwordtrue同时控制密码登录 / 注册表单和服务端密码认证
auth.emailOtptrue同时控制 OTP 入口和 Better Auth OTP 插件
auth.passkeytrue同时控制 Passkey 登录入口和服务端插件;需要已注册 Passkey 的账号

Google / GitHub 通过各自完整的服务端凭据启用。前端查询实际 provider 名称,不复制一份会漂移的 OAuth 开关。至少保留一种让新用户进入的方式;Passkey 本身不能替代首次注册。

内容与运营 ​

字段默认实际效果
blog.enabledtrue控制导航、页脚、首页文章、文章构建路径、RSS 内容和 sitemap;关闭后 /blog 索引页仍存在但 noindex 且无文章
blog.homePosts2首页展示文章数量;0 表示不展示文章卡片
blog.relatedPosts3文章页其他文章的数量;当前按日期排序,不做智能推荐
analytics.providernonecloudflare 时公共页面插入 beacon;同时需要 PUBLIC_CF_ANALYTICS_TOKEN
notifications个人任务邮件、站主渠道分别默认关闭,保留 30 天个人邮件需 0022 和验证邮箱选择;站主渠道需 0021、明确起点及服务端秘密地址。去重、有限尝试和失败列表,见任务邮件与站主通知
analytics.serverEvents默认关闭,保留 30 天个人选择授权任务 / 附件读取 / 积分包及个人账单,团队 owner / admin 单独选择授权团队账单;先升级至 0025 并重建 API / 工作台,见教程
analytics.toolEvents默认关闭,保留 30 天公开工具明确选择后发送浏览器使用报告;与访问统计、账号和支付独立;先升级至 0017 并重建公共页 / API,见教程
affiliatesRewardful,默认关闭,计划 / 商户 ID 为空签名回调、佣金 / 结算复核及登录后的个人 / 团队推荐绑定后端;需升级至 0033、两项私密凭据与原 Stripe 完整组。浏览器采集、明确选择与新购买首次结账冻结已受控本地验收;具体订单 / 佣金联查与管理员证据与带原因 / 审计的安全人工复核已受控本地验收;有界漏回调补查与进度 / 审计已受控本地验收;真实购买归因与付款待验,见教程

公开导航集中在 packages/core/navigation.ts,公开页头、页脚与工作台共用;首页入口是 Home,博客入口是 Blog。英文博客来自 apps/web/content/blog/*.md,西班牙语同名译文在 apps/web/content/blog/es/,工具目录及处理器来自 packages/core/tools.ts,工具完整译文集中在 packages/core/tool-locales.ts,供公开页和工作台共用。主题变量来自 packages/ui/design/tokens.css,字体变更仍需同步资源和许可。

计划、积分和历史 ​

payment.enabled: false 同时停用 Stripe 插件和计费可用性接口,已有账单记录不会被删除。为 true 但没有 Stripe 凭据时计费仍关闭;部分凭据会报配置错误。

payment.trialDays 控制 Pro 试用天数,0 不提供试用。当前计划固定为 free、starter、pro,对应现有账单与权限映射;增加新计划需要同步服务端映射和支付配置,不只增加卡片。

plans 中 price 是月度展示价格,members 是计划团队限额,name 和 description 是展示文案。Stripe 实际价格由服务端 Price ID 决定,离线检查不能核实报价是否一致。

Pro 年付选项由服务端 STRIPE_PRO_ANNUAL_PRICE_ID 启用,不从这里的月度展示价乘以 12 或推算折扣。设置页分别发送月付 / 年付选择,实际收费项在创建时核对,最终金额在 Checkout 确认;官网当前价格卡片继续展示上述月度价格。

credits.signupCredits 是积分账户首次初始化时的赠送额(整数 0—1,000,000),一人一次;已有账户不会因修改配置重领。history.maxSavedRuns 控制每用户保存上限,降低上限不删除现有数据,超过上限后需先删除再保存。

creditPacks 是一次性积分包目录,默认 { enabled: false, packs: [] }。配置 SKU、名称、版本、整数金额、币种、积分和真实 Stripe Price ID;客户端目录不暴露 Price ID。必须配完整 Stripe 凭据和独立积分回调,并完整迁移至 0024、重建工作台 / API 后才能启用;退款 / 争议对账已本地验收,真实沙箱仍待验收,字段及流程见支付教程。新站生成器清空目录,需为新站重新配置。

用户密钥与外部接口 ​

apiKeys 默认关闭:每人最多 10 把有效密钥,新密钥每分钟 120 次、最长 365 天。启用前升级 0013 并重建前后端;设置页提供一次性展示、改名 / 撤销,/api/v1 只开放个人文件与任务。密钥限额叠加原有账号限额、文件配额和任务收费,不授予站点或团队管理员身份。字段范围、幂等、版本重试与本地验收见用户密钥教程。本任务主预览保持关闭,0013 尚未应用到主数据库。

邮件订阅与候补名单 ​

marketing.newsletter 与 marketing.waitlist 默认关闭。匿名申请必须单独勾选用途,收到确认邮件后再主动确认;退订不影响账号邮件。consentVersion 记录文案版本,确认有效期为 1—24 小时,再次申请间隔为 1—60 分钟。当前版本启用前升级包含 0016 的完整迁移,并重建公共页与 API;主预览保留 0012。contactsSync 独立启用两个用途的供应商同步和签名回调;缺配置拒绝启动,两个主题必须默认退订。公开工具使用报告已单独接入,见使用事件;工作台使用与积分包确认见服务端事件;个人订阅付款也已本地验收;团队独立选择及付款观测也已本地验收,真实外部环境仍在 I11 后续范围,见邮件订阅教程。

修改与检查 ​

storage 的范围、配额占用、原始二进制上传、会话授权下载、批次清理和本地验收方式,见私有文件存储。文件工作台已接入主预览,实际 320 / 390 像素布局已检查;两个生成站删除按钮的完整浏览器流程仍待验证,不把开关开启当成完整模块交付。

tasks 控制个人异步任务:enabled 停止新提交 / 重试但保留历史 / 取消;maxActive 默认五个活跃名额;maxAttempts 默认三次,创建时保存到任务,配置变更不增加已有预算;writesPerMinute 默认十次,readsPerMinute 默认一百二十次,服务端逐过程原子计数。creditCost 默认 0,整数 0—1,000,000;priceVersion 是报价版本,改价需更新,旧任务保存原价。报价确认与返还规则见支付、积分与任务。开启任务必须开启 storage 并配置 API 的 STORAGE / TASK_QUEUE,前后端一起重建。处理器、结果、工作台与验收范围见任务生命周期。

sh
bun run config:check
bun typecheck
bun build

前后端必须一起重建并发布,避免页面和 API 的开关不一致。环境变更后重启 API。检查命令验证关键范围、凭据组合、示例文件覆盖和域名一致性;不替代真实服务验收。

官网与产品配置分开 ​

本页的 packages/core/website.ts 控制生成产品,包括品牌、认证、积分和产品套餐。模板官网配置在 apps/website/config/site.ts,不读取产品套餐。官网、案例及独立演示的维护方式见对应教程。

上传验证开关 ​

security.turnstile.enabled 默认为 false,开启后保护文件上传、任务提交、手动重试、积分购买与营销申请,前后端一起重建。实际凭据保留在 API 环境中,不填写到网站配置。收费与外部 API 已复用业务限制和验证,见执行限制与验证。

供语言模型读取:llms.txt · llms-full.txt
采用 MIT 许可证。