by SpaceZephyr
地图动效视频 Claude Code skill:基于高德地图真实路线/边界/卫星底图,做地球俯冲、vlog 我在这里、徒步海拔、骑行旅程、航线、行政区高亮等地图动画,12 种风格
# Add to your Claude Code skills
git clone https://github.com/SpaceZephyr/map-motionGuides for using ide extensions skills like map-motion.
See how map-motion compares with popular alternatives.
map-motion is an open-source ide extensions skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by SpaceZephyr. 地图动效视频 Claude Code skill:基于高德地图真实路线/边界/卫星底图,做地球俯冲、vlog 我在这里、徒步海拔、骑行旅程、航线、行政区高亮等地图动画,12 种风格. It has 53 GitHub stars.
map-motion's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/SpaceZephyr/map-motion" and add it to your Claude Code skills directory (see the Installation section above). map-motion ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
map-motion is primarily written in Python. It is open-source under SpaceZephyr on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other IDE Extensions skills you can browse and compare side by side. Open the IDE Extensions category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh map-motion against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
子 skill:「找机位」(照片 → 机位揭秘视频)
photo-spot/;3D 地形与光线推演map-3d/;旅行 vlog(照片 → 卡通小人沿路线走、到站拍照、配乐)travel-vlog/。流程和坑在各自目录;本文件只讲引擎。
一份「镜头表」JSON → 编译(高德解析地名、取路线和边界、算镜头)→ 逐帧渲染(Chromium 画布 + ffmpeg)。
D=~/.claude/skills/map-motion/scripts
$D/make.sh 我的片子.json 成片.mp4 --gif 动图.gif # 一键:编译 + 渲染
$D/make.sh 我的片子.json 静帧/ --stills 1,4.5,9 # 先抽几帧看构图(快)
首次使用:uv run --with playwright playwright install chromium;高德 key 见下。
size)、要什么感觉(定 style)。不确定样式时,同一份 spec 换 style 各渲一帧给用户挑(至少三种)。assets/examples/ 挑最近的一份复制改。镜头类型与全部参数见 references/spec.md。--stills 取每个镜头中段和结尾各一帧。输出末尾有自动质检(出画、文字互压、文字压照片、黑块):「质检:通过」就不用读图;报了问题,或要判断审美(构图、配色)时,才 Read 对应静帧。--gif、--audio。长片放后台跑;结束只输出几行摘要(成片路径、时长、边渲边抽检的质检结论),-v 才打印逐段进度。中途看进度用 python3 scripts/status.py(一行),不要反复读日志。| type | 效果 | 典型用途 |
|---|---|---|
globe |
地球自转 → 俯冲到地点,落点弹标签 | 片头、地点引入 |
locate |
地球俯冲 → 瞄准镜锁定 → 坐标卡(经纬度滚动、海拔、日期) | Vlog 片头「我在这里」 |
pins |
多个地点依次落针+涟漪 | 打卡点、门店 |
route |
高德真实路线或 GPX 描线,车/人沿线走,可镜头跟车、里程表、海拔剖面、终点插旗 | 自驾、徒步登山、骑行、跑步 |
flight |
大圆航线向上拱起,飞机沿线飞 | 出差、旅行、跨城 |
region |
行政区描边 → 填色 → 写名 | 城市群、区域介绍 |
area |
公园/景区/校园轮廓(OSM 边界)描边填色,可让小人绕一圈 | 介绍一个地点、游园路线 |
radiate |
一个中心向多点放射飞线 | 总部/仓库辐射、业务覆盖 |
trip |
多站旅程:逐段路线+累计里程+到站邮戳+照片+原路返程;加 avatar 进入 vlog 模式(卡通形象走路、到站咔嚓拍照、照片弹出、脚步/快门/啵/叮音效踩拍点) |
假期出行复盘、旅行 vlog |
wall |
片尾照片墙:全程照片依次落下 +「N 个机位 · 共走 X km」+ 形象摇摆 | vlog 收尾 |
overview |
镜头框住至今所有地点 | 片尾收束 |
title |
画面中央标题卡 | 开场、章节 |
snap |
地球俯冲 → 机位(相机图标)+被摄地 → 取景扇形 → 取景框对焦 → 咔嚓(自动配快门声)→ 照片从机位翻折立起,背景是这张照片的虚化;live 可做 iPhone Live Photo 播放效果 |
「这张照片在哪拍的」、机位揭秘、摄影 Vlog |
guess |
整屏照片+「这张照片在哪拍的?」+提示+倒数,闪白露出地球,接 locate 揭晓 |
猜地点系列、悬念片头 |
"mode": "3d")真立体山体(AWS Terrain Tiles 高程 + Esri 卫星,MapLibre GL 渲染)。整片是固定一套:卫星地球俯冲 → 整条轨迹 3D 鸟瞰(白线 + 标题)→ 压低贴到起点 → 跟着人走(黄线、里程、海拔、累计爬升、小地图、底部海拔剖面;到照片点停下弹照片)→ 拉回全景、出总数据。写法见 references/spec.md;流程、例子和检查命令在子 skill map-3d/。
"gcj": true。"track": {"via": [途经点…]} 沿 OSM 小路取最短路连起来(山里 OSM 常断头,不连通就加中间点)。--stills 抽帧看。镜头之间自动「飞过去」(van Wijk 平滑缩放:远距离先拉远再推近,和 Mapbox flyTo 同一公式),不需要手写转场。
| style | 底图 | 适合 | 最大推近 |
|---|---|---|---|
amap |
高德标准路网瓦片 | 通用、街道级路线 | 17.5 |
amap-dark |
高德瓦片反色 | 夜景感、科技向 | 17.5 |
amap-gray |
高德瓦片去色,红色路线 | 数据可视化、新闻图解 | 17.5 |
amap-sepia |
高德瓦片棕褐调,手写字 | 怀旧、城市故事 | 17.5 |
amap-journal |
高德瓦片淡暖色 + 纸纹 + 手写字,红色虚线路线 | 旅行 vlog、citywalk 手账 | 17.5 |
satellite |
高德卫星+路名,地球也是真实卫星图 | 片头俯冲、户外、航线 | 17.5 |
satellite-world |
Esri 全球卫星(无路名),署名 Esri | 境外地点(高德卫星境外只有城市级,再推近是灰底) | 17.5 |
dark |
矢量:深底发光边界与飞线 | 数据/业务分布 | 8 |
light |
矢量:白底极简 | 区域介绍、信息图 | 8 |
journal |
矢量:纸纹水彩省份、红虚线、邮戳、手写字 | 旅行手账 | 8 |
vintage |
矢量:复古牛皮纸、棕墨线 | 历史、怀旧 | 8 |
neon |
矢量:深紫底、品红海岸线、青色发光飞线 | 潮流、夜生活、音乐 | 8 |
ink |
矢量:宣纸底、水墨陆地、朱砂路线与印章 | 国风、文旅、历史路线 | 8 |
blueprint |
矢量:蓝底白线网格、虚线路线 | 工程、规划、科普 | 8 |
矢量样式的边界是抽稀过的(约 2 km 精度),编译时自动把镜头封顶在 8 级(约一个地级市范围)并提示;要街道细节就用前三种。
export AMAP_KEY=… 或写入 ~/.config/map-motion/amap_key(Web服务类型)。没 key 时编译直接报错并说明怎么申请。不要把 key 写进 spec 或项目目录。~/.cache/map-motion/api/,瓦片缓存在 ~/.cache/map-motion/tiles/;改 spec 重编译不重复消耗配额。"wgs84": true 转成高德坐标。elevation: true 用 OpenTopoData SRTM 30m(免费,每天约 1000 次请求,已缓存);查之前把高德坐标换回 WGS-84,否则山区高度会错。scripts/runtime/mm.js:样式表 ST(颜色、字体、是否发光/纸纹/虚线)、各图层绘制函数(route pin region hudTitle odometer caption photo)、地球(globeTexture/globeFill 逐像素反投影)。加样式=往 ST 加一项(地球颜色用 globeOcean/globeLand 单独给,暗色样式要拉开对比),用瓦片的再加进 compile.py 的 TILED。scripts/compile.py 的 shot_* 函数;加镜头类型=写一个 shot_xxx 并登记到 SHOTS。assets/examples/showcase.json(覆盖全部镜头)在两三种样式下抽帧回归。3D:MapLibre 5.6 在地球↔地形切换时抛 clearFadeHold 错 → 用 5.24(render.py 的 VENDOR)。setData 在 worker 里异步,idle 可能先到,线会慢一帧 → t3d.js 先等 sourcedata(isSourceLoaded) 再等 idle。
3D:单帧抽图看着没问题、连续出片却在远处露黑块(天空/远处地形没画)——抽帧检查要用 --from/--to 渲一小段,别只看 --stills。现在的处理:推近到 12.2 级后从地球投影换成平面投影(地球投影下雾和天空不生效;12 级前换会跳一下),底色透明、天空由 2D 画布自己画渐变,全景/片尾俯角压到 40–44° 不露地平线。
3D:雪山上白字看不清 → HUD 上下压暗渐变。俯视全景按透视近大远小会出画 → 自动挑让轨迹顺着视线方向的朝向,再退 0.35 级。
正射地球上用多边形填陆地会破(背面点贴地平圈后围出错误区域,整球变白)→ 现在逐像素反投影取纹理;海岸线、省界只描线。
墨卡托下逐点做 ±180° 归位,环会在屏幕两侧来回跳、画出横贯全屏的线 → Pline 只对首点归位,之后按经度差连续累加。
推得很近时顶点投影到几十万像素外,画布填充破成楔形 → clipRing 先按屏幕外扩框裁剪。
地名先做 POI 搜索会把行政区名搜成同名商户;只信地理编码又会把「青海湖」编成乌鲁木齐同名小区 → geocode 先编码,落到兴趣点/道路/公交站/住宅区级才退 POI。编译打印的地点行仍要逐行核对。
过渡阶段的透明度要从外层一路传进 drawGlobe,内部重设 globalAlpha=1 会让交叉淡化失效。
从行政区推到街道级,区域填色会染满整屏 → 推近前那一镜写 clear(编译主循环统一处理)。
OSM 主站常 504、单个镜像会超时 → osm.py 轮流试三个镜像并缓存;按名字查会查到同名地铁站,已按 railway/public_transport 标签排除。
给 Claude Code 用的地图动画 skill:用一句话描述(或一份 JSON 镜头表),出一段基于真实高德地图数据的地图动效视频——竖屏/横屏 MP4,外加 GIF。
路线是高德真实的驾车/步行/骑行路线,边界是真实的行政区和公园轮廓,海拔是 SRTM 卫星高程,底图可以直接用高德标准地图或卫星图。
卫星地球俯冲 → 瞄准镜收缩锁定(LOCKED)→ 坐标卡:地名逐字打出、经纬度滚动到位、海拔、拍摄时间。10 秒,直接接你的 vlog 正片。
assets/examples/vlog_locate.json · vlog_locate_night.json
镜头跟着人沿高德步行路线上山,底部的海拔曲线同步画出,实时显示海拔和累计爬升,山顶插旗。
深圳梧桐山,泰山涧 → 大梧桐:3.6 km,海拔 98 → 916 m,累计爬升 835 m。hike_elevation.json
一次写完整趟行程:逐段路线、累计里程表、「DAY n · 日期 · km」、到站邮戳、照片拍立得、原路返程。
青海湖环湖骑行(高德骑行路线 365 km,海拔 3,200 m 上下)· 国庆自驾深圳 → 香格里拉往返 4,213 km。cycling_trip.json · road_trip.json
从地球或行政区推进到一个地块,描出轮廓、填色,再从地铁站步行过去、绕园一周。
上海徐汇区桂林公园。park_locate.json · park_walk.json
城市间飞线(大圆航线,飞机沿弧飞)、行政区依次描边高亮、一个中心向多城辐射。
showcase.json · flight.json · region.json · radiate.json
photo-spot)给一张照片:卫星地球俯冲 → 相机图标落在拍照机位、被摄地落针 → 取景扇形扫过去 → 取景框对焦 → 快门声+闪白 → 照片从机位处 3D 翻折立起,背景是照片自身的虚化;可加 iPhone Live Photo 播放效果(用真 MOV,或静态照片模拟)。照片带 GPS 时自动读出机位、朝向、焦距和参数。
富士山 × 新干线(境外,Esri 卫星)· 雨崩神瀑 → 卡瓦格博(Live Photo 模拟)· 香港钓鱼翁 → 布袋澳。photo-spot/(安装见下)· 示例 spec 在 photo-spot/examples/
map-3d)真实山体起伏(AWS 高程 + Esri 卫星,MapLibre GL 渲染):卫星地球俯冲 → 整条路线 3D 鸟瞰 → 镜头贴着人/车沿路线走(走过的线变黄,里程、海拔、累计爬升、小地图、底部海拔剖面实时走,沿途弹照片)→ 拉回全景出总数据。路线可以是 GPX(两步路、六只脚、Strava、手表)、高德驾车/骑行/步行规划,或没有 GPX 时沿 OpenStreetMap 小路连途经点;也能只给一个地方,俯冲后绕着转一圈。
香格里拉 → 飞来寺自驾 171 km(高德驾车路线,预览 2 倍速)· 卡瓦格博单点环绕。map-3d/(安装见下)· 示例 spec 在 map-3d/examples/(另有雨崩神瀑徒步、泰山红门登顶)
map-3d 的 "mode": "sun")给山峰、机位、日期,按真实太阳位置(NOAA 算法)和周围山体遮挡(沿太阳方向在高程上找地平线)算出:天文日出、山顶受光(日照金山开始)、金色褪去、机位见光。画面上时间快进,山体明暗跟着真实太阳方位走,天空变色,顶部时钟 + 罗盘,底部关键时刻表到点打勾。
10 月 15 日飞来寺看卡瓦格博:07:21 峰顶受光(比天文日出早 4 分钟)、07:52 金色褪去,而飞来寺被身后山坡挡着,09:54 才见光。
travel-vlog)一组旅行照片 → 按 GPS 和拍摄时间排出机位 → 沿真实步行/驾车路线连起来;用本人照片 AI 生成 Q 版形象(也有内置小人),小人一颠一颠地走,右上角里程累加,到站「咔嚓」拍照、照片弹出,最后照片墙 + 总里程。配原创欢快 BGM(程序合成,无版权问题)和脚步、快门、啵、叮音效,弹照片踩在拍点上。
西湖 5 个机位步行 8.8 km(演示用内置小人,预览 1.5 倍速、无声;成片带 BGM 和音效)。
也有独立仓库 SpaceZephyr/travel-vlog(自带引擎,单独安装即可用)。
同一份镜头表,改一个 style 字段就换风格。前 6 种直接用高德瓦片、satellite-world 用 Esri 卫星(能推到街道级),后 7 种用代码绘制矢量底图(全国到地级市尺度)。

