generate-tour-report
关于
This skill generates comprehensive tour reports as self-contained HTML/PDF documents using Quarto. It creates documents with embedded maps, daily itineraries, logistics tables, and accommodation/transport details suitable for offline travel use. Developers should use it when compiling planned tours, creating offline travel guides, documenting completed trips, or producing professional tour proposals.
快速安装
Claude Code
推荐npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/generate-tour-report在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
生行程報告
生含嵌入地圖、每日行程、後勤表格與實用旅行資訊之格式化行程報告。
適用時機
- 彙編已計畫行程為可分享文件
- 建離線可用旅行指南
- 以相片、地圖與統計記錄已完成之旅程
- 為團體或客戶製專業行程提案
- 合併路線、住宿與交通資料於一文件
輸入
- 必要:路線資料(航點、段、距離、時間)
- 必要:行程日期與長度
- 選擇性:住宿詳情(名稱、地址、確認號)
- 選擇性:交通預訂(航班、火車、租車)
- 選擇性:GPX 軌跡或空間資料以嵌地圖
- 選擇性:預算資訊(各類成本)
- 選擇性:擬納入之相片或圖像
步驟
步驟一:彙編路線與景點資料
建報告前收所有行程資料於結構化格式。
彙編之資料來源:
┌────────────────────┬──────────────────────────────────────────┐
│ 類別 │ 必要欄位 │
├────────────────────┼──────────────────────────────────────────┤
│ 路線段 │ From、To、distance_km、time_hrs、mode │
│ 航點 │ Name、lat、lon、arrival、departure、notes│
│ 住宿 │ Name、address、check-in/out、cost、conf# │
│ 交通 │ Type、operator、depart、arrive、ref# │
│ 活動 │ Name、time、duration、cost、booking_req │
│ 緊急聯絡 │ 當地急救號、使館、保險 │
│ 景點 │ Name、category、lat、lon、description │
└────────────────────┴──────────────────────────────────────────┘
依日組織資料以支每日節結構:
- 依日期分組航點與活動
- 每交通段派一日
- 住宿配過夜日
- 算每日合計(距離、時間、成本)
預期: 依日組織之完整資料集,時程無缺口(每夜有住宿,每段有交通)。
失敗時: 若資料不全,以 [TBD] 佔位記漏缺項目並加於報告末之後續清單。若日期不合(如抵住宿早於自前站出發),標衝突並調時間。
步驟二:建每日節結構
建附每日節之 Quarto 文件骨架。
---
title: "Tour Name: Region/Country"
subtitle: "Date Range"
author: "Planner Name"
date: today
format:
html:
toc: true
toc-depth: 3
theme: cosmo
self-contained: true
code-fold: true
pdf:
documentclass: article
geometry: margin=2cm
toc: true
execute:
echo: false
warning: false
message: false
---
依下結構建文件:
報告結構:
1. 概覽
- 行程摘要(日期、總距離、亮點)
- 概覽地圖(所有航點、全路線)
- 速查表(關鍵日期、預訂、聯絡)
2. 第一日:[標題]
- 當日摘要(起、止、公里、時數)
- 當日路線圖
- 時程/日程表
- 住宿詳情
- 景點與活動
3. 第二日:[標題]
...(每日重複)
N. 後勤附錄
- 完整住宿表
- 交通預訂表
- 打包清單
- 緊急聯絡
- 預算摘要
預期: 完整 .qmd 檔骨架,附 YAML 首,所有每日節為 H2 標題,每節含佔位內容。
失敗時: 若行程單一文件過長(逾十四日),可考慮分週或用標籤頁佈局({.tabset})以利導覽。若需 PDF 輸出,確無互動小工具(改用靜態地圖)。
步驟三:嵌地圖與圖表
於每節加空間視覺化。
概覽地圖:
#| label: fig-overview-map
#| fig-cap: "Tour overview with all stops"
leaflet::leaflet() |>
leaflet::addProviderTiles("OpenTopoMap") |>
leaflet::addPolylines(data = full_route, color = "#2563eb", weight = 3) |>
leaflet::addMarkers(data = stops, popup = ~paste(name, "<br>", date))
每日路線圖:
#| label: fig-day1-map
#| fig-cap: "Day 1 route: City A to City B"
day1_route <- full_route[full_route$day == 1, ]
leaflet::leaflet() |>
leaflet::addProviderTiles("OpenStreetMap") |>
leaflet::addPolylines(data = day1_route, color = "#2563eb", weight = 4) |>
leaflet::addCircleMarkers(data = day1_stops, radius = 6, popup = ~name)
海拔剖面(健行/騎行日):
#| label: fig-day3-elevation
#| fig-cap: "Day 3 elevation profile"
ggplot2::ggplot(day3_elevation, ggplot2::aes(x = dist_km, y = elev_m)) +
ggplot2::geom_area(fill = "#bfdbfe", alpha = 0.5) +
ggplot2::geom_line(color = "#1d4ed8", linewidth = 0.7) +
ggplot2::theme_minimal() +
ggplot2::labs(x = "Distance (km)", y = "Elevation (m)")
預期: 每日節至少有路線圖。多模式日(駕車+健行)兼有道路圖與海拔剖面。概覽節含示全行程之地圖。
失敗時: 若 leaflet 地圖無法渲染(PDF 模式常見),退回靜態地圖:用 tmap::tmap_mode("plot") 或 ggplot2 配 ggspatial::annotation_map_tile()。若某日空間資料不可得,以路線之簡單文字描述代之。
步驟四:加後勤表
插入住宿、交通與預算之結構化表。
住宿表:
| Night | Date | Accommodation | Address | Check-in | Cost | Conf# |
|-------|------------|--------------------|--------------------|----------|--------|-------|
| 1 | 2025-07-01 | Hotel Alpine | Bergstrasse 12 | 15:00 | EUR 95 | AB123 |
| 2 | 2025-07-02 | Mountain Hut | Zugspitze Huette | 16:00 | EUR 45 | -- |
| 3 | 2025-07-03 | Pension Edelweiss | Dorfplatz 3 | 14:00 | EUR 72 | CD456 |
交通表:
| Date | Type | From | To | Depart | Arrive | Ref# |
|------------|-------|---------------|---------------|--------|--------|--------|
| 2025-07-01 | Train | Munich Hbf | Garmisch | 08:15 | 09:32 | DB1234 |
| 2025-07-03 | Bus | Zugspitze | Ehrwald | 10:00 | 10:25 | -- |
| 2025-07-04 | Train | Innsbruck | Munich Hbf | 16:45 | 18:30 | OBB567 |
預算摘要:
| Category | Estimated | Actual | Notes |
|-----------------|-----------|--------|-------------------------|
| Accommodation | EUR 212 | | 3 nights |
| Transport | EUR 85 | | Rail passes recommended |
| Food | EUR 150 | | EUR 50/day estimate |
| Activities | EUR 60 | | Cable car, museum |
| **Total** | **EUR 507** | | |
預期: 完整後勤表,所有預訂依時間列出。住宿表無漏日。預算合計正確計算。
失敗時: 若預訂詳情未定,用 [TBD] 並標示該列。若行程涉多幣別,加幣別欄並於註腳附匯率。
步驟五:渲染報告
編譯 Quarto 文件為最終輸出格式。
# 渲染為獨立 HTML(離線用佳)
quarto render tour-report.qmd --to html
# 渲染為 PDF(列印用)
quarto render tour-report.qmd --to pdf
# 編輯時即時預覽
quarto preview tour-report.qmd
渲染後檢查:
- 開 HTML 檔驗所有地圖正確載入
- 測目錄連結可用
- 驗所有圖像與圖表以合宜大小渲染
- 核獨立 HTML 離線可用(斷網重載)
- PDF:驗分頁點於合理位置(日間)
預期: 完整、獨立之文件,離線可用,所有行程資訊可導覽之格式。
失敗時: 若渲染失敗,核 R 主控台之套件錯(漏 sf、leaflet 或 ggplot2)。若獨立 HTML 過大(逾二十 MB),降低圖層解析度或用 PNG 截圖替互動地圖。若 PDF 渲染以 LaTeX 錯失敗,以 quarto install tinytex 裝 TinyTeX。
驗證
- 報告於目標格式無錯渲染
- 概覽地圖示完整路線與所有停點
- 每日有路線圖與時程
- 住宿表含行程每夜
- 交通表含所有段
- 預算合計正確
- 獨立 HTML 離線可用
- 目錄正確導覽至所有節
- 無殘留 [TBD] 佔位(或已刻意標示)
常見陷阱
- PDF 中之互動地圖:Leaflet 與他 HTML 小工具於 PDF 中無法渲染。永為 PDF 輸出提供靜態地圖替代。
- 獨立 HTML 過大:嵌多圖層生極大檔。限縮放層級或用靜態地圖截圖於圖層密集之地圖。
- 缺時區:國際行程跨時區。永為出發抵達時間明指時區以免混淆。
- 陳舊預訂參考:確認號與時間可變。納入「最後更新」日期並提醒用戶旅行前驗證。
- 無離線退路:若報告依賴網載圖層,離線空白。用
self-contained: true或預渲染地圖為圖像。 - 日期格式不一:DD/MM 與 MM/DD 混用致混淆。全文一致用 ISO 8601(YYYY-MM-DD)。
相關技能
plan-tour-route— 生此報告所彙編之路線資料create-spatial-visualization— 建報告中嵌之地圖與圖表create-quarto-report— 通用 Quarto 文件建立與配置plan-hiking-tour— 為山地行程報告提供健行專屬資料check-hiking-gear— 為後勤附錄產打包清單
GitHub 仓库
相关推荐技能
content-collections
元Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。
polymarket
元这个Claude Skill为开发者提供完整的Polymarket预测市场开发支持,涵盖API调用、交易执行和市场数据分析。关键特性包括实时WebSocket数据流,可监控实时交易、订单和市场动态。开发者可用它构建预测市场应用、实施交易策略并集成实时市场预测功能。
creating-opencode-plugins
元该Skill帮助开发者创建OpenCode插件,用于接入命令、文件、LSP等25+种事件。它提供了插件结构、事件API规范和JavaScript/TypeScript实现模式,适合需要拦截操作、扩展功能或自定义事件处理的场景。开发者可通过它快速构建响应式模块来增强OpenCode AI助手的能力。
sglang
元SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。
