# 青柚 AI 工具群日报 · 第 47 期

> 活页公开模板 `sample-community-daily` · 场景: 资讯早报 · 行业: 自媒体营销 / 科技互联网
> 任何人、任何 Agent 都可以读、照着改，不需要账号。示例内容均为虚构。
> 真页面: https://space.24haowan.com/s/h7uoutLodYf9 · 详情: https://space.24haowan.com/examples/sample-community-daily

## 这是什么

社群日报 · 同一个链接每天一期，带往期

## 什么时候用

群主或社群运营每天往群里发一期日报：工具资讯、群内精华问答、欢迎新人、群里的数字走势、一个当天能做的小挑战，链接永远是同一个，读者想看前几天的就在「往期」里翻。独特处是「同一链接 + 往期 + 跨期走势 + 读者打卡」。一次性发给客户或团队的行业早报（大读数 + 盘面表 + 来源脚注）选 sample-daily-brief；一屏一条、自动翻页的竖屏故事卡早报选 sample-ai-morning。

## 用户对助手说的原话

帮我做一份社群日报网页，每天早上发到群里，永远用同一个链接：页头是群名、群主和「每天 8:00 更新」；封面一个特别大的期数数字，旁边写「第 N 期 · 日期」和星期，下面一条细细的刻度尺（14 个小刻度，今天那一格高亮、轻轻发光），再写本期一句话头条和一行小字「每天更新同一个链接，每一期都留着」，旁边一颗「翻往期」按钮（标 data-space="history"，点了打开往期目录）；接着「今日 AI 工具资讯」三条，每条一个标题链接、一句「对你有什么用」、收录日期和来源网址；「群内精华」两条群友的提问原话，标出已有人回答（附回答）还是还没人回答（琥珀色细线提示）；「欢迎新朋友」点名昨天进群的三位和一句介绍；「近 14 期走势」三个数（群成员、发言、新人）加一张三层小图（成员折线、发言柱子带 14 期均值虚线、新人柱子），今天那一期换颜色，点哪一期看当天三项，数据从数据表 metrics 读、每期追加一行；最后「今天的小挑战」一个今天就能试的小任务、三步做法，和一张「我做到了」表单（群昵称、一句话），提交后存进数据表 checkins 并显示最近 10 条；结尾一句「明早 8:00 还是这个链接」。手机上一栏往下滚，电脑上左边正文、右边放走势、往期说明和小挑战；用细线分隔，少用底色块，暗色也要好看。以后每天发新一期到同一个链接，并给这一期打上当天日期的标签。

如果你还没有活页连接器（MCP），先读 https://space.24haowan.com/for-agents.md ，照里面的说明接入，或不登录直接发布。

## 照着做一份

1. 读入口文件 https://space.24haowan.com/examples/sample-community-daily/source/index.html（它引用的其他文件见下方列表）。
2. 保留结构、版式和交互，把内容**全部**换成用户自己的；模板里的公司、人名、数字都是虚构的，一样都别留。
3. 交付一个自包含的单文件 HTML：样式写在页面里，不引外部字体 / 脚本 / CDN；手机 375 宽和电脑 1440 宽都要好看，模板有暗色就保留暗色。
4. 要发成微信里能打开、改了链接不变的网页：接入活页（https://space.24haowan.com/for-agents.md）后发布；没有账号也可以让用户在 https://space.24haowan.com/quick 上传这个文件。
5. 没有活页工具、但能发 HTTPS 请求：把做好的 HTML 以 Content-Type: text/html POST 到 https://space.24haowan.com/api/quick?client=template-sample-community-daily ，返回预览链接、7 天分享与认领链接（登录后保留、链接不变）。

## 页面结构

- 本期
- 今日 AI 工具资讯
- 群内精华
- 欢迎新朋友
- 近 14 期走势
- 今天的小挑战

## 文件（公开，纯文本）

- https://space.24haowan.com/examples/sample-community-daily/source/index.html（入口）

## 发成活页之后还能做的

- 同一链接每天一期，打日期标签后读者能翻往期、每期固定地址（MCP publish_file / finalize_upload / publish_version 的 tag 参数，CLI push --tag）
- 数据表累积跨期指标画走势（作者每期往 metrics 追加一行，页面读 ./_data/metrics.json 取最新 14 行）
- 读者写回打卡（原生表单 POST ./_data/checkins，页面读回最近 10 条）

## 发之前要备好

- 数据表 metrics（列 date / members / messages / newcomers，append_open=false）：只由作者写，每期发布时读回全表、在末尾加上当天一行再用 set_data 整表写回；页面取最新 14 行画走势。发布前先建表
- 数据表 checkins（列 name / note，append_open=true）：文末「我做到了」表单写进这里，页面读回最近 10 条；发布前先用 set_data 建好
- 每天定时更新：让助手每天早上跑一次（需要助手那边能设定时任务），每次用同一个 proposal_id 发新版本并打当天日期的标签（tag），链接不变、往期可翻

