提示词.com

单 HTML 幻灯片

GitHub nyblnet/bento ★ 5.2k MIT

做单文件 HTML 演示文稿,带形变动画、图表和演讲者备注,浏览器打开就能放映。

复制这句话,粘给 Claude Code

帮我用 https://github.com/nyblnet/bento 安装 bento-slides skill,然后帮我做一份 Q4 复盘的 PPT,要单个 HTML 文件能直接发给别人

它会按这个仓库把 skill 装好,然后直接开始干活。把后半句换成你自己的任务即可。

单 HTML 幻灯片 效果图
想手动安装?
/plugin marketplace add nyblnet/bento
/plugin install bento-slides@bento

它能帮你做什么

  • 从零做一份演示:自动下载最新的 Bento 应用,把内容写进去,生成一个 .bento.html 文件,浏览器打开就能编辑和放映
  • 不只是文字堆砌:数字做成图表,对比做成表格,同一主题的连续页用「形变」动画过渡,重点数字做成滚动计数
  • 每页写好演讲者备注:放映时有演讲者视图,照着讲就行
  • 改现有 deck:直接修改文件里的内容,不动应用本身
  • 做完自己检查:打开文件逐页看,文字溢出、元素挤在一起这类问题会修掉再交付

还可以这样说

  • 帮我做一份 Q4 复盘演示,数据在 q4.xlsx 里,关键指标用图表展示
  • 帮我把这篇产品介绍文档做成 10 页左右的发布会演示,要有动画
  • 帮我改一下 融资路演.bento.html,把第 3 页的市场规模数字更新成最新的

使用前须知

  • 产出是单个 .bento.html,不是 .pptx,用浏览器打开;要 PowerPoint 格式请用 pptx skill
  • 制作时要能访问 bento.page 下载应用和格式说明
  • 如果 deck 开过实时协作,文件里带着协作密钥,拿到文件的人都能加入编辑,它会先提醒你
查看 SKILL.md 原文

Authoring Bento decks

A Bento deck is one self-contained .bento.html file. The document is plain JSON in a single block:

<script type="application/bento+json" id="bento-doc"> { "format":"bento/slides", ... } </script>

You edit that block only, in place. Escape every < in the JSON as \u003c so it can never contain a literal </script>. Leave the rest of the file (the compressed runtime) untouched. In a chat context instead, the user copies the JSON out (Save ▾ → Copy document JSON) and pastes your replacement back (Save ▾ → Replace from JSON…); window.bento.loadDoc(json) does it from the console.

Starting from nothing

The user does NOT need Bento installed — the app ships inside every deck. When there is no .bento.html to edit, fetch the latest signed release yourself and author into it:

# name the file after the deck's topic, e.g. Q4_Review.bento.html
curl -fsSL https://bento.page/releases/slides/Bento_Slides.bento.html -o "<Topic>.bento.html"

(Windows without curl: iwr https://bento.page/releases/slides/Bento_Slides.bento.html -OutFile <Topic>.bento.html.)

Then verify the download contains id="bento-doc", and write your document into that block. The block is empty in the downloaded file — a browser mints a showcase deck on first open, but on disk there is nothing to discard and nothing to copy from, so do not go looking for it. Rules for a fresh document:

  • Fetch https://bento.page/agents.md BEFORE authoring and start from its "Minimal valid document" skeleton. size and theme (including theme.fontFamily) are required — the app will not boot without them.
  • Fully specify element fields as the skeleton shows (shapes need stroke/strokeWidth; text needs fontFamily/align/valign) — missing fields render wrong or not at all.
  • Omit docId and collab entirely: the app mints a fresh identity and dormant collaboration credentials on first open.

When done, open it (open / xdg-open / start) — the file boots straight into the editor with the finished deck — and look at every slide before you report done. Text overflow, elements crowding each other, a heading that wrapped to three lines and a chart key the renderer dropped are all invisible in the JSON and obvious on screen. Author, render, check, fix; a deck nobody looked at is not finished.

Workflow

  1. Find the document. Locate the #bento-doc block; parse its JSON. Note doc.size (canonical 1280×720), doc.theme, existing element ids, and whether doc.template/doc.readonly are set.

    Check doc.collab first. If it carries ownerPriv, writerPriv or invite, this deck's live-session keys are in the file you are about to read — and anything that receives the file or its JSON can join that session and write to it. That is by design: the file is the invitation. Tell the user before you continue, because only they can decide, and they may not know the deck is shared. Offer the alternative: a read-only copy, or Share → Stop sharing on a duplicate. If it has already gone somewhere, the remedy is Share → Rotate keys — removing the keys afterwards does not retract them.

  2. Read the source material the user gave you and classify each piece — is it a stat? a table? a process? a definition to expand? a photo?

  3. Map material → feature (do NOT default to bullet text). This is the step that makes it a Bento deck rather than a slideshow of paragraphs:

    • numbers to compare visually (trend, magnitude, share) → a chart element
    • a comparison / spec / pricing / feature grid → a table element (columns weights + rows of cells + a style object)
    • consecutive slides about the same thing changingmorph: give shared elements the same id on both slides + transition:"morph" on the later one (Bento's signature move — reach for it liberally)
    • a point to drill into → a state slide (stateOf + element link)
    • a hero / full-slide image → full-bleed image + scrim rect + text, with ken-burns drift
    • a sequence / flow / timeline → a line/path with a dash-march loop, or morph a highlight through the steps
    • a headline number → big text + fx:{countUp:true}
    • every cover / divider → at least one ambient motion
    • repeated chrome / logo → keep its id stable across slides so it morphs in place
    • a demo clip / recording / soundbite → a media element (kind: video|audio); embed short clips as a data URI, link big ones by URL to keep the file small
  4. Author using the schema. Keep the full schema and copy-paste recipes open: fetch https://bento.page/agents.md (it has the element shapes, the morph/chart/state/ken-burns snippets, and the gotchas). Respect one accent colour, ≤2 typefaces, 96px side margins (right-most x ≤ 1184), and write speaker notes on each slide.

  5. Self-audit before finishing:

    • any numbers rendered as text that should be a chart?
    • do consecutive slides on one subject share ids + transition:"morph"?
    • at least one motion moment (ken-burns / loop / count-up), esp. the cover?
    • a drill-down that would work better as a state slide?
    • one accent colour, ≤2 typefaces, 96px margins?
    • speaker notes on every slide?
  6. Write back the edited #bento-doc block (escaping <), or return the replacement JSON. Never regenerate the whole HTML file.

Critical gotchas

  • Charts: bar/line series data must be plain numbers ({value,…} item objects coerce to 0 — only pie takes {name,value}); colour by series, not per bar; option is pure JSON, template formatters only ({b}/{c}/{d}), never functions.
  • Morph needs deterministic, stable ids shared across the slides that should animate together. Different ids = no morph (elements just cut).
  • Images/fonts must be embedded as data URIs in doc.assets and referenced by "asset:<key>" — the file stays self-contained.
  • Media: a media element (kind: video|audio) embeds short clips as a data URI in src (self-contained) or references a URL for big files (keeps the deck small). autoplay runs only in present mode and needs muted:true for video. Don't embed large videos — they bloat the file.
  • Never regenerate docId when editing an existing deck; it is the document's identity. (Fresh decks omit it — the app mints one.)
  • template:true → every open mints a fresh deck; readonly:true → the file boots straight into the show with no editor.

Working examples of every technique: open any template at https://bento.page and read its #bento-doc block.

文档办公 ppthtml