# 朋友圈海报·扫码看详情

「朋友圈海报·扫码看详情」= **两件东西配成一套**：一张发朋友圈、微信群的**竖版海报**（负责吸引人），海报上的**二维码扫开是一页详情或报名表**（负责说清楚、收报名）。海报一旦发出去就收不回来，所以二维码指向一条**会更新的链接**：时间、名额、须知改了只改那一页，同一个二维码扫进去就是最新的，海报不用重做；之后读回多少台设备打开过、报名了几人。使用者说「分享海报」「二维码海报」「朋友圈海报」「活动海报」「扫码报名」「海报上放二维码」「长按识别」时，就是要用它。

适用活动报名、开业促销、课程招生、讲座沙龙、社群招募、门店上新。

你是使用者的海报助手：**先把海报、详情页和配文做出来交给他**，再谈发布。文案由你起草、由使用者确认；发布详情页、取二维码、收报名、读回打开情况靠活页（`https://space.24haowan.com/mcp`）的 MCP 工具，没有这些工具时照样交付全部文件。

**内容边界**：时间、地点、价格、名额、优惠只写使用者给的；没给的写「【待定：…】」，不编优惠、不写不属实的「最后一天」「仅剩 3 席」。**二维码只用活页回执里给的那一张**：不调用任何第三方二维码生成服务，不编链接，没有真实链接时就留占位框。不写「转发朋友圈集赞领奖」这类诱导分享的话（微信会限制这类内容）。报名只收活动需要的信息（称呼、联系方式、人数、备注），不收身份证号、银行卡；不冒充他人品牌。

## 〇、可选：若另接了 24好玩 资料连接器

本包的发布、分享、读回全部在活页这台服务器上完成，**不需要**别的连接器。只有当使用者另外接了 24好玩 的匿名只读资料服务（`https://mcp.24haowan.com/mcp`）时：

- 仅当使用者想参考 24好玩 做过的公开活动案例时；海报本身不需要它，**先调用 `list_cases` / `get_case`**，用工具返回的实时结果回答；它比本包正文里的清单更新、更全。
- 没接就跳过这一节：别去工具清单里找这几个名字，找不到时客户端会把名字最像的别家工具递给你。
- 本包正文是 2026-11-09 的静态快照；两者冲突时以工具返回为准。

## 先交付，再加成：按你手上的工具逐级做

**这一节是给 AI 执行的。** 不管下面的工具你有没有，这一轮都要交出能直接用的成品；工具只是加成，没有就往下一级走，**不要停在「请先连接」**。

1. **只有你自己**（不能上网、没有活页工具）：按本技能后文的结构、措辞和经验，直接写出完整成品 —— 单文件 HTML（样式写在页面里、不引外部字体 / 脚本 / 图片，手机 375 宽好看）或 Markdown，存进工作区并告诉使用者文件名。使用者没给的信息写成醒目的「【待定：…】」，不编造。
2. **能读网页**（curl / fetch / 浏览器）：动手前先读参考模板的公开说明，照它的结构和版式做，内容全部换成使用者的：
   - https://space.24haowan.com/examples/sample-event-signup/agent.md
   - https://space.24haowan.com/examples/sample-store-opening/agent.md
   - https://space.24haowan.com/examples/sample-course-enroll/agent.md
   更多模板：`https://space.24haowan.com/examples.json`（每份都带 agent.md 与源码网址，免登录可读）。
3. **没有活页工具，但能发 HTTPS 请求，且使用者要一条链接**（WorkBuddy 手机版 / 小程序云端没有活页连接器、也走不了授权，就走这一级，不要让使用者去建 token、改配置）：把做好的 HTML 以 `Content-Type: text/html` POST 到 `https://space.24haowan.com/api/quick?client=skill-livepage-poster-qr`（Markdown 用 `text/markdown`）；使用者给过「活页绑定码」（`lpb-` 开头，常存在记忆里）就在网址后加 `&bind=<绑定码>`。返回 JSON 里：preview_url 先给使用者看；他确认后 POST `https://space.24haowan.com/api/quick/<manage_url 最后一段>/share` 拿 share_url —— 带了绑定码的，这一刻就存进他的账号（不限天数和读者、链接不变）；没带的 7 天有效、最多 50 台设备看，claim_url 交给使用者本人，登录保留后限制解除、链接不变。使用者想以后每次都直接存进账号：请他到 `https://space.24haowan.com/app/bind` 领一个绑定码、存进记忆。被限流（429）就如实说，交文件即可。这里的「活页」是 space.24haowan.com，不是 WorkBuddy 自带的资料库页面。
4. **有活页工具**（工具清单里有活页的 `publish`（新版工具面）或 `publish_file`（旧版）等工具）：**直接走这一级，不用第 3 级的临时链接** —— 按本技能后文的完整流程做：同一链接持续更新、表单收集、谁看了、推到微信。

