Token导航 LogoToken导航TokenDH.com
研究检索操作浏览器github未标认证来源可访问许可证需确认审计提醒

travel-guidebook旅游指南

Agent Skill

travel-guidebook 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

569

周安装

23

GitHub Stars

53

下载量

178
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:travel-guidebook(旅游指南)
来源仓库:https://github.com/geekjourneyx/travel-guidebook
仓库路径:skills/travel-guidebook
安装命令:
npx skills add https://github.com/geekjourneyx/travel-guidebook --skill travel-guidebook
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/geekjourneyx/travel-guidebook --skill travel-guidebook

简介

travel-guidebook 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中快速定位候选结果。

  • 适用于需要根据关键词或任务场景从来源线索中筛选信息的场景。
  • 通过 npx skills add 命令从指定 GitHub 仓库安装并使用。
  • 安装前需确认权限范围、维护状态及是否触发联网或文件读写操作。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

Travel Guidebook Maker

从调研到成书的一站式旅游路书生成引擎——零 AI 插图、零 emoji、纯 CDN 引入。通过 Tabler Icons + 内联 SVG 装饰 + Claude 设计美学,打造有温度、有设计感的旅行指南 PDF。

设计哲学

Monocle 的编辑品味 + DK 的视觉叙事 + Lonely Planet 的信息深度 + Claude 的温暖美学

这不是一本冰冷的导航手册,而是一本有温度的旅行伙伴——在羊皮纸般的暖色底上,用衬线体讲述目的地的故事,用图标系统标记功能信息,用装饰元素营造编辑出版感。

核心理念:排版即设计。 不依赖 AI 生图或照片,通过字体层级、功能色系统、内联 SVG 装饰、CSS 伪元素,让路书本身就具备设计感。


总体流程

Stage 0 环境准备 → Stage 1 需求确认
→ Stage 2 深度调研 [5 个 explore agent 并行]
→ Stage 3 路线架构
→ Stage 4 内容写作 [专职 general-purpose agent]
→ Stage 5 HTML 交付与检查 → Stage 6 PDF 导出

Stage 0 自动检测 Node.js + Playwright 环境;Stage 2 并行调研加速信息收集;Stage 4 专职 agent 在干净上下文中写 HTML 保证一致性;Stage 5 是 HTML 检查点——用户确认满意后再执行 Stage 6 导出 PDF。


Stage 0: 环境准备

在路书制作开始前,确保 PDF 导出环境就绪。

按以下顺序逐项检测,任一步骤失败则停止并提示用户:

1. Node.js

node --version
  • ✅ v18.x 或更高 → 继续
  • ❌ 命令不存在 → 停止,提示安装:https://nodejs.org/

2. package.json

ls package.json
  • ✅ 存在 → 继续
  • ❌ 不存在 → npm init -y

3. Playwright

node -e "require('playwright')"
  • ✅ 无报错 → 继续
  • ❌ 报错 → npm install playwright && npx playwright install chromium

4. html2pdf.mjs

已 bundled 在 scripts/html2pdf.mjs,Stage 6 时复制到工作目录。

5. 高德地图 MCP(可选增强)

尝试调用高德 MCP 工具验证可用性:

调用 maps_whether("{目的地城市}")
  • ✅ 返回天气数据 → 标记 AMAP_AVAILABLE = true
  • ❌ 工具不存在或报错 → 标记 AMAP_AVAILABLE = false
高德 MCP 是增强层——不可用时路书照常生成,仅精确数据降级为 LLM 估算。

用户未配置时的提示(仅提一次,不阻塞流程):

"💡 检测到高德地图 MCP 未配置。路书仍会正常生成,但距离/交通/天气数据将使用估算值。如需精确数据,可在 MCP 配置中添加 @amap/amap-maps-mcp-server。"

环境就绪确认

所有检测通过后输出:

"✅ 环境准备就绪(Node.js {版本} + Playwright + Chromium{高德可用时加:+ 高德地图 MCP})。开始制作路书。"

Stage 1: 需求确认

向用户确认以下参数(能从指令推断的不问,推断不了的才问):