| style | 名字 | 适合 |
|---|---|---|
amap |
高德标准 | 通用、街道级路线 |
amap-dark |
高德暗色 | 夜景、科技感 |
amap-gray |
高德灰 | 数据可视化、新闻图解 |
amap-sepia |
高德复古 | 怀旧、城市故事 |
amap-journal |
高德手账(淡暖色 + 纸纹 + 手写字) | 旅行 vlog、citywalk |
satellite |
卫星(地球也是真实卫星图) | 片头俯冲、户外、登山 |
satellite-world |
Esri 全球卫星 | 境外地点(高德卫星境外推近无影像) |
dark |
暗色科技 | 业务分布、数据大屏 |
light |
极简白 | 区域介绍、信息图 |
journal |
水彩手账 | 旅行复盘 |
vintage |
复古纸 | 历史、怀旧 |
neon |
赛博霓虹 | 潮流、音乐、夜生活 |
ink |
国风水墨 | 文旅、历史路线 |
blueprint |
工程蓝图 | 规划、工程、科普 |
| type | 效果 |
|---|---|
globe |
地球自转 → 俯冲到一个地点 |
locate |
地球俯冲 → 瞄准镜锁定 → 坐标卡(vlog 片头) |
pins |
一串地点依次落针、带涟漪 |
route |
高德驾车/步行/骑行路线或自己的 GPX 描线;车/人沿线走、镜头跟随、里程表、海拔剖面、终点插旗 |
flight |
大圆航线,飞机沿拱起的弧线飞 |
region |
行政区(省/市/区县)描边 → 填色 → 写名 |
area |
公园/景区/校园等地块轮廓(OpenStreetMap),可绕行一圈 |
radiate |
一个中心向多点放射飞线 |
trip |
多站旅程:逐段路线、累计里程、邮戳、照片、返程;加 avatar 变成卡通小人走路、到站拍照的 vlog(travel-vlog 用的就是它) |
wall |
片尾照片墙 + 总里程 |
overview |
拉回全景,框住所有出现过的地点 |
title |
标题卡 |
snap |
机位揭秘:相机图标+取景扇形 → 对焦 → 咔嚓 → 照片 3D 翻折立起,可选 Live Photo(photo-spot 用的就是它) |
guess |
「这张照片在哪拍的?」:整屏照片+提示+倒数,再接 locate 揭晓 |
镜头之间自动「飞过去」:远距离先拉远再推近,和 Mapbox flyTo 同一套公式,不用手写转场。完整参数见 references/spec.md。
1. 安装
git clone https://github.com/SpaceZephyr/map-motion ~/.claude/skills/map-motion
uv run --with playwright playwright install chromium # 首次:无头浏览器
依赖:uv、ffmpeg。
要用「找机位」子 skill,再链接一下(它复用 map-motion 的渲染引擎):
ln -s ~/.claude/skills/map-motion/photo-spot ~/.claude/skills/photo-spot
ln -s ~/.claude/skills/map-motion/map-3d ~/.claude/skills/map-3d # 3D 地形、光线推演
ln -s ~/.claude/skills/map-motion/travel-vlog ~/.claude/skills/travel-vlog # 旅行 vlog(或单独装 github.com/SpaceZephyr/travel-vlog)
2. 配高德 key(高德开放平台 → 应用管理 → 添加「Web服务」类型 key,免费)
mkdir -p ~/.config/map-motion && echo '你的key' > ~/.config/map-motion/amap_key && chmod 600 ~/.config/map-motion/amap_key
3. 用
在 Claude Code 里直接说:
帮我做一个 vlog 片头,我在大理双廊,10 月 3 号早上 7 点 42
把我这次爬梧桐山的路线做成带海拔的动画
做一个从杭州辐射到全国 12 个城市的地图动画,暗色风格
或者自己写镜头表:
{"size": "portrait", "style": "satellite",
"shots": [
{"type": "locate", "to": "双廊古镇", "zoom": 15.6, "name": "大理 · 双廊", "sub": "洱海东岸 · DAY 3", "date": "2026.10.03 07:42"}
]}
~/.claude/skills/map-motion/scripts/make.sh 片头.json 片头.mp4 --gif 片头.gif
~/.claude/skills/map-motion/scripts/make.sh 片头.json 静帧/ --stills 2,6,9 # 先抽几帧看构图
编译时会打印每个地点被高德解析成了什么,请逐行核对——同名地点会解析错(实测过「香格里拉」→ 某家酒店、「青海湖」→ 乌鲁木齐一个同名小区)。
镜头表 spec.json
│ compile.py ── 高德:地名→坐标、驾车/步行/骑行路线、行政区边界
│ ── OpenStreetMap:公园/景区轮廓 OpenTopoData:SRTM 海拔
│ ── 算每个镜头的取景、镜头之间的飞行、图层出现/消失时间
▼
timeline.json
│ render.py ── 本地服务(运行时 + 高德瓦片代理缓存)→ 无头 Chromium 逐帧画 → ffmpeg
▼
成片.mp4 / .gif
runtime 加载页面)、自动质检、进度、HUD 绘制(runtime/hud.js)、几何与镜头(geo.py:俯冲、取景、过渡)、高程(dem.py)、太阳(sun.py)各写一次,新片型只写自己的编译模块和画面差异(见 map-3d/SKILL.md「公共组件」)。Skill
产品与灵感
flyTo:镜头飞行的手感。算法
数据
satellite-world)和 3D 片的全部卫星影像,© Esri, Maxar, Earthstar Geographicssatellite-world 的 Esri 影像同理:个人非商业可用并保留署名,商用需 Esri 授权。代码 MIT。字体(思源黑体、霞鹜文楷、Anton)为 SIL OFL 1.1,见 assets/fonts/。地图数据遵循各自来源的条款(见上)。