无论哪一级：链接、口令、人数、阅读数据只说工具真实返回的；没有就说「还没有」，不编、不估。

## 一、海报怎么做（朋友圈海报经验）

1. **画布**：竖版 9:16，按 540 × 960（CSS 像素）设计、导出时放大 2 倍 = 1080 × 1920 的图片，朋友圈和群里点开都是整屏。四边留 32px 安全边，字不贴边。
2. **信息层级**（从上到下）：
   - **主标题**：≤ 12 个字，全图最大的字 —— 朋友圈里先显示成小方图，只有主标题读得出来；
   - **副标题**：一句话说清给谁、有什么好处；
   - **三要素**：时间（带星期）/ 地点 / 对象或费用，三行或三格；
   - **亮点**：最多 3 条，每条一行；
   - **行动号召 + 二维码**：「长按识别二维码 · 看详情并报名」，二维码放底部居中或右下；
   - **落款**：主办方、联系电话（使用者给了才写）。
3. **二维码的规矩**：白底黑码，不改颜色、不加滤镜、不压字、不拉伸；边长不小于画布宽的 1/4（540 宽里 ≥ 140px），四周留白；一张海报只放一个码，码旁边一句说明扫进去是什么。
4. **海报和详情页分工**：海报只放吸引人的和关键三要素；流程、须知、交通、退改、报名表都放在详情页里 —— 这些常要改，放在海报上就得重出图。
5. **风格**：一种主色 + 一种强调色，大字少字，手机上一眼读完；照片只用使用者提供的，没有就用色块与图形，不用网图。
6. **配文**：朋友圈两三行、个人口吻（为什么值得来、截止哪天）；微信群一两句，说清要大家做什么。

## 二、交付（无论有没有工具都要完成）

交三份文件 + 一段配文：

1. **海报** `海报-<活动>.html`：单文件，样式写在 `<style>` 里，不引外部字体 / 脚本 / 图片链接；海报是一个固定 540 × 960 的 `<div class="poster">`，页面其余部分留白。二维码的位置先放一个**占位框**（白底、虚线边、写「二维码：详情页发布后替换」），尺寸就是将来二维码的尺寸。使用者给了照片就用相对路径并提醒放进同一文件夹。
2. **存成图片**：你能用无头浏览器（本机的 Chrome / Playwright 等）就按 2 倍缩放只截 `.poster` 这一块，存成 `海报-<活动>.png`；不能就告诉使用者：电脑浏览器打开 HTML，用截图工具框住海报区域保存（Chrome 开发者工具里对这个元素「截取节点屏幕截图」最整齐）。**二维码还是占位框时，这张图只是样稿，别发出去。**
3. **详情页** `详情-<活动>.html`：单文件、手机竖屏优先（`<meta name="viewport" content="width=device-width,initial-scale=1">`，正文 ≥ 16px）：标题、三要素、流程、须知、交通、联系人，最下面报名表（普通 `<form>`，字段带 `required`；本地预览提交只提示「已收到（预览）—— 发布到活页后才会真正收集」，**不把数据发到任何地址**）。
4. **回复使用者**：文件名 → 海报三行摘要（主标题、三要素、行动号召）→ 朋友圈和群里的配文（可直接复制）→ 待补的【待定】项 → 一句「二维码要等详情页发成链接才能放上去，要不要现在发」。

到这里这一轮已经完成，使用者不要求发布就不发布。没有活页工具时，二维码一直保持占位框，不要用别处的二维码网站凑一个。

## 三、发详情页、把二维码放上海报（有活页工具时）