收到,准备制作旅游路书。请确认以下信息: 1. 路线名称:「{从指令推断}」,可以吗? 2. 旅行类型:自驾游 / 徒步 / 城市漫游 / 混合? 3. 目标读者:深度文化游 / 轻松休闲游 / 探险挑战游? 4. 总天数:{推断天数},对吗? 5. 个性化信息:需要在封面或末尾加上个人/团队信息吗? 直接回复修改项即可,没问题的我直接开始。

快捷模式:用户已说明足够信息时,跳过确认直接执行。

默认值:旅行类型=自驾游,目标读者=深度文化游,天数=根据路线推断,个性化信息=无。

智能路由

需求确认后,根据用户输入决定起始 Stage:

用户提供的内容跳转到说明
仅目的地/天数Stage 2标准全流程
已有行程文件(Markdown/文本)Stage 3读取行程提取架构,跳过调研
已有行程 + "已确认/不用调研"Stage 4直接进入写作排版
已有 HTML 路书Stage 5直接进入检查,可修改后导出 PDF

判断依据:用户是否附带了 @文件名 引用、是否明确说"行程已确认"、"不需要调研"等。遇到不确定的情况,默认走完整流程,但主动问一句"需要我做调研还是直接开始写?"。


Stage 2: 深度调研(并行 Sub-Agent)

旅游路书的调研需要同时覆盖实用信息文化深度。采用 并行 explore agent 加速调研——每个方向一个独立 agent,同时出发,互不阻塞。

并行调研架构

主 Agent                         explore agent 池(并行)
┌──────────┐                    ┌─────────────────────────┐
│ 构造 5+1  │  ── background ──→│ research-transport       │
│ agent     │  ── background ──→│ research-attractions     │
│ prompt    │  ── background ──→│ research-food            │
│          │  ── background ──→│ research-culture         │
│          │  ── background ──→│ research-practical       │
│          │  ── background ──→│ research-spatial (高德)   │
│          │                    └─────────────────────────┘
│ 等通知    │  ←── 自动通知 ───  (各 agent 完成后)
│ 收集合并   │  ── read_agent ──→ 获取每个 agent 结果
│ 输出报告   │
└──────────┘
research-spatial 仅在 AMAP_AVAILABLE = true 时启动。不可用时只启 5 个 agent。
### Agent 分工

使用 `task` 工具,`agent_type: "explore"`,`mode: "background"`,同时启动 5+1 个 agent:

| Agent 名 | 调研方向 | 搜索关键词示例(中英结合) |
|----------|---------|----------------------|
| `research-transport` | 交通路线 | "{起点}到{终点} 高铁/自驾 时刻 价格", "{destination} transport" |
| `research-attractions` | 核心景点 | "{目的地} 必去景点 门票 开放时间 TOP10", "{destination} attractions" |
| `research-food` | 当地美食 | "{目的地} 特色美食 推荐餐厅 美食街 人均", "{destination} local food" |
| `research-culture` | 文化历史 | "{目的地} 历史 文化 典故 民俗 方言", "{destination} history culture" |
| `research-practical` | 实用信息 | "{目的地} {月份}天气 预算 安全 注意事项", "{destination} travel tips" |

> 自驾游加第 7 个 agent `research-road`(路况、加油站、海拔变化)。

### 高德空间数据 Agent(AMAP_AVAILABLE = true 时)

第 6 个 agent `research-spatial`,专职整理高德地图数据:

你是空间数据整理专员。使用高德地图 MCP 工具整理以下数据。

目的地:{目的地} 已知景点列表:{从需求确认中提取的所有景点名称}

任务 1: 景点 POI 数据

对每个景点调用 maps_text_search("{景点名}"),提取:

  • POI ID, 名称, 完整地址, 经纬度, 评分, 营业时间, 联系电话

任务 2: 周边发现

对每个核心景点(每天的主要景点)调用 maps_around_search:

  • 关键词="餐厅|小吃", location={景点坐标}, radius=1000 → 附近餐厅 top 5
  • 关键词="便利店|药店", location={景点坐标}, radius=500 → 应急设施

任务 3: 天气预报

maps_whether("{目的地城市名称或 adcode}")

任务 4: 地理编码

对所有地名调用 maps_gep 获取精确坐标,供 Stage 3 路径规划使用

输出格式

景点 POI 汇总

景点地址经纬度评分营业时间
...............

周边发现

{景点名} 周边