## 模板说明（README）

模板工厂（任务 K1DG）新增的画廊样例，按 `core/space/examples/QUALITY.md` 做。群名「青柚 AI 工具交流群」、群主阿柚、群友昵称和群里的数字都是编的；资讯三条链到真实的开源项目 / 官方站点首页，只作链接示意，发自己的日报时整段换掉。

## 演示哪个特色

**同一个链接每天一期 + 往期 + 跨期走势 + 读者打卡。**

- **同一链接、每期一个日期标签**：每天往同一个页面（同一个 `proposal_id`）发一版新内容，发布时给这一版打上当天日期的标签（`tag: "2026-10-29"`，可带 `title` 写本期头条）。页面有了标签以后，读者打开链接看到的是最新一期，右下角「往期」里按日期翻每一期，每期有自己的固定地址 —— 转给别人的那一期不会变成今天的。往期目录由平台提供，页面里不用自己写往期列表：封面和侧栏各放一颗「翻往期」按钮，标 `data-space="history"`，读者一点就打开「往期 · 共 N 期」（平台接手，没有往期时不动作）。走势图只取到本期日期为止（`<body data-issue="YYYY-MM-DD">`），翻到旧一期看到的就是那天的走势。
- **记忆点**是封面的大号期数「47」+ 一条细细的「往期刻度尺」：14 个小刻度，每周一格稍长，今天那一格是柚红色、底下一圈很轻的呼吸光（全页唯一的循环动画，`prefers-reduced-motion` 时停）。刻度尺是装饰示意，不读数据。
- **跨期走势**：「近 14 期走势」读数据表 `metrics`（`./_data/metrics.json`），按日期排好取最新 14 行，画三层小图（群成员折线 + 浅面积、发言柱子 + 14 期均值虚线、新人柱子），最新一期换柚红色；点 / 悬停任意一期看当天三项。图按面板实际宽度现画（`viewBox` 宽 = 面板内宽，字号 1:1），手机与电脑侧栏各是自己的坐标。顶上三个数（成员较上期、发言是否近 14 期最多、14 期新人合计）由脚本从表里现算。这张表**只由作者写**（`append_open=false`）：每期发布时追加当天一行，表随页面不随版本，越攒越长，页面始终只画最后 14 行。
- **读者打卡**：「今天的小挑战」末尾的「我做到了」是原生表单，写进数据表 `checkins`（群昵称 + 一句话），不跑脚本也能提交；脚本在时页内提交，并读回最近 10 条显示在表单下面。
- 脚本不跑时：走势显示页面里画好的那张图（与包里 `_data/metrics.json` 同一份数据，343 宽），三个数是页面里写的，表单照常提交。

设计方向（QUALITY §1.1）：风格「杂志编排」。青柚色系 —— 浅青白底 `#F5F7F1`、墨绿字 `#1B2318`、柚皮绿 `#477A16`（期数、链接、成员折线）、柚肉红 `#D24A63`（只给「今天」：刻度尺与图上最新一期）、琥珀 `#8F5C0B`（「还没人回答」的细线提示）。系统字体栈，期数用 Avenir Next / Helvetica 粗体。最大声的只有封面期数 + 刻度尺，其余节都是细线分隔、内容直接落在底色上。手机一栏往下滚；电脑上左栏正文、右栏放走势、往期说明和小挑战。

## 改哪里变成我的

| 位置 | 改什么 |
|---|---|
| 页头 `.org` | 群名（`.brand` 里的内联 SVG 是柚子标志，换成你的）、群主、更新时间 |
| 封面 `#cover` | `.issue .no` 期数；`.when` 的「第 N 期 · YYYY-MM-DD」和星期；刻度尺 `.rl` 两端的期数与日期（`.ticks` 里 14 个 `<i>`，`.wk` 是每周那格，`.now` 是今天）；`h1` 本期一句话头条 |
| 「今日 AI 工具资讯」`#news` | 三个 `<li>`：标题链接（原文地址）、`.use` 一句「对你有什么用」、`.meta` 收录日期与来源网址 |
| 「群内精华」`#picks` | 两个 `<article class="ask">`：`.who` 昵称与时间、`.q` 提问原话；已有人回答的 `.state.ok` + `.ans` 写回答人和回答，还没人回答的整块加 `class="open"`（琥珀细线） |
| 「欢迎新朋友」`#welcome` | 三个 `<li>`：`.av` 头像字（昵称第一个字）、昵称、一句介绍 |
| 「近 14 期走势」`#trend` | 数据在表里（见下）；`.stats` 是不跑脚本时显示的三个数；`.say` 一句话说这两周看出什么（每期自己写）；页面里的 `<script id="metrics-seed">` 与 `<figure class="chart">` 里那张静态图是回落，换数据时一起换（静态图就是用 `chartSVG(rows, 343)` 现画出来贴进去的） |
| 「往期」`#past` | 一句话告诉读者往期在哪翻；一般不用改 |
| 「今天的小挑战」`#challenge` | `.task` 任务、`.how` 三步做法、表单占位提示；字段名 `name` / `note` 就是表里的列名，改了要同改脚本和数据表 |
| 结尾 `.end` | 下次更新时间、找谁 |
| 页脚 | 平台标志与名称（与 `core/space/src/theme.ts` 的 `MARK_SVG` / `PUBLIC_NAME` 逐字一致，测试咬着）+ 一句适用场景；发自己的日报时整段删掉 |
| `manifest.json` | `title` / `share.title` / `share.desc`（微信卡片上的字，每期跟着改）；节增减时 `sections` 与页里的 `id` / `data-track-section` 三处同改 |

