Magic Envelope

com.magic-envelopev1.0.0更新於 Oct 6, 2026

Create and send invitations and letters in a sealed envelope, one personal link per guest.

概覽

AI 產生的概覽

讓助理建立、讀取和更新個人化邀請函與密封信封連結,每位賓客一個專屬連結。

功能
Magic Envelope 提供瀏覽範本目錄,以及建立、取得和更新邀請函的工具。邀請函由標題、文字、圖片、日期、地點、倒數計時、RSVP、QR 碼、行程、禮物和音樂等類型化區塊組成,並可設定主題、字型和火漆印章。每位賓客可取得專屬連結,瀏覽器中只會顯示其本人的姓名,邀請函也可匯出為平面圖片。
適用情境
適合讓助理草擬或管理生日、婚禮、派對、晚宴等活動的邀請函和信件,包括依賓客個人化以及產生可分享連結。它不是通用文件編輯器,內容由預先定義的區塊類型組合而成。
執行需求
使用服務商託管的遠端 MCP 端點,不需要本機執行環境或安裝套件。清單未宣告驗證、環境變數或標頭。README 提到自架時可選的伺服器端變數,包括用於 AI 圖片的 AI_GATEWAY_API_KEY 和用於儲存的 BLOB_READ_WRITE_TOKEN。
安裝前請注意
REST 介面透過 Authorization Bearer 標頭中的編輯金鑰來修改信件,應將該金鑰視為機密。建立或更新信件會將資料寫入服務商的託管服務,已發布的連結任何持有網址的人都能存取。AI 圖片生成可能需要 AI_GATEWAY_API_KEY,並可能產生服務商費用。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Magic Envelope,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "invitations": {
      "type": "http",
      "url": "https://magic-envelope.com/api/mcp"
    }
  }
}

README

✉ Magic Envelope

Free invitations and letters: birthdays, weddings, parties, dinners, letters… Pick a ready-made template or build one from typed blocks. Send a link and the guest opens a sealed envelope.

Not an editor. Everything is typed and modular.

Run

bash
pnpm installpnpm dev          # http://localhost:3000

Locally, without any keys, published cards and uploaded images are saved under .data/. Only AI images need a key.

For agents

Everything the app does is available without a browser:

  • MCP — https://magic-envelope.com/api/mcp (tools: get_catalog, create_letter, get_letter, update_letter)
  • REST — POST /api/v1/letters, GET|PATCH /api/v1/letters/:id (Authorization: Bearer <editKey>), GET /api/v1/catalog
  • Specs — /api/v1/openapi.json, /api/v1/schema, /llms.txt, docs at /developers

The REST and MCP adapters share one service layer (src/lib/api.server.ts) and validate with the same Zod schemas as the editor.

Native apps (Capacitor 8)