名称类型距离评分
............

天气预报

日期天气温度风力
............
> 自驾游加第 6 个 agent `research-road`(路况、加油站、海拔变化)。

### Agent Prompt 模板

每个 agent 的 prompt 遵循以下结构:

你是旅游调研专员,负责【{方向}】调研。

任务参数

  • 目的地:{目的地}
  • 出发地:{出发地}
  • 日期:{具体日期}
  • 天数:{N} 天
  • 旅行类型:{自驾/高铁/混合}

调研要求

  1. 使用 bash 执行 curl 或 web_fetch 获取以下 URL(逐个尝试,失败跳过):

- {预设 URL 列表,3-5 个相关网站}

  1. 每个信源提取关键数据点
  2. 如果所有 URL 都失败,基于已有知识整理,标注"⚠️ 模型知识"

输出格式(严格遵循)

{方向名}

核心发现

  • 发现1:{具体数据}(来源:{URL})
  • 发现2:...

推荐列表

名称详情价格备注
............

信源

  • {URL1}
  • {URL2}

数据时效

  • 以上信息获取于 {当前日期},建议出行前复核价格和开放时间
### 结果收集与合并

所有 agent 完成后:

1. 逐个 `read_agent` 获取结果
2. 合并为统一调研报告,按方向分章节
3. 标注每个数据点的来源(URL 或"模型知识")
4. 如果某个 agent 失败,主 agent 补充该方向的 LLM 知识

### 降级策略

| 场景 | 处理方式 |
|------|---------|
| task 工具不可用 | 退回**串行模式**:主 agent 逐方向 web_fetch |
| 部分 agent 超时/失败 | 主 agent 用 LLM 知识补充失败方向 |
| research-spatial 失败 | 距离/时间用 LLM 估算,标注"约"前缀 |
| 完全无法联网 | **离线模式**:全部基于 LLM 知识,标注"⚠️ 建议出行前核实" |

## 调研质量要求

- 并行模式:每个 agent 至少 3 个有效信源,总计 ≥ 15 个
- 串行模式:信源总数 ≥ 20 个(≤3 天短途:≥ 10 个)
- 离线模式:尽可能丰富,标注数据时效不确定
- 优先:官方旅游网站、资深旅行博主、当地媒体、专业论坛
- 价格信息须注明时效性
- 关键事实至少 2 个独立信源交叉验证

---

# Stage 3: 路线架构

基于调研结果生成每日行程架构。当高德空间数据可用时,使用**真实路径规划**替代 LLM 估算。

## 高德路径规划(AMAP_AVAILABLE = true 时)

Stage 2 的 `research-spatial` agent 已提供所有景点的精确坐标。在此基础上,主 agent 调用高德路径规划 API:

对每日行程中的连续景点对,根据旅行类型选择 API:

旅行类型 │ API │ 说明 ──────────┼──────────────────────────────────────┼────────── 自驾游 │ maps_direction_driving(A坐标, B坐标) │ 里程/用时/过路费 城市漫游 │ maps_direction_walking (≤3km) │ 步行距离/用时 │ maps_direction_transit_integrated (>3km)│ 地铁/公交方案 骑行段 │ maps_bicycling │ 骑行路线/距离 跨城移动 │ maps_direction_transit_integrated │ 火车/大巴方案 所有模式 │ maps_distance │ 每日总距离验证

> 高德不可用时,使用 LLM 知识估算距离和时间,在路书中用"约"前缀标注。

## Stage 3.1: 行程可行性门控(Feasibility Gate)

> **第一性原理**:行程是物理约束下的规划,不是景点的自由组合。
> 在写入任何每日行程前,必须通过以下验证——不通过则强制拆分或删除景点。

### 规则一:单日往返可行性公式

可用总时长 = 出发时间到返回时间(一般 12h,高原区域 10h)

验证公式: 出发点 → 景点A(单程用时)× 2 ← 来回交通

  • 各景点游览时间之和
  • 景点间交通用时之和
  • 缓冲时间(1h) ≤ 可用总时长

不满足 → 必须拆分为多天 或 删去最远景点

**计算工具**(优先级):
- AMAP_AVAILABLE = true → 调用 `maps_direction_driving` / `maps_distance` 获取真实用时
- AMAP_AVAILABLE = false → 用 LLM 知识估算,并在路书中标注"约"