## 数据表

两张表都挂在页面上、不随版本：发新一期页面不动表，改表也不用重发页面。

**metrics**（`date` / `members` / `messages` / `newcomers`，`append_open=false`，只有作者写）：一期一行，`date` 是这一期的日期，三个数统计前一天 0–24 点。第一次建表：

```
set_data  proposal_id: <id>  table: "metrics"  columns: ["date","members","messages","newcomers"]  rows: <包里 _data/metrics.json 那 14 行，或你自己的历史数据>  append_open: false  revision: 0
```

之后每期发布时：`get_data table=metrics` 读回全表和 `revision`，在末尾加上当天一行，再 `set_data`（带刚读到的 `revision`）整表写回。页面只画最后 14 行，表本身可以一直攒下去。

**checkins**（`name` / `note`，`append_open=true`）：小挑战表单写进这里，一次一行。发之前先建表：

```
set_data  proposal_id: <id>  table: "checkins"  columns: ["name","note"]  rows: []  append_open: true  revision: 0
```

用 `list_data_rows table=checkins` 读回。表跨期累积，页面显示最近 10 条；想每期清零就在发新一期时用 `set_data` 把底表换成 `[]`（读者写回的行要先读回再决定留不留）。本地 `space-cli serve` 会把提交写进包里的 `_data/checkins.json`，试完记得改回 `[]`。

## 怎么发出去（每天一期，链接不变，往期可翻）

第一次用 MCP `publish_file` 发（`title` + `manifest`，`hold: true` 先看预览），回执里有 `proposal_id`；按上面建好两张表，确认后 `publish_version` 并带 `tag: { "name": "2026-10-29", "title": "开会录音转待办，群友试出了最省事的一条路" }`。

**之后每天**：换掉正文与 `manifest.share`，往 `metrics` 追加当天一行，再调一次 `publish_file`，这次传 `proposal_id` 而不是 `title`，并带 `tag`（当天日期 + 本期头条）—— 链接不变，前一期留在「往期」里。不先看预览、直接发时，`publish_file` / `finalize_upload` 的 `tag` 参数同样生效；漏打了用 `tag_version` 补上。

有终端时也可以用 CLI，一步传包并打标签：

```bash
export SPACE_TOKEN=sk-space-…            # MCP create_cli_token
node core/space/cli/space-cli.mjs push core/space/examples/sample-community-daily \
  --proposal <proposal_id> --manifest core/space/examples/sample-community-daily/manifest.json \
  --tag 2026-10-29 --tag-title "开会录音转待办，群友试出了最省事的一条路"
node core/space/cli/space-cli.mjs data push metrics.json --proposal <proposal_id> --table metrics --revision <n>
```
（先看预览就加 `--hold`，确认后 `publish --version <id> --tag <日期>`：给待发版本打标签会让它直接上线。）

真实在用的同款：活页自己的「AI工具实战交流群 · 群日报」（https://24hw.cn/nN7PbhVXba2V）每天早上用这套方式发同一个链接。

想让助手每天早上自己做：在助手那边设一个每天 7:50 的定时任务，任务里写清楚资讯从哪找、群里的数字从哪抄、按这份的结构出页、用上面那个 `proposal_id` 发并打当天日期的标签。
给谁看：默认仅自己可见；发到群里用 `set_visibility`（`public`，或 `passcode` 口令可看）。读者点右下角「关注更新」后，新一期发出时会收到提醒。

## 素材

- 没有位图；柚子标志、刻度尺、图表都是内联 SVG。群名、人名、数字均为虚构。
- `thumb.webp` / `phone.webp`：画廊缩略图，由 `examples/verify-shots.mjs --write-thumb --write-phone` 从成品截出，不进发布包。
