每日唐诗 📜
每天一句唐诗,白天推送 + 讲解,晚上验收背诵。支持复习(多种题型)和诗人缘分排行。
一、触发与模式识别
| 用户可能说 |
模式 |
动作 |
| 今日唐诗、早上的诗、今天的诗、daily tang poem |
推送 |
一句诗 + 讲解 |
| 验收、背一下、检查、验收背诵 |
验收 |
背诵一句,你来校验 |
| 复习、抽查、回顾、复习一下 |
复习 |
5 道题,多种题型 |
| 诗人缘分、和谁有缘、哪位诗人、诗人 |
诗人 |
缘分排行 |
歧义处理:根据上下文推断。若用户刚收到今日诗再说「背一下」,即验收;若说「复习」则进入复习流程。
二、推送模式
流程:GET {URL}/?date=YYYY-MM-DD(不传 date 则用今天)→ 取 recite_lines[0] 作为主推送句。
输出格式:
- 标题:《{title}》— {author}({type})
- 主推送:只展示
recite_lines[0] 这一句(若无则用全诗 contents)
- 讲解:2–3 句,你自己的话。必须完整展示全诗(用「全诗:……」引出),不得用省略号或任何方式截断。
示例:
📜 今日唐诗 · 2025年3月4日
《月下独酌》— 李白(五言古诗)
我歌月徘徊,我舞影零乱。
讲解:李白邀月对饮,与影共舞,把孤独写成热闹。这句从「歌」到「舞」,看似放达实则寂寞。全诗:花间一壶酒,独酌无相亲。举杯邀明月,对影成三人。月既不解饮,影徒随我身。暂伴月将影,行乐须及春。我歌月徘徊,我舞影零乱。醒时同交欢,醉后各分散。永结无情游,相期邈云汉。
三、验收模式
提示一律由后端提供,禁止在 skill 中编造或写出诗句。
流程:
- 取验收提示:调用
GET {URL}/api/verification-hint?date=YYYY-MM-DD(不传则当天)。返回 { date, poem_id, recite_hint }。只向用户展示返回的 recite_hint 作为提示,不得修改、不得自行编造、不得在提示中出现要背的那句诗本身。
- 请用户背出原句。用户输入后,调用后端判题:
POST {URL}/api/validate-recite,body:{"user_input": "用户背的句子", "date": "返回的 date"}(或 "poem_id": 返回的 poem_id)。鉴权同其他 API。
- 根据返回的
passed 与 expected:
- 通过 →「✅ 背得很好!今日任务完成。」并调用
POST {URL}/api/pass 记录(body: {user_id, date, poem_id},user_id 从 DAILY_TANG_POEM_USER_ID 读取;若未配置则跳过记录)。
- 未过 → 温和指出,用返回的
expected 给出正确句,鼓励明天再试。
未看过今日诗:若用户未先看今日诗就说验收,可先调 verification-hint 拿到 recite_hint,再回复:「今天还没有推送过今日唐诗哦。先对我说「今日唐诗」看看今天是哪一首,晚上再验收吧。」或直接回复该句。
四、复习模式
复习题目仅来自用户已验收通过的记录,由后端根据 user_id 从存储中取出,不得自行编造题目或使用其他来源。验收通过后必须调用 POST {URL}/api/pass 记录,否则复习池中不会出现该句。用户需配置 DAILY_TANG_POEM_USER_ID。
流程(全部由后端出题与判题,你只负责展示与调用 API):
- 拉取题目:
GET {URL}/api/review/questions?user_id={DAILY_TANG_POEM_USER_ID}&count=5(可选 &seed=YYYY-MM-DD,默认当天)。返回 { seed, count, questions: [ { index, type, prompt, hint } ], message? }。
- 若
questions 为空或存在 message,回复用户:「还没有通过验收的句子,先背几天再来复习吧~」
- 逐题出题:按顺序展示每题的
prompt(可结合 hint 提示作者/诗名)。用户作答后,调用判题:POST {URL}/api/review/check,body:{"user_id": "...", "seed": "与拉取题目时返回的 seed 一致", "question_index": 当前题序号, "user_answer": "用户回答"}。
- 根据返回的
correct 与 expected:答对 ✅ 进入下一题,答错则展示 expected 再下一题。全部结束后:「本轮复习完成,答对 X/Y 题。」
题型(后端已实现,你只需按 type 与 prompt 展示):填空、默写、选作者、选诗名、排序。
边界:返回的题目数可能少于 5,有多少出多少。
未配置 user_id:若 API 返回 user_id required,提示用户配置 DAILY_TANG_POEM_USER_ID(如终端运行 uuidgen,写入技能 config)。
存储未配置:若 API 返回 Storage not configured 或 503,提示复习暂不可用,今日诗和验收仍可用。
五、诗人缘分模式
流程:GET {URL}/api/poet-affinity?days=30 → 得到 poets 数组(含 author、count、poems)。
输出:轻松、像「缘分测试」的语气。
- 第一名:你和 {author} 最有缘!他的诗出现了 {count} 次。
- 可举 1–2 首诗名为例
- 列出前 3–5 名及次数
- 收尾一句俏皮话(如「说不定你骨子里也有几分豪迈洒脱呢~」)
示例:
📜 诗人缘分 · 最近30天
你和 **李白** 最有缘!他的诗出现了 5 次,《月下独酌》《静夜思》《春思》……
其次:杜甫 3 次,王维 2 次。
说不定你骨子里也有几分豪迈洒脱呢~
六、规则与语气
- 一天一诗:同一日期全世界同一首,不做「再抽一次」
- 讲解:用自己的话,2–3 句,不照抄
- 验收:语气鼓励,允许小错
- 复习:题型多样,逐题反馈,不一次扔完
- 诗人:轻松有趣,像抽签
- 语言:默认中文
七、API 速查
Base URL:从技能配置 DAILY_TANG_POEM_API_URL 读取,默认值在 manifest 中定义,用户安装后无需配置。
鉴权:仅当配置了 DAILY_TANG_POEM_API_KEY 时,每个请求追加 ?key=配置值;未配置则不追加。
| 端点 |
参数 |
返回 |
GET / |
date(可选,YYYY-MM-DD,默认今天) |
id, title, author, type, contents, recite_lines, recite_hint 等 |
GET /api/verification-hint |
date(可选) |
{date, poem_id, recite_hint}(仅验收用,不包含诗句内容) |
POST /api/validate-recite |
body: {user_input, date? | poem_id?} |
{passed, expected, poem_id, date} |
GET /api/review/questions |
user_id(必填), count=5(1–10), seed(可选) |
{seed, count, questions: [{index, type, prompt, hint}]} 或 message |
POST /api/review/check |
body: {user_id, seed, question_index, user_answer} |
{correct, expected} |
GET /api/review |
user_id(必填), count=5(1–10) |
{items: [...], total} 或 {items:[], message}(旧版,复习建议用 questions) |
POST /api/pass |
body: {user_id, date, poem_id} |
{ok:true} |
GET /api/poet-affinity |
days=30(1–365) |
{days, poets: [{author, count, poems: [{date, title, id}]}]} |
1---2name: daily-tang-poem3description: 每日唐诗:一句诗 + 讲解,晚上验收,支持艾宾浩斯复习和诗人缘分。触发词:今日唐诗、验收、复习、诗人缘分。4---56# 每日唐诗 📜78每天一句唐诗,白天推送 + 讲解,晚上验收背诵。支持复习(多种题型)和诗人缘分排行。910---1112## 一、触发与模式识别1314| 用户可能说 | 模式 | 动作 |15|------------|------|------|16| 今日唐诗、早上的诗、今天的诗、daily tang poem | **推送** | 一句诗 + 讲解 |17| 验收、背一下、检查、验收背诵 | **验收** | 背诵一句,你来校验 |18| 复习、抽查、回顾、复习一下 | **复习** | 5 道题,多种题型 |19| 诗人缘分、和谁有缘、哪位诗人、诗人 | **诗人** | 缘分排行 |2021**歧义处理**:根据上下文推断。若用户刚收到今日诗再说「背一下」,即验收;若说「复习」则进入复习流程。2223---2425## 二、推送模式2627**流程**:`GET {URL}/?date=YYYY-MM-DD`(不传 date 则用今天)→ 取 `recite_lines[0]` 作为主推送句。2829**输出格式**:301. 标题:《{title}》— {author}({type})312. **主推送**:只展示 `recite_lines[0]` 这一句(若无则用全诗 `contents`)323. **讲解**:2–3 句,你自己的话。**必须完整展示全诗**(用「全诗:……」引出),不得用省略号或任何方式截断。3334**示例**:35```36📜 今日唐诗 · 2025年3月4日3738《月下独酌》— 李白(五言古诗)3940我歌月徘徊,我舞影零乱。4142讲解:李白邀月对饮,与影共舞,把孤独写成热闹。这句从「歌」到「舞」,看似放达实则寂寞。全诗:花间一壶酒,独酌无相亲。举杯邀明月,对影成三人。月既不解饮,影徒随我身。暂伴月将影,行乐须及春。我歌月徘徊,我舞影零乱。醒时同交欢,醉后各分散。永结无情游,相期邈云汉。43```4445---4647## 三、验收模式4849**提示一律由后端提供,禁止在 skill 中编造或写出诗句。**5051**流程**:521. **取验收提示**:调用 `GET {URL}/api/verification-hint?date=YYYY-MM-DD`(不传则当天)。返回 `{ date, poem_id, recite_hint }`。**只向用户展示返回的 `recite_hint` 作为提示**,不得修改、不得自行编造、不得在提示中出现要背的那句诗本身。532. 请用户背出原句。用户输入后,**调用后端判题**:`POST {URL}/api/validate-recite`,body:`{"user_input": "用户背的句子", "date": "返回的 date"}`(或 `"poem_id": 返回的 poem_id`)。鉴权同其他 API。543. 根据返回的 `passed` 与 `expected`:55 - **通过** →「✅ 背得很好!今日任务完成。」并调用 `POST {URL}/api/pass` 记录(body: `{user_id, date, poem_id}`,user_id 从 `DAILY_TANG_POEM_USER_ID` 读取;若未配置则跳过记录)。56 - **未过** → 温和指出,用返回的 `expected` 给出正确句,鼓励明天再试。5758**未看过今日诗**:若用户未先看今日诗就说验收,可先调 verification-hint 拿到 recite_hint,再回复:「今天还没有推送过今日唐诗哦。先对我说「今日唐诗」看看今天是哪一首,晚上再验收吧。」或直接回复该句。5960---6162## 四、复习模式6364**复习题目仅来自用户已验收通过的记录**,由后端根据 `user_id` 从存储中取出,**不得自行编造题目或使用其他来源**。验收通过后必须调用 `POST {URL}/api/pass` 记录,否则复习池中不会出现该句。用户需配置 `DAILY_TANG_POEM_USER_ID`。6566**流程**(全部由后端出题与判题,你只负责展示与调用 API):671. **拉取题目**:`GET {URL}/api/review/questions?user_id={DAILY_TANG_POEM_USER_ID}&count=5`(可选 `&seed=YYYY-MM-DD`,默认当天)。返回 `{ seed, count, questions: [ { index, type, prompt, hint } ], message? }`。682. 若 `questions` 为空或存在 `message`,回复用户:「还没有通过验收的句子,先背几天再来复习吧~」693. **逐题出题**:按顺序展示每题的 `prompt`(可结合 `hint` 提示作者/诗名)。用户作答后,**调用判题**:`POST {URL}/api/review/check`,body:`{"user_id": "...", "seed": "与拉取题目时返回的 seed 一致", "question_index": 当前题序号, "user_answer": "用户回答"}`。704. 根据返回的 `correct` 与 `expected`:答对 ✅ 进入下一题,答错则展示 `expected` 再下一题。全部结束后:「本轮复习完成,答对 X/Y 题。」7172**题型**(后端已实现,你只需按 `type` 与 `prompt` 展示):填空、默写、选作者、选诗名、排序。7374**边界**:返回的题目数可能少于 5,有多少出多少。7576**未配置 user_id**:若 API 返回 `user_id required`,提示用户配置 `DAILY_TANG_POEM_USER_ID`(如终端运行 `uuidgen`,写入技能 config)。7778**存储未配置**:若 API 返回 `Storage not configured` 或 503,提示复习暂不可用,今日诗和验收仍可用。7980---8182## 五、诗人缘分模式8384**流程**:`GET {URL}/api/poet-affinity?days=30` → 得到 `poets` 数组(含 `author`、`count`、`poems`)。8586**输出**:轻松、像「缘分测试」的语气。87- 第一名:你和 **{author}** 最有缘!他的诗出现了 {count} 次。88- 可举 1–2 首诗名为例89- 列出前 3–5 名及次数90- 收尾一句俏皮话(如「说不定你骨子里也有几分豪迈洒脱呢~」)9192**示例**:93```94📜 诗人缘分 · 最近30天9596你和 **李白** 最有缘!他的诗出现了 5 次,《月下独酌》《静夜思》《春思》……9798其次:杜甫 3 次,王维 2 次。99100说不定你骨子里也有几分豪迈洒脱呢~101```102103---104105## 六、规则与语气106107- **一天一诗**:同一日期全世界同一首,不做「再抽一次」108- **讲解**:用自己的话,2–3 句,不照抄109- **验收**:语气鼓励,允许小错110- **复习**:题型多样,逐题反馈,不一次扔完111- **诗人**:轻松有趣,像抽签112- **语言**:默认中文113114---115116## 七、API 速查117118**Base URL**:从技能配置 `DAILY_TANG_POEM_API_URL` 读取,默认值在 manifest 中定义,用户安装后无需配置。 119**鉴权**:仅当配置了 `DAILY_TANG_POEM_API_KEY` 时,每个请求追加 `?key=配置值`;未配置则不追加。120121| 端点 | 参数 | 返回 |122|------|------|------|123| `GET /` | `date`(可选,YYYY-MM-DD,默认今天) | `id`, `title`, `author`, `type`, `contents`, `recite_lines`, `recite_hint` 等 |124| `GET /api/verification-hint` | `date`(可选) | `{date, poem_id, recite_hint}`(仅验收用,不包含诗句内容) |125| `POST /api/validate-recite` | body: `{user_input, date? \| poem_id?}` | `{passed, expected, poem_id, date}` |126| `GET /api/review/questions` | `user_id`(必填), `count`=5(1–10), `seed`(可选) | `{seed, count, questions: [{index, type, prompt, hint}]}` 或 `message` |127| `POST /api/review/check` | body: `{user_id, seed, question_index, user_answer}` | `{correct, expected}` |128| `GET /api/review` | `user_id`(必填), `count`=5(1–10) | `{items: [...], total}` 或 `{items:[], message}`(旧版,复习建议用 questions) |129| `POST /api/pass` | body: `{user_id, date, poem_id}` | `{ok:true}` |130| `GET /api/poet-affinity` | `days`=30(1–365) | `{days, poets: [{author, count, poems: [{date, title, id}]}]}` |