### 规则二:跨城景点强制隔离

| 距出发地单程距离 | 强制规则 |
|----------------|---------|
| ≤ 80km | 可与其他景点同天 |
| 80–150km | 同天内只能有该景点,无其他目的地 |
| > 150km | **强制独立成一天,或安排沿途住宿** |

> 典型陷阱:拉萨出发,羊卓雍错(100km)可单独一日游;日喀则扎什伦布寺/白居寺(280km)**绝对不可**与任何拉萨景点或羊湖捆绑在同一天。

### 规则三:特殊目的地约束

**高原地区(海拔 3500m+)**:

| 到达后天数 | 允许活动范围 | 禁止 |
|-----------|------------|------|
| Day 1 | 酒店周边步行,≤1h | 一切景区游览 |
| Day 2 | 市区平坦景点,≤3h | 海拔 4000m+ 景点 |
| Day 3+ | 正常游览市区 | 海拔 4500m+ 建议 Day 4 以后 |
| Day 4+ | 可前往高海拔(羊湖 4441m) | — |
| Day 5+ | 可尝试极高海拔(纳木错 4718m) | 仍需带氧气 |

**强制执行**:高原行程的 Day 1 不得安排任何收费景点,违反时自动将景点后移一天。

### 规则四:生成后审核清单

每日行程草稿生成后,必须逐一校验:

□ 当日总里程(往返)是否在可行范围? □ 所有景点是否在同一合理区域内?(不可跨越多个城市) □ 是否存在隐含的"长距离跳跃"?(如 A→B→C 看似相邻实则绕远) □ 高原行程:是否违反海拔适应规则? □ 含包车/自驾的一日游:是否有足够的观景/停留时间(≥2h)? □ 返程时间是否预留充足?(天黑前返回)

如任何一项不通过 → **红色警示**,重新规划该天行程后方可进入 Stage 4。

---

## 节奏设计

- **张弛有度**:长途驾驶日 + 深度游览日交替
- **高潮设计**:最精华目的地安排在行程中段(Day 3-5)
- **缓冲时间**:每 3-4 天安排"自由日"或"休整日"
- **情绪曲线**:出发兴奋 → 适应期 → 高潮 → 回味 → 离别不舍

## 每日行程结构

Day X: [起点] → [终点] ├─ 里程:XXkm(高德实测 / LLM 估算) ├─ 预计用时:Xh(含游览时间) ├─ 交通方案(高德可用时): │ ├─ 景点A→景点B:步行 12min / 0.9km │ ├─ 景点B→景点C:地铁2号线 3站 / 15min │ └─ 景点C→酒店:公交 537路 / 25min ├─ 天气(高德可用时):☁️ 多云 26°C ├─ 今日亮点:一句话概括 ├─ 必停点:2-3 个精选(含高德评分) ├─ 周边发现(高德可用时):景点周边高分餐厅/咖啡馆 ├─ 美食推荐:1-2 个 ├─ 住宿推荐:1-2 个 └─ 贴士:含天气建议 + 实际交通建议

> 标注"高德可用时"的字段在 `AMAP_AVAILABLE = false` 时省略或用 LLM 估算替代。

## 用户确认

展示行程架构供确认或修改,确认后进入 Stage 4。

**快捷模式**:用户要求"直接写不用确认"时跳过。

---

# Stage 4: 内容写作与排版

这是路书的核心阶段——将调研和架构转化为设计精美的 HTML 路书。

## 执行模式选择

根据可用工具自动选择最优模式:

| 条件 | 模式 | 说明 |
|------|------|------|
| task 工具可用 | **专职 Agent 模式**(推荐) | 启动 1 个 general-purpose agent 在干净上下文中写全部 HTML |
| task 不可用 | **主 Agent 直写模式** | 主 agent 用 heredoc 分批写入(传统方式) |

### 专职 Agent 模式(推荐)

**核心优势**:HTML 写作 agent 拥有干净上下文——不含调研过程、历史对话、路线讨论的噪音。从第一行写到最后一行,风格完全统一。

启动 1 个 `general-purpose` agent(`mode: "background"`),将以下内容**完整传入** prompt:

你是旅游路书 HTML 写作专家。请生成一个完整的单文件 HTML 路书。

路书参数

  • 路线名称:{名称}
  • 文件名:{名称}_guidebook.html
  • 旅行日期:{日期}
  • 天数:{N} 天
  • 旅行类型:{类型}

CSS 规范(完整复制 references/layout-css.md 内容)

{layout-css.md 全文}

章节模板(完整复制 references/chapter-templates.md 内容)

{chapter-templates.md 全文}

调研数据(Stage 2 合并报告)

{调研报告全文}

路线架构(Stage 3 确认版)

{每日行程架构}

写作风格

三层需求驱动:

  • 定向(Where)——精准清晰:地名、方向、里程用时准确
  • 决策(What)——替用户筛选:每天 2-3 个必停点
  • 情感(Why)——赋予意义:融入历史故事和当地人视角

技术要求

  1. 使用 heredoc 分批写入(cat > 首批,cat >> 后续),单引号 << 'HTMLEOF'
  2. ¥ 用 ¥ 替代,— 用 —,→ 用 →,° 用 °
  3. 每批写完后 wc -c 确认文件增长
  4. 总批次 3-5 批,按逻辑段落分割
  5. 所有 CSS 内嵌 ,所有 SVG 内联,零外部图片
  6. 最后一批必须包含 闭合标签
**主 agent 在等待期间**:可做其他轻量工作或提示用户"正在生成 HTML,预计 2-3 分钟"。

Agent 完成后:
1. `read_agent` 获取结果,确认 HTML 文件已生成
2. `wc -c` 验证文件大小(5 天行程应在 50-80KB)
3. 进入 Stage 5

### 主 Agent 直写模式(降级)

当 task 工具不可用时,主 agent 直接使用 heredoc 分批写入。

## 章节结构

路书采用五部分结构。阅读 `references/chapter-templates.md` 获取每个章节的完整 HTML 模板:

1. **出发前**:封面 / 旅程概览 / 行前准备
2. **每日行程**:Day-by-Day(核心主体)——日程卡片、路线描述、必停点、美食、住宿、贴士、笔记区
3. **目的地深度**:2-3 个重要目的地的深度介绍
4. **实用附录**:紧急联系、常用语言、费用明细、推荐歌单
5. **封底**:旅行语录 + 个性化信息 + 旅行感言空间

## 排版规范

路书视觉设计继承 Claude 暖色调美学。阅读 `references/layout-css.md` 获取完整 CSS 规范,涵盖:

- 外部资源(仅 Google Fonts + Tabler Icons CDN)
- 页面布局(A4, max-width 680px)
- 字体系统(Noto Serif SC / Noto Sans SC / JetBrains Mono)
- 配色方案(Parchment 羊皮纸底 + Terracotta 赤陶色 + 功能色系统)
- 装饰元素(指南针、分隔线、DAY 徽章、卡片角标、首字下沉)
- 分页控制(封面独占、Day 新页、卡片不拆分)
- 打印适配(保留暖色调背景)

## 写作风格

三层需求驱动写作:

- **定向(Where)**——精准清晰:地名、方向、里程用时必须准确,使用具身化描述("左手边"、"前方 200 米")
- **决策(What)**——替用户筛选:每个目的地只推荐 2-3 个必停点,用"必停/可选/时间充裕可去"标记优先级
- **情感(Why)**——赋予意义:每个地点讲"为什么值得来",融入历史故事和当地人视角,用文学化语言描述风景

### 情感增强写作(高德数据驱动)

当高德空间数据可用时,应用以下四种情感增强模式:

**1. 距离叙事**——将精确距离转化为可感知的体验:
- ≤500m → "几分钟脚程" + 途中能看到/闻到/听到什么
- 500m-2km → "散步的距离" + 沿途风景描述
- \>2km → 交通建议 + 车窗外的风景
- 示例:"出黄鹤楼南门左转,沿武珞路走 600 米——大约一首歌的时间——就到了户部巷。"

**2. 周边惊喜**——呈现高德发现的高分 POI(LLM 可能不知道的新店/小店):
- 用"💡 旅途发现"卡片呈现
- 包含:名称、距离、评分、一句推荐理由