The iOS/Android apps are thin shells around the hosted web app (it needs API routes, so no static export). capacitor.config.ts points the WebView at CAP_SERVER_URL (default https://magic-envelope.com); native-shell/ is only the offline page.

bash
pnpm dev:lan                                   # dev server reachable from your phoneCAP_SERVER_URL=http://192.168.1.20:3000 pnpm cap:android   # or cap:ios (opens Android Studio / Xcode)

src/lib/native.ts is the single bridge: each function uses the Capacitor plugin in the app and the web API in the browser.

FunctionNativeBrowser
share()system share sheetWeb Share, falls back to copying the link
haptic()Taptic/vibrationnavigator.vibrate
copy()native clipboardClipboard API
pickPhoto()camera / photo libraryfile input (capture opens the camera on mobile)
saveFile()write to cache, then share (Files, Calendar…)download
onBack()Android back button closes sheets / wizard steps–
deep linksappUrlOpen opens /c/… inside the app–

Environment

VariablePurpose
AI_GATEWAY_API_KEYAI image generation via Vercel AI Gateway (on Vercel, OIDC works without it)
BLOB_READ_WRITE_TOKENVercel Blob store for published cards (private) and images (public)
NEXT_PUBLIC_SITE_URLCanonical URL, e.g. https://magic-envelope.com (QR codes, OG images)
IMAGE_MODELOptional override, default bfl/flux-2-klein-4b (cheap and fast)

Architecture

src/lib/model.ts        Zod schemas: Card, 15 Block types, kinds, themes, languagessrc/lib/blocks.ts       block registry (icons, palette, factories) + 24 templates (8 kinds × 3)src/lib/ui.ts           app UI copy (always English)src/lib/styles.ts       letter styles = design-system tokens (fonts, colors, background, frame, control shape, envelope) + per-letter overridessrc/lib/i18n.ts         letter languages es · en · fr · pt · it · de (guest-facing copy + presets)src/lib/fields.ts       field kinds (phone, email, url, date…): one validator for editor + renderersrc/lib/craft.ts        seal shapes/marks & envelope geometry/palettes (shared by app and OG image)src/lib/color.ts        opaque shading helperssrc/lib/themes.ts       6 themes (parchment, midnight, rose, forest, sky, ink)src/lib/actions.ts      calendar (.ics / Google), maps, RSVP deep links, music embedssrc/lib/drafts.ts       drafts in localStorage (no account needed)src/lib/store.server.ts Vercel Blob storage, or .data/ in local dev
src/components/sketch.tsx         Excalidraw-style rough.js frames and buttonssrc/components/card/blocks.tsx    renderer per block typesrc/components/craft.tsx          wax seal, envelope art, envelope openersrc/components/editor/            tap-a-block editor, "+" palette, theme, share sheetsrc/components/wizard.tsx         language → kind → template
/                 home (drafts)/new              wizard (?kind=wedding jumps to templates)/edit/[id]        editor (local draft)/c/[id]           public envelope (+ OG image for WhatsApp/iMessage previews)/e/[id]#key       "edit on another device": imports the card into local drafts/api/publish      save/overwrite a card (id + secret edit key)/api/upload       image upload (resized client-side)/api/imagine      AI image → stored → URL/api/card/[id]    card JSON for holders of the edit key
src/lib/personalize.ts            {name} token: resolution and fallbackssrc/lib/mail.ts                   envelope slots (fixed block types), stamps, per-style envelope defaultssrc/components/editor/envelope-editor.tsx  envelope canvas + slot/seal editorssrc/components/export-stage.tsx   flat PNG/ZIP rendering (fonts embedded per style)src/components/editor/guests-panel.tsx, send-panel.tsx

Adding a block type

  1. Add a schema in lib/model.ts and include it in the Block union (add a migration there if you change an existing shape).
  2. Add an icon, a palette entry and a factory in lib/blocks.ts, and its label in lib/ui.ts.
  3. Add a renderer case and an isEmpty rule in components/card/blocks.tsx.
  4. Add an editor case in components/editor/block-editor.tsx, using Field with the right field kind.
  5. Add any guest-facing words to lib/i18n.ts.

TypeScript's exhaustive switches flag every step you missed.

Features

  • Wizard: letter language → style (15 styles: Classic, Elegant, Modern, Playful, Retro) → blank letter (default) or an occasion preset
  • Style panel in the editor: switch style, customize accent/paper/text colors and title/text fonts, seal (symbol, initials or none), text written on the envelope (supports the guest name)
  • Preview page mirrors the editor's Link/Image choice and "preview as" guest, and can send directly
  • App UI is English; each letter has its own language (changeable from the Style panel)
  • 15 blocks: title, text, image, date, place + map, countdown, RSVP (WhatsApp/SMS/email), QR, link, schedule, dress code moodboard (colors, emojis, words, pictures), gifts (IBAN copy / registry), music (Spotify/YouTube/SoundCloud), signature, divider
  • AI images in 4 styles (storybook, medieval, sketch, photo) and photo upload
  • Six themes, custom wax-seal glyph, an envelope addressed "To: …"
  • Guest list: add, paste a list ("Name, phone/email") or pick from contacts; {name} in any text addresses each guest
    • every guest gets their own link (/c/<id>?g=<guest>) — only their name is ever sent to their browser
    • send per guest via their channel (WhatsApp / email / share sheet), track who was sent, copy all links, CSV
    • RSVP replies carry the guest's name; the envelope is addressed to them
  • Envelope (link letters): fixed slots holding real blocks — Title (recipient), Text (sender, note, under the seal) and Stamp (postage, 14 perforated stamps) — edited with the same editor, placeholders and rules as the letter; seal in 4 shapes (scalloped, round, flower, octagon) with a vector mark (12 icons, 1–3 initials, a couple "A ♥ J", plain or none), always legible on any wax colour. Styles ship their own envelope (trim + stamp). Guests receive the front, turn it over with a tap, open it with a second; the real letter slides out.
  • Preview shows exactly what a guest receives: the envelope (replayable) for links, the actual exported PNG for images.
  • Two outputs from one letter: the interactive link, or flat images (PNG per guest, ZIP for all, print/PDF). Blocks with actions render flat automatically in images, and each can turn its buttons off for the link too.
  • Share: link, native share sheet, WhatsApp, downloadable QR, print/PDF
  • Guests get "add to calendar", directions, a live countdown and one-tap RSVP
  • Installable PWA (iOS/Android home screen), dark-mode chrome, reduced-motion support
  • Published links are noindex; each card can be re-published from the device that created it

來源:README.md,提交 d04167a

工具

0
工具後設資料尚未被收錄。

版本歷史

1
  1. v1.0.0最新Oct 6, 2026