Communitygithub.com

orodmorais/trip-map-3d

将旅行计划转化为交互式3D地图网站。支持显示真实地形、每日路线、地点卡片、天气信息和离线访问。

trip-map-3d 是什么?

该技能能够将用户的旅行计划(包括目的地、日程、住宿等)自动生成一个功能完整的3D地图网站。用户只需提供一个 `trip.yaml` 配置文件,系统便会基于真实地形数据绘制出各区域的3D地图,每天生成一条动态路线,并在地图上标注地点卡片、天气预报等信息。网站支持离线访问和自由定制主题。技能遵循严格的开发流程:首先通过问答收集旅行细节,然后编写YAML文件进行本地构建和视觉审查,最后发布到GitHub Pages。同时,项目严格遵守第三方数据服务的许可政策,例如不使用公共Nominatim API作为通用地理编码器,免费Open-Meteo API仅限非商业用途,商业使用需要付费密钥。最终输出的网站会保留必需的数据版权信息。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/orodmorais/trip-map-3d/tree/HEAD

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

trip-map-3d 是做什么的?

将旅行计划转化为网站:一个按区域展示的真实3D地图,每天一条动态路线,带有地点标记、卡片、天气信息和离线支持。所有内容都来自一个文件:trip.yaml。

1. 询问旅行信息

针对缺失的信息,每次提几个问题即可:

  • 目的地、时间、以及旅行天数。
  • 每天的计划:做什么、按什么顺序。写出地名即可。
  • 住宿地点。提前告知用户该网站会发布在免费的GitHub账户上,因此仅需提供街区名称。除非用户坚持,否则不要写出街道地址。
  • 语言(en、pt-BR、es)和单位。
  • 可选信息:冲浪点、潮汐、照片、主题。

照片必须为用户本人所有或已获得授权。不要帮用户从互联网下载照片。

2. 编写 trip.yaml

请参考 examples/trip.example.yaml。只有 title、dates.start 和 days 是必需字段。地点名称后务必加上城市名,例如 "Pantheon, Roma",而不是 "Pantheon"。

3. 构建并审查

python -m pip install -r requirements.txt
python -m pipeline check trip.yaml

逐行阅读报告并与用户确认。地理编码器可能会判断错误,因此需要向用户展示每个找到的地点。任何标有 CHECK 的行都需要人工检查。如果某个地点有误或缺失,请在 places: 中添加 lat 和 lon 手动修正,而无需重新搜索。

然后进行构建:

python -m pipeline build trip.yaml --out dist
python -m pip install -r requirements-dev.txt
python tools/check_site.py dist --shots shots --hashes "" dia-1

在确认一切正常之前,请先打开截图仔细查看。确保所有地点都能完整显示,没有路线位于卡片下方,也没有错误信息被打印出来。

4. 仅在用户确认后发布

确认仓库名称及其公开属性。然后:

  1. 将项目推送到从此模板创建的仓库中。
  2. 在设置 → Pages 中,将 Source 设置为 GitHub Actions。此步骤需手动完成。
  3. 每次推送后,工作流会自动构建并发布站点。

规则

  • 公共服务是共享的,切勿对其进行循环调用。trip.lock.json 保存了所有请求的答案:请将其提交,且永远不要删除它以重新尝试。
  • 本项目不使用公共 Nominatim API。其政策禁止将此类工具用作通用地理编码器。如果用户询问Nominatim,请引导他们查看使用政策,并建议使用 services.geocoder 自行搭建实例。
  • 免费的 Open-Meteo API 仅限非商业用途。如果是旅行社使用,则需要付费密钥:设置 services.open_meteo_key。
  • 请保留网站中的数据版权信息,这是法律要求的(参见 DATA_SOURCES.md)。

相关技能