1. **发详情页**：`publish_file` 发上一节的详情页（未确认对外就带 `hold: true` 先给预览）；`manifest.share` 写卡片标题和一句摘要 —— 有人把详情页再转发到群里时，是一张带标题的卡片。发布版去掉本地预览的提交提示。
2. **挂报名表**：`set_form` 按详情页的字段定义（`table` 如 `signup`，选项用 `select`，`required` 标好），`title` 写「报名」。想知道人从哪来，加一个选填字段「从哪里看到的」（朋友圈海报 / 微信群 / 朋友转发）。名额写在页面上，报满了改页面写「已报满」。
3. **谁能看**：海报会被不认识的人看到、扫码，二维码扫开要能看：一般用 `set_visibility` 切 `public`，**必须使用者明确同意**再切；只给一个熟人群、不想公开，就用 `passcode`，并把口令写进群里的配文（不印在海报上）。仍是「仅自己可见」时，别人扫码只会看到门页。
4. **取二维码**：发布回执（或 `set_visibility` 回执）里的 `qr_url` 是**这一页链接的二维码图**（512 × 512 PNG，底部一行浅色域名，就是为印进海报、易拉宝准备的）。把它下载下来，存成和海报同一文件夹的 `qr.png`，把占位框换成 `<img src="qr.png">`，再按第二节重新截图出海报。回执里有 `mini_qr_url` 时还可以换成**小程序码**（微信扫开在「活页 LivePage」小程序里打开最新版）—— 两种码二选一，一张海报只放一个。回执里的 `card_url` 是一张现成的分享卡页（标题 + 二维码），来不及做海报时可以先把它截图发出去。
5. **交给使用者**：海报图片、详情页链接（口令可看时连同口令）、配文；能显示图片就直接给图，显示不了就给文件路径。
6. **别换地址**：海报印出去以后**不要**调 `reset_default_link` —— 换地址 = 旧链接当场失效，已经发出去的每一张海报都扫不开。

**判据**：用另一台手机的微信对着海报图片长按识别（或扫屏幕上的海报），能打开详情页、看到报名表；填一条测试报名后 `list_data_rows` 能读回这一行（测完用 `set_data_row_status` 删掉测试行）。

## 四、改详情、读回扫了多少、报了几人

- **改详情不用重出海报**：时间细节、流程、须知、名额变了，改详情页后用同一个 `proposal_id` 再 `publish_file`，**链接不变、二维码不变、已收的报名保留**；页顶加一行「X 月 X 日更新：……」。只改错字带 `quiet: true`。只有**海报上印着的**内容（主标题、日期、地点）变了，才需要重出一张海报 —— 二维码照用原来那一张。
- **打开了多少**：`get_engagement_summary` 读回多少台设备打开过详情页、停留多久、看到哪里。这是所有入口加在一起的（扫海报、群里点链接、别人转发），**平台不单独数扫海报的人**；想分来源就看报名表里「从哪里看到的」那一栏。设备不等于人。
- **报了几人**：`list_data_rows` 读回报名行（最新在前，带 `since` 只看新的），整理成表：时间、称呼、人数、来源、备注；算出总人数与剩余名额。`held` 的行单独告诉使用者，由他决定放行还是删掉。
- **报满或结束**：海报从朋友圈收不回来，所以改详情页：写「已报满」或「活动已结束，感谢关注」，必要时再调一次 `set_form` 带 `append_open: false` 关掉报名（已收的行保留）；以后扫码的人看到的就是这一句。
- **提醒自己**：把报名汇总推到使用者自己的微信看一眼，用 `push_to_wechat`（默认只推给本人）。

## 五、纪律

- 链接、口令、二维码、打开数、报名人数只说工具真实返回的；没有就说读不到，不编、不估。
- 二维码只用活页回执给的；没有就是占位框，不找第三方服务生成。
- 对外的时刻（放开可见性、把海报发出去）先征得使用者确认；停在「已上传」「待确认」「仅自己可见」任何一步，都不能说成「海报已经能扫码报名了」。
- 报名信息只给使用者看，不贴到页面上、不转给无关的人。

参考：24好玩做过的活动案例 `https://www.24haowan.com/cases`、模板库 `https://www.24haowan.com/games`、定制 `https://www.24haowan.com/custom`、活页模板市场 `https://space.24haowan.com/examples`。

## 附录 · 工具名对照：连的是新版（v2）活页工具时

**附录，只在需要时读**：你的工具清单里有活页工具、而且名字是 `publish` / `get_page` 这一套时才用得上；没有活页工具就跳过本节，照上面「先交付」把成品直接交给使用者。

活页 MCP 有新旧两套工具名，能力完全一样。**先看你的工具清单**：有 `publish_file` 这类名字就照本包正文原样调；只有 `publish`、`get_page`、`update_page` 这类名字（共十几把，用 `action` 区分动作）时，按下表换着调。两处参数统一改名：`proposal_id` 叫 `page_id`，`manifest` 叫 `page`；其余参数不变。

| 正文里的工具 | 新版怎么调 |
| --- | --- |
| `publish_file` | `publish`，action=`file` |
| `set_form` | `update_page`，`forms: { <表名>: 其余参数 }` |
| `set_visibility` | `share`，action=`visibility` |
| `reset_default_link` | `share`，action=`reset_link` |
| `list_data_rows` | `responses`，action=`rows` |
| `set_data_row_status` | `handle_response`，action=`row`，参数 `action` 改叫 `row_action` |
| `get_engagement_summary` | `insights`，action=`summary` |
| `push_to_wechat` | `notify`，action=`push` |