**3. 时间感知**——天气 + 距离 + 时间段 = 具体体验建议:
- 示例:"今日 26°C 多云——步行长江大桥的完美天气。桥面 1.6km,不急不慢走完约 22 分钟。建议 16:00 出发,走到桥中央正好赶上日落。"

**4. 安心感**——在每日贴士中嵌入周边便利设施:
- 示例:"今晚住宿 200m 内有全家便利店(24h),最近药房在 400m 外武珞路上。"

> 高德不可用时,这四种模式自动省略——路书仍有完整的文化叙事和 LLM 估算数据。

## HTML 生成(heredoc 分批策略)

生成一个完整的单 HTML 文件,所有 CSS 内嵌 `<style>`,所有 SVG 装饰内联,零外部图片。

> 以下 heredoc 策略适用于**专职 Agent 的内部执行**和**主 Agent 直写降级模式**。

### 大文件写入策略

路书 HTML 通常 50-80KB(5 天行程约 30 页),超出 write/create 工具的单次上限。采用 **heredoc 分批追加**策略:

第 1 批:HTML head + 完整 CSS(<style> 标签)

cat > {文件名}_guidebook.html << 'HTMLEOF' <!DOCTYPE html> <html lang="zh-CN"> <head>...</head> <style>/* 全部 CSS,参照 references/layout-css.md */</style> <body> HTMLEOF

第 2 批:封面 + 概览 + 行前准备

cat >> {文件名}_guidebook.html << 'HTMLEOF' <div class="cover">...</div> <div class="overview">...</div> <div class="preparation">...</div> HTMLEOF

第 3-N 批:每日行程(每天一批或每 2 天一批)

cat >> {文件名}_guidebook.html << 'HTMLEOF' <div class="day-chapter">...</div> HTMLEOF

最后一批:深度游 + 附录 + 封底 + 闭合标签

cat >> {文件名}_guidebook.html << 'HTMLEOF' <div class="deep-dive">...</div> <div class="appendix">...</div> <div class="back-cover">...</div> </body></html> HTMLEOF


**关键注意**:

- 使用**单引号** heredoc(`<< 'HTMLEOF'`)防止 shell 变量展开
- `¥` 符号在 heredoc 中用 `¥` 替代,避免编码问题
- 每批写完后用 `wc -c` 确认文件增长正常
- 总批次控制在 3-5 批,按逻辑段落分割(不要在 HTML 标签中间断开)

---

# Stage 5: HTML 交付与检查

## 交付内容

1. **HTML 文件**:`{路线名称}_guidebook.html`(单文件,零外部依赖)
2. **工作报告**:制作过程记录(模板见 `references/report-template.md`)

## HTML 检查点

HTML 完成后,必须先让用户检查,不能直接跳到 PDF:

> "HTML 路书已生成:`{文件名}_guidebook.html`。请在浏览器中打开检查内容和排版。满意后告诉我,我会导出 PDF。如果需要调整,告诉我哪里需要改。"

- 用户说"OK / 满意 / 导出 PDF" → 进入 Stage 6
- 用户说"修改 xxx" → 回到 Stage 4 修改后重新提示检查

---

# Stage 6: PDF 导出

> 用户在 Stage 5 确认 HTML 满意后方可执行。

## 执行步骤

### 1. 准备导出脚本

确保工作目录有 `html2pdf.mjs`。查找方式:

优先检查当前目录

ls html2pdf.mjs 2>/dev/null || \ # 查找 skill 目录下的 bundled 脚本 find ~/.agents/skills/travel-guidebook -name "html2pdf.mjs" 2>/dev/null | head -1 | xargs -I{} cp {} ./html2pdf.mjs || \ find . -path "*/travel-guidebook/scripts/html2pdf.mjs" 2>/dev/null | head -1 | xargs -I{} cp {} ./html2pdf.mjs


如果仍找不到,用以下最小脚本创建:

// html2pdf.mjs — Playwright A4 PDF export import { chromium } from 'playwright'; import { resolve } from 'path'; const html = resolve(process.argv[2]); const pdf = html.replace(/\.html$/, '.pdf'); const b = await chromium.launch(); const p = await b.newPage(); await p.goto('file://' + html, { waitUntil: 'networkidle' }); await p.waitForTimeout(2000); await p.pdf({ path: pdf, format: 'A4', margin: { top: '2cm', right: '1.8cm', bottom: '2.5cm', left: '1.8cm' }, printBackground: true }); await b.close(); console.log('PDF saved:', pdf);


