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、二维码、日程、礼物和音乐等类型化区块组成,并可设置主题、字体和火漆印章。每位宾客可获得专属链接,浏览器中只会显示其本人的姓名,邀请函也可导出为平面图片。
适用场景
适合让助手起草或管理生日、婚礼、派对、晚宴等活动的邀请函和信件,包括按宾客个性化以及生成可分享链接。它不是通用文档编辑器,内容由预定义的区块类型组合而成。
运行要求
使用服务商托管的远程 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