Communitygithub.com

maverickmaltin/map-route

在两个地点之间生成 3D 地图动画视频(1080×1920 MP4),路线动态绘制。适用于 /map-route 命令或任何需要动画显示路线、行程或导航的请求。

map-route 是什么?

这是一个用于在任意两个地点之间创建 3D 地图路线动画视频的 AI 技能。用户只需提供两个地名(例如“时代广场到帝国大厦”或“伦敦到巴黎”),技能便会自动查找地点、获取真实路线、预览最后一帧,并最终渲染出一段约 4.5 秒的无声 MP4 视频。该技能支持步行、骑行、驾车和飞行等多种出行模式,并提供浅色、深色和彩色三种地图样式,用户还可自定义标题、距离单位、视频尺寸和时长。技能基于开源地图数据(OpenStreetMap)和免费服务器(OSRM 路由、OpenFreeMap 瓦片)实现,需要网络连接和浏览器环境。首次使用时会自动安装 Playwright 和 FFmpeg 等依赖,并在无网络或浏览器不可用时给出友好提示。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/maverickmaltin/claude-animate-skills/tree/HEAD/skills/map-route

在你喜欢的 AI 中提问

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

文档

/map-route: 两个地点,一张 3D 地图,路线自动绘制

用户给出两个地名(如“时代广场到帝国大厦”、“伦敦到巴黎”、“我住的里斯本酒店到机场”)。你负责查找它们、获取真实路线、检查帧画面、渲染视频,并交出无声 MP4(约 4.5 秒)。

下面的 ${CLAUDE_SKILL_DIR} 代表该技能的文件夹(即当前 SKILL.md 所在的目录)。如果你的环境没有自动填充该变量,请直接使用该文件夹的路径。将生成的所有文件保存在用户当前文件夹或用户指定的文件夹中。本技能需要互联网连接(用于地图搜索、路线规划和瓦片加载)。

0. 环境检查

python3 "${CLAUDE_SKILL_DIR}/scripts/render.py" --check

此命令需数秒,若不确定当前电脑是否已配置好,请先运行它。若输出 "ready": true 则表示就绪。否则,按照 "fix" 下列出的命令执行一次性安装,并告知用户:python3 -m pip install playwright(浏览器驱动),python3 -m playwright install chromium(仅在未安装 Google Chrome 或 Edge 时需要,约 150 MB),以及 python3 -m pip install imageio-ffmpeg(仅在缺少 ffmpeg 时需要)。如果 pip 因“外部管理环境”而拒绝安装,请创建一次私有环境,并使用其中的 Python 执行所有命令:python3 -m venv ~/.animate-skills && ~/.animate-skills/bin/pip install playwright imageio-ffmpeg,然后(如需要)~/.animate-skills/bin/python -m playwright install chromium。在 Windows 上,请将 python3 替换为 py。

1. 查找地点与路线

使每个地点足够具体以便地图搜索:添加城市(如在有歧义时加上国家):"帝国大厦" → "帝国大厦, 纽约"。然后执行:

python3 "${CLAUDE_SKILL_DIR}/scripts/route.py" "时代广场, 纽约" "帝国大厦, 纽约" \
  --labels "时代广场" "帝国大厦" --out map-<from>-<to>.json
  • --labels:在地图大头针和卡片上显示的短名称。
  • --mode:auto(默认:4 公里以下直线步行,900 公里以下驾车,更远或无道路连接时飞行)、walk(步行)、bike(骑行)、drive(驾车)、fly(飞行)。请根据用户的请求选择(如“从…开车去…”使用 drive,“飞往…”使用 fly)。同一城市内的两个景点通常步行可达:除非用户另有说明,否则 5 公里以内请传入 --mode walk。
  • --style:light(浅色,默认)、dark(深色)、color(彩色)。--title "..." 可替换卡片上的“A → B”标题行。
  • --units:auto(两地均在美国或英国时使用英里,否则公制)、metric(公制)、imperial(英制)。--size:1080x1920(默认)、1080x1080、1920x1080。

该命令会打印出找到的信息。请检查 from 和 to 行是否确实是用户指的地名(正确的城市、正确的建筑;博物馆可能显示为某个入口,这是正常的)。如果不是,请让搜索文本更具体并重新运行,最多重试几次:这些是免费的社区服务器,每次只处理一个请求。

地点也可以是坐标(如 "40.7580,-73.9855")或街道地址。

2. 检查最后一帧

python3 "${CLAUDE_SKILL_DIR}/scripts/render.py" map-<from>-<to>.json --still end --out map-<from>-<to>-check.png

查看图片(生成约需 10 秒):两个大头针及其名称是否都在屏幕中,路线是否清晰,卡片信息(距离、时间、模式)是否正确?

3. 渲染视频

python3 "${CLAUDE_SKILL_DIR}/scripts/render.py" map-<from>-<to>.json --out map-<from>-<to>.mp4

约需 30-60 秒:每一帧都会等待真实地图瓦片加载完成。如果渲染结果全黑或空白,请添加 --no-gpu 参数。最后删除检查用的图片。

4. 交付

将 MP4 文件的路径提供给用户(如果你的环境可以显示文件,请直接展示),并告知视频中显示的距离和时间。此视频没有声音。提供一个变体建议(深色风格、其他模式或更长的版本)。

配置文件为纯 JSON:你可以修改大头针名称(from.name、to.name)、title、subtitle(替换距离行)、style、color(路线的颜色)或 duration(秒数,默认约 4.5;较长的时间会减慢整体移动速度,例如 7 秒可获得更舒缓的效果),然后无需重新搜索即可再次渲染。

无网络访问时的处理

地图需要实时地图瓦片和路由服务器。在无法访问网络(或无浏览器)的沙盒环境中,请告知用户无法绘制地图,而不是绘制虚假的地图。

地图数据 © OpenStreetMap 贡献者(ODbL 许可),瓦片由 OpenFreeMap(OpenMapTiles 模式)提供,路线由 OSRM 基于 FOSSGIS 服务器提供。该署名信息将保留在视频中。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

相关技能