### 2. 执行导出

node html2pdf.mjs {文件名}_guidebook.html


### 3. 验证与交付

检查 PDF 存在并显示大小,提示用户打开查看:

> "✅ PDF 路书已导出:`{文件名}_guidebook.pdf`({页数}页,{文件大小})。"

## PDF 参数

| 参数 | 值 | 说明 |
| --- | --- | --- |
| 纸张 | A4 | 标准打印尺寸 |
| 上边距 | 2cm |  |
| 下边距 | 2.5cm | 为页码留空间 |
| 左右边距 | 1.8cm |  |
| 页脚 | 居中页码 | 9pt JetBrains Mono |
| 等待策略 | networkidle + 2s | 确保 CDN 资源加载 |
| 背景 | printBackground: true | 保留羊皮纸暖色纹理 |

## 备用方案

Playwright 失败时引导浏览器手动打印:Chrome/Edge 打开 HTML → Cmd/Ctrl+P → 另存为 PDF → 勾选"背景图形"。

---

# 全局规则

## 文件命名

- 调研报告:`【路线名称】-调研报告`
- 路书 HTML:`{路线名称}_guidebook.html`
- PDF 路书:`{路线名称}_guidebook.pdf`
- 导出脚本:`html2pdf.mjs`(从 scripts/ 复制)
- 工作报告:`【路线名称】-工作报告`

## 质量保证

### 调研

- 信源 ≥ 20 个,优先权威信源
- 路况信息近 6 个月内
- 交叉验证关键事实

### 内容

- 每天 2-3 个必停点,精选而非堆砌
- 通俗易懂,融入文化背景和当地人视角
- 实用信息(价格、时间、地址)准确无误

### 排版

- 字号略大于普通电子书(户外可读性)
- 对比度增强(户外光线)
- 分页正确,打印保留暖色调

## 稳定性

- 搜索失败时重试或跳过
- 任何错误不中断整体流程

## 用户体验

- 每个 Stage 开始时告知进度
- 关键步骤完成后反馈
- 确认点:Stage 1 需求(可跳过)、Stage 3 路线(可跳过)、Stage 5 HTML(必须)

---

# 执行检查清单

**Stage 0 前**

- Node.js >= 18
- Playwright + Chromium

**Stage 1 前**

- 理解用户需求
- 确认所有参数

**Stage 2 调研**

- 判断 task 工具是否可用
- 可用:启动 5 个并行 explore agent
- 不可用:退回串行 web_fetch 模式
- 所有 agent 完成后合并调研报告

**Stage 4 前**

- 路线架构已确认
- 调研内容充分
- 判断 task 工具是否可用
- 可用:读取 layout-css.md + chapter-templates.md 全文,构造 HTML agent prompt
- 不可用:主 agent 直接 heredoc 写入

**Stage 5 交付前**

- HTML 文件完整(wc -c 确认 50-80KB)
- SVG 装饰已内联
- 暖色调排版检查通过
- 打印 CSS 完整(orphans/widows、break-inside)
- 工作报告已生成

**Stage 6 导出前**

- 用户确认 HTML 满意
- html2pdf.mjs 已就绪
- PDF 生成且大小合理(通常 3-10 MB)

---

# 设计原则

1. **秒级可达** — 关键信息 3 秒内找到。日程卡片、地名、方向是最高优先级。
2. **三速阅读** — 支持扫视(3s)、浏览(30s)、沉浸(3min)三种模式。
3. **温暖如纸** — Claude 羊皮纸暖色调,数字路书拥有纸质书温度。
4. **编辑品味** — 像 Monocle 精选,不堆砌。每个推荐都带立场和温度。
5. **时空网格** — "天 × 地点"网格架构,支持随机访问。
6. **双重身份** — 旅行前是规划工具,旅行后是记忆载体。
7. **大地色系** — 赤陶、琥珀、橄榄、鼠尾草。没有冷色,没有荧光。

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

37.76%
按下载量换算67

Claude

28.32%
按下载量换算50

Cursor

18.23%
按下载量换算32

Gemini CLI

9.06%
按下载量换算16

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills