Install
openclaw skills install @yumyumtum/daily-xuanzangDaily reading of the Great Tang Records on the Western Regions (大唐西域记) — Xuanzang's Western Journey across the Silk Road and India, all 12 fascicles (CBETA T51n2087), with auto-tracked progress, vernacular/English translation, a bilingual route map, and voice. 每日讲读《大唐西域记》——玄奘西行丝路与印度全程,逐段推进,自动追踪进度,默认配中英文路线地图、白话翻译与语音。 Triggers / 触发词: 「大唐西域记」「西域记」「玄奘西行」「daily xuanzang」「今日西域记」「继续读西域记」「xuanzang」「xiyuji」
openclaw skills install @yumyumtum/daily-xuanzang逐段讲读玄奘《大唐西域记》全 12 卷(《大正藏》No.2087),从高昌出发,沿丝绸之路北道穿越中亚,翻越葱岭进入五印度,遍历佛陀生灭四大圣地与那烂陀寺,再原路返回于阗——亲践 110 国、传闻 28 国,共 138 国的地理风土实录。
每讲包含:原文节录 → 白话/英文翻译 → 背景讲解 → 下期预告,并默认配一张中英文路线示意地图标出"今天西行到哪里"。自动追踪进度,支持配图与语音朗读。
本 skill 自带原典全文(data/volumes/vol01.txt .. vol12.txt),无需联网取经文;翻译与讲解由 AI 基于原文生成。
本 skill 默认要稳定交付【文字 + 地图 + 语音】三件,必须做到单步失败不拖垮整体:
image_generate 的 abort/超时),都要就地捕获、跳过该件、继续下一件,严禁让单步失败导致整个任务 abort、用户什么都收不到。经验教训(真实案例):曾有一期因为地图生成环节 abort,整个定时任务被 abort,导致文字和语音都没发出去(只出了图)。根因就是把文字/地图/语音纳入了同一条「要么全成、要么全挂」的线性流程。修正办法就是上面六条:文字先发、各件独立、吞错继续。
第一次触发时,询问语言偏好:
欢迎来到「每日西域记」!请选择语言 / Welcome! Choose your language:
- 中文 (zh): 原文 + 白话翻译 + 中文讲解
- English (en): Original text + English translation + English commentary
用户选择后运行(SKILL_DIR 为本 skill 安装目录):
python3 SKILL_DIR/scripts/progress.py set-lang --lang zh # 或 en
进度文件保存在 ~/.openclaw/workspace/daily-xuanzang/progress.json。
python3 SKILL_DIR/scripts/progress.py next
返回 JSON 字段:
vol:当前卷号(1–12)seg_index:本卷内第几段consumed:本段消耗的字符数(advance 时要用)text:本段文言原文remaining_after:本卷剩余字符done_volume: true:本卷已讲完(再次 next 会自动进入下一卷开头)done_all: true:全书 12 卷讲完(发祝贺收尾,不再推进)读 text,从 XX國 / 至XX國 识别本段讲到的古国/圣迹,并查出对应今地名(如 阿耆尼=焉耆、屈支=龟兹/库车、缚喝=巴尔赫、那烂陀=Nālandā)。这一步既用于起标题,也用于画地图。
可参考 SKILL_DIR/references/structure.md 了解当前卷的时代地理范围。
读 SKILL_DIR/references/style-guide.md 了解格式与风格,然后据 text 与语言偏好生成讲稿。
## 📖 每日西域记 · 第 X 期
**卷次:** 卷X(某区域 · 某干国)
**今地:** [古国 = 今地名对照]
**本期路线:** [从哪到哪]
---
### 📜 原文节录
> [精选原文]
### 🗣️ 白话翻译
[逐段翻译]
### 📚 背景讲解
[这段讲哪国/哪圣迹、地理今地、历史与佛教价值、相关典故;3–5 要点]
### 🔮 下期预告
[一句话勾起好奇]
---
📍 进度:卷 X / 12
## 📖 Daily Xuanzang · Episode X
**Fascicle:** Vol. X (Region · key kingdom)
**Today:** [ancient name = modern place]
**Route:** [from → to]
---
### 📜 Original Text
> [Selected classical Chinese]
### 🗣️ Translation
[English translation]
### 📚 Background
[Which kingdom/sacred site, modern geography, historical & Buddhist significance, related lore]
### 🔮 Next Time
[Teaser]
---
📍 Progress: Vol. X / 12
google/gemini-3.1-flash-image-preview 在标签清晰度上表现好;若 openai/gpt-image-* 在本环境已正确鉴权,它对密集文字标签通常更强,可优先尝试。aspectRatio 16:9,分辨率 2K,文件名形如 xiyuji-map-NNN.png。语音:中文默认生成适合朗读的稿(300–800 字),讲史/诵经般庄重;叙事类默认配轻背景音乐(古琴/箫/古筝),只做氛围铺底、音量低、不盖人声。
推荐用封装好的音频助手脚本(已集成 edge-tts 语音 + 古琴/箫氛围 + 侧链压制,且自带容错与 NO_TTS 检查),避免每次手搓 ffmpeg:
# 1) 先把朗读纯文本写到一个文件(只放可朗读正文,无 markdown / 路径 / JSON)
# 2) 调用助手(使用方可把脚本放在自己的 scripts/ 下;参考实现见下)
bash <WORKSPACE>/scripts/xuanzang-audio.sh /tmp/xz_read_NNN.txt <OUT>/xuanzang-NNN-voice.mp3
脚本 stdout:XZAUDIO_OK = 成功;XZAUDIO_SKIP = NO_TTS 跳过(正常);XZAUDIO_ERR/WARN = 音频不可用(跳过,别 abort)。
参考脚本:
~/clawd/scripts/xuanzang-audio.sh(合成五声音阶 drone 做古琴/箫氛围,sidechain 让配乐自动避让人声)。
投递语音:在 Telegram 用消息工具 asVoice=true + media=<本地mp3> 发语音气泡;只对可朗读正文做 TTS,不要把执行说明/进度播报念出来。
配图(可选):从本期最有画面感的圣迹/场景生成(佛塔、石窟、那烂陀讲堂、雪山垭口、商旅入城等),水墨/工笔/电影分镜感,重氛围不画证件照。
交付顺序(弹性优先): 先写讲稿 → 先发文字(保底) → 推进进度 → 地图(独立交付)→ 语音(独立交付)。
讲稿建议写入使用方工作区的讲解库(如 ~/clawd/data/xiyuji/讲解/NNN-标题.md 或使用方自定路径),并在文件内附地图路径引用。
推进进度(<consumed> 用 Step 1 拿到的值):
python3 SKILL_DIR/scripts/progress.py advance <consumed> --title "本期标题"
为了让「续听 / 重听」以后能稳定调出本期,交付时除了发给用户,还要把文字与音频各存一份
到 ~/.openclaw/media/outbound/,且用 daily-replay 能识别的命名(NNN = 本期集号,零填充三位):
~/.openclaw/media/outbound/xuanzang-NNN-voice.mp3~/.openclaw/media/outbound/xuanzang-NNN.txt(只放可回放的讲稿正文,不含执行说明)~/.openclaw/media/outbound/xuanzang-NNN.jpg(把本期路线地图或主配图 复制一份到此路径;图通常生成在 tool-image-generation/,要用 cp 拷过来)集号 NNN 取本期在 history 中的序号(即已完成集数 + 1,与既有 xuanzang-012..019 命名延续)。
若当期语音脚本已直接输出到该路径,则无需重复复制;但仍需确认文字副本与地图副本也已写入同名 .txt / .jpg。
三件(音频/文字/图)尽量都落盘,回放库才会和当日交付一致。
这一步失败不阻塞给用户的交付(吞错继续),但要尽量完成,好让回放库不断补齐。
本 skill 不绑定特定频道或定时任务。使用者可:
示例:每天 19:00 取下一段 → 生成讲稿 + 中英文地图 → 发送到指定频道。
进度脚本 SKILL_DIR/scripts/progress.py,数据存于 ~/.openclaw/workspace/daily-xuanzang/progress.json。
| 命令 | 说明 |
|---|---|
status | 查看当前游标 + 语言 |
next | 输出下一段原文(JSON) |
advance <consumed> [--title "..."] | 推进游标 N 个字符 |
set --volume N --offset M | 跳到指定卷/偏移 |
reset | 从头开始(保留语言偏好) |
set-lang --lang zh|en | 切换语言 |
{
"currentVolume": 1,
"charOffset": 921,
"segIndex": 1,
"segCharsTarget": 900,
"language": "zh",
"history": [
{ "volume": 1, "segIndex": 0, "consumed": 921, "title": "阿耆尼国→屈支国", "completedAt": "2026-06-18T..." }
]
}
segCharsTarget控制每段目标长度(默认 900 字,在句末标点处收尾,不硬切句子)。可在 progress.json 手动调大/调小。
| 卷 | 收录 | 地理范围 | 看点 |
|---|---|---|---|
| 1 | 三十四国 | 西域 + 中亚 | 丝路北道:焉耆、龟兹、撒马尔罕 |
| 2 | 三国 + 印度总述 | 北印度入口 | 印度总论(名称/气候/文字/种姓/法律) |
| 3 | 八国 | 北印度(犍陀罗、克什米尔) | 乌仗那、迦湿弥罗 |
| 4 | 十五国 | 北印→中印过渡 | 秣菟罗(马图拉) |
| 5 | 六国 | 中印度恒河中游 | 曲女城戒日王、钵逻耶伽 |
| 6 | 四国 | 佛陀生灭圣地 | 舍卫城、迦毗罗卫(佛诞)、拘尸那揭罗(涅槃) |
| 7 | 五国 | 恒河下游 | 鹿野苑(初转法轮)、吠舍釐 |
| 8 | 摩揭陀(上) | 中印度 | 菩提伽耶·成道处 |
| 9 | 摩揭陀(下) | 中印度 | 那烂陀寺(玄奘留学地) |
| 10 | 十七国 | 东 + 南印度 | 迦摩缕波(阿萨姆)、羯陵伽 |
| 11 | 二十三国 | 南 + 西印度 + 锡兰 | 僧伽罗(斯里兰卡) |
| 12 | 二十二国 | 回程:葱岭 → 于阗 | 瞿萨旦那(于阗)收尾 |
完整脉络见 references/structure.md。