登入

二次開發

把模板變成你的產品——品牌化、營銷頁、部落格與文件內容、新 provider、新 App。

zmlkit 為二次開發而設計:內容即資料、provider 即登錄檔,下面每個配方都是純增量修改。

品牌與文案

營銷文案在 i18n 詞典(web/src/i18n/),落地頁是 JSON 驅動的:web/src/marketing/content/home/<locale>.json 用一組強型別 block(hero、features、pricing、testimonials、FAQ、CTA 等)描述整個頁面。改文案、調段落順序只需要改 JSON——不寫 React。

如果你用 Claude Code 開發,倉庫自帶 zmlkit-quick-start skill:給一段專案簡介(名字、域名、產品描述),自動完成首輪品牌化。

SEO 落地頁(不寫 React)

新增一個關鍵詞落地頁 = 一條註冊 + 一份 JSON:

  1. 在 web/src/marketing/registry.ts 的 LANDING_SLUGS 里加 slug。
  2. 建立 web/src/marketing/content/<slug>/en.json(可選加各語言檔案)。

路由、locale 字首、hreflang、sitemap 與中介軟體 rewrite 全部自動生效。

部落格與文件內容

  • 部落格文章是 CMS 行(content_post,type='blog'),在管理後臺「內容」裡編輯——分類、封面、Markdown 正文、多語言變體。
  • 文件(即本站)是 web/content/docs/ 下的 Markdown 檔案。新增 <slug>.md 並帶 title/description/order frontmatter;翻譯加 <slug>.<locale>.md。構建期生成器會把內容打進 bundle,所有部署目標通用。
  • 更新日誌(/updates)自動渲染倉庫根的 CHANGELOG.md。

加一個 AI provider

在 web/src/server/ai/manager.ts 的 AI_PROVIDERS 里加一條:實現 generateTextStream 和/或 generateMedia(非同步廠商再加 getMediaTask),宣告 capabilities。積分、排隊、重試與退款由共享管線處理。

加一個支付 provider

在 web/src/server/billing/providers.ts 的 PAYMENT_PROVIDERS 里加一條:實現 createCheckout + parseWebhook。登錄檔驅動 webhook 路由、預設 provider 選擇與簽名校驗。所有 provider 歸一化為同一種事件,積分/訂閱/退款邏輯與廠商無關。

加一個新 App(多 App)

一套部署可以承載多個產品:

  1. 插入 app 行(seed 或管理後臺),並把 slug 加進 ENABLED_APPS。
  2. 補它的按 App 金鑰:APP_<SLUG>_STRIPE_SECRET_KEY、OAuth key 等。
  3. 在 packages/core-domain/src/plans.ts 裡給它一份套餐目錄。

所有業務行都帶 app_id;客戶端請求帶 X-App-Id。同一郵箱在不同 App 是不同使用者,令牌與 App 繫結。

更進一步

完整的二開教程(加表、加端點、加頁面、加語言)在倉庫的 docs/build-new-app.md,並配套 Claude Code skill(build-on-zmlkit)。