Not in the top 1,000 by GitHub stars
SpaceZephyr/map-motion
地图动效视频 Claude Code skill:基于高德地图真实路线/边界/卫星底图,做地球俯冲、vlog 我在这里、徒步海拔、骑行旅程、航线、行政区高亮等地图动画,12 种风格
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
65ab781832ca → 65ab781832ca
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 65ab781832ca
No earlier version was observed for comparison.
map-3d/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
65ab781832ca → 65ab781832ca
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 65ab781832ca
No earlier version was observed for comparison.
photo-spot/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
65ab781832ca → 65ab781832ca
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 65ab781832ca
No earlier version was observed for comparison.
travel-vlog/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
65ab781832ca → 65ab781832ca
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 65ab781832ca
No earlier version was observed for comparison.
Heat
7.1- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- map-motion
/ - map-3d
map-3d - photo-spot
photo-spot - travel-vlog
travel-vlog
How it works
map-motion
When your agent uses it
地图动效视频:用高德地图(真实路线、行政区边界、标准/卫星瓦片底图)做旅行与解说视频里的地图动画,出竖屏/横屏 MP4 和 GIF。十四种镜头:地球俯冲定位(从地球放大到某地)、Vlog「我在这里」瞄准锁定+坐标卡、落点标注、公园/景区/校园地块轮廓描边与绕行、路线描线(驾车/步行/骑行/GPX,车随线走、里程表滚动、镜头跟车、海拔剖面)、飞线航线、行政区描边高亮、一对多辐射飞线、多站旅程(路线+邮戳+照片+返程;可换成卡通形象走路、到站拍照的 vlog 模式,配原创 BGM 和音效)、片尾照片墙、全景收束、标题卡、机位揭秘(咔嚓翻出照片,可做 Live Photo)、猜地点;另有 3D 地形模式(真实山体立体、卫星贴图、地球俯冲到鸟瞰、跟着人沿轨迹走、里程/海拔/爬升/小地图/海拔剖面、沿途弹照片);十四种样式(高德标准、高德暗色、高德灰、高德复古、高德手账、卫星、境外卫星、暗色科技、极简白、水彩手账、复古纸、赛博霓虹、国风水墨、工程蓝图)。当用户说「地图动画」「地图动效」「轨迹动画」「出行轨迹视频」「旅行路线动图」「从地球放大到」「定位到某地」「飞线」「航线动画」「行政区高亮」「门店分布动画」「Vlog 地图片头」「标出某个公园/景点」「徒步/登山/骑行轨迹」「海拔剖面」「我在这里坐标卡」「3D 地形」「立体地图」「像 Google Earth 那样的轨迹」「两步路/六只脚那种 3D 轨迹回放」,或要把行程、GPX、照片位置做成地图视频时使用。
What it loads into context
Frontmatter
524 tokensAlways available to the agent
SKILL.md
3,949 tokensWhen the skill is activated
Reference documents
11,584 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 工作流
- 镜头一览
- 样式
- 高德
- 要改画法时
- 踩过的坑(改代码前先看)
Scripts executed separately
scripts/amap.pyscripts/audio.pyscripts/compile.pyscripts/dem.pyscripts/elev.pyscripts/geo.pyscripts/make.shscripts/osm.pyscripts/qa.pyscripts/render.pyscripts/runtime/hud.jsscripts/runtime/mm.jsscripts/runtime/qa.jsscripts/runtime/t3d.jsscripts/status.pyscripts/sun.pyscripts/sunlight.pyscripts/terrain3d.py
Files
.gitignoreasset45 bytesLICENSEasset1,266 bytesREADME.mddoc16,960 bytesSKILL.mdcore12,106 bytesSKILL.mdcore12,106 bytesSKILL.mdcore12,106 bytesSKILL.mdcore12,106 bytesassets/china.jsonasset207,798 bytesassets/examples/cycling_trip.jsonasset762 bytesassets/examples/drive_follow.jsonasset304 bytesassets/examples/flight.jsonasset368 bytesassets/examples/globe_dive.jsonasset218 bytesassets/examples/hike_elevation.jsonasset759 bytesassets/examples/park_locate.jsonasset444 bytesassets/examples/park_walk.jsonasset721 bytesassets/examples/radiate.jsonasset308 bytesassets/examples/region.jsonasset304 bytesassets/examples/road_trip.jsonasset626 bytesassets/examples/showcase.jsonasset1,107 bytesassets/examples/vlog_locate.jsonasset272 bytesassets/examples/vlog_locate_night.jsonasset252 bytesassets/fonts/Anton-400.woffasset61,460 bytesassets/fonts/LICENSES.mddoc348 bytesassets/fonts/LXGWWenKai-500.woffasset2,098,296 bytesassets/fonts/NotoSansSC-700.woffasset1,425,340 bytesassets/fonts/NotoSansSC-900.woffasset1,394,104 bytesassets/fonts/OFL.txtdoc4,430 bytesassets/land.jsonasset251,919 bytesdocs/media/cycling_qinghai.webpasset4,024,020 bytesdocs/media/gallery_globe.jpgasset237,316 bytesdocs/media/gallery_radiate.jpgasset307,597 bytesdocs/media/hike_wutong.webpasset2,341,348 bytesdocs/media/m3d_drive.webpasset5,080,920 bytesdocs/media/m3d_place.webpasset3,897,654 bytesdocs/media/park_locate.webpasset3,662,104 bytesdocs/media/park_walk.webpasset1,951,570 bytesdocs/media/photo_spot_fuji.webpasset2,121,792 bytesdocs/media/photo_spot_highjunk_live.webpasset2,032,364 bytesdocs/media/photo_spot_yubeng_live.webpasset3,883,710 bytesdocs/media/radiate_dark.webpasset398,240 bytesdocs/media/road_trip_journal.webpasset1,467,912 bytesdocs/media/showcase_flight_region.webpasset2,775,816 bytesdocs/media/sun_meili.webpasset3,471,696 bytesdocs/media/vlog_locate_bund.webpasset683,228 bytesdocs/media/vlog_locate_dali.webpasset1,768,202 bytesdocs/media/vlog_westlake.webpasset1,560,502 bytesreferences/amap.mddoc3,026 bytesreferences/spec.mddoc14,464 bytesscripts/amap.pyruns8,057 bytesscripts/audio.pyruns11,170 bytesscripts/compile.pyruns32,121 bytesscripts/dem.pyruns2,126 bytesscripts/elev.pyruns3,173 bytesscripts/geo.pyruns4,309 bytesscripts/make.shruns422 bytesscripts/osm.pyruns8,250 bytesscripts/qa.pyruns4,686 bytesscripts/render.pyruns12,276 bytesscripts/runtime/hud.jsruns6,390 bytesscripts/runtime/index.htmlasset329 bytesscripts/runtime/mm.jsruns68,396 bytesscripts/runtime/qa.jsruns3,241 bytesscripts/runtime/t3d.jsruns24,879 bytesscripts/runtime/terrain.htmlasset433 bytesscripts/status.pyruns943 bytesscripts/sun.pyruns4,820 bytesscripts/sunlight.pyruns7,964 bytesscripts/terrain3d.pyruns13,317 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubmap-3d
When your agent uses it
3D 地形地图视频:真实立体山体(卫星贴图 + 高程)上做轨迹/路线/地点动画,竖屏 MP4。卫星地球俯冲 → 整条路线 3D 鸟瞰 → 镜头贴着人/车沿路线走(走过的线变黄、里程、海拔、累计爬升、小地图、底部海拔剖面、沿途弹照片)→ 拉回全景出总数据;或单个地点俯冲后绕着转一圈(地名、经纬度、海拔);或光线推演:某天日出/日落时太阳照到哪座山、几点日照金山、机位几点见光(按真实太阳位置 + 山体遮挡算)。支持徒步/登山(GPX 或 OSM 小路连线)、自驾、骑行、步行(高德路线规划)、景点/雪山环绕。用 map-motion 的引擎(MapLibre 渲染)。当用户说「3D 地图」「立体地图」「3D 地形」「像 Google Earth 那样」「两步路/六只脚那种 3D 轨迹回放」「3D 徒步轨迹」「自驾路线 3D」「山体立体」「环绕雪山」「3D 版本」「日照金山几点」「日出/日落机位」「光线推演」「几点见光」,或拿来 GPX/路线要做有山体起伏的地图视频时使用。平面风格(手账、霓虹、高德标准等)、多镜头组合、飞线、行政区仍用 map-motion 主 skill。
What it loads into context
Frontmatter
389 tokensAlways available to the agent
SKILL.md
3,391 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 准备
- 流程
- 踩过的坑
- 公共组件(加新片型时复用,别重写)
Scripts executed separately
scripts/m3d.pyscripts/m3d.sh../scripts/dem.py../scripts/geo.py../scripts/runtime/hud.js../scripts/runtime/t3d.js../scripts/terrain3d.py
Files
SKILL.mdcore10,000 bytesSKILL.mdcore10,000 bytesSKILL.mdcore10,000 bytesexamples/drive_amap_shangrila.jsonasset392 bytesexamples/hike_osm_yubeng.jsonasset635 bytesexamples/place_orbit_meili.jsonasset208 bytesexamples/sun_meili_sunrise.jsonasset292 bytesexamples/walk_amap_taishan.jsonasset394 bytesscripts/m3d.pyruns4,710 bytesscripts/m3d.shruns118 bytes../scripts/dem.pyruns2,126 bytes../scripts/geo.pyruns4,309 bytes../scripts/runtime/hud.jsruns6,390 bytes../scripts/runtime/t3d.jsruns24,879 bytes../scripts/terrain3d.pyruns13,317 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubphoto-spot
When your agent uses it
找机位 / 机位揭秘视频:给一张照片,做一段竖屏短片——卫星地球俯冲 → 落出拍照机位(相机图标)和被摄地点 → 取景扇形从机位扫向被摄地 → 取景框对焦 → 咔嚓快门声 → 照片从机位处翻折立起(3D 透视),背景是这张照片的虚化;可加 iPhone Live Photo 播放效果(真 MOV 或静态模拟)。用 map-motion 的渲染引擎。当用户说「找机位」「机位揭秘」「这张照片在哪拍的」「把照片做成地图视频」「照片定位动画」「拍照地点动画」「咔嚓翻出照片」「Live Photo 效果」,或丢来一张风景/旅行照片要做成短视频时使用。
What it loads into context
Frontmatter
213 tokensAlways available to the agent
SKILL.md
2,698 tokensWhen the skill is activated
Reference documents
218 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 准备
- 流程
- 踩过的坑
Scripts executed separately
scripts/spot.pyscripts/spot.sh../scripts/make.sh
Files
SKILL.mdcore7,963 bytesSKILL.mdcore7,963 bytesSKILL.mdcore7,963 bytesSKILL.mdcore7,963 bytesexamples/README.mddoc658 bytesexamples/fuji_shinkansen.jsonasset551 bytesexamples/high_junk_peak_live.jsonasset645 bytesexamples/yubeng_waterfall_live.jsonasset648 bytesscripts/spot.pyruns5,439 bytesscripts/spot.shruns199 bytes../scripts/make.shruns422 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubtravel-vlog
When your agent uses it
旅行 vlog 地图视频:用户给一组旅行照片(和一张自己的照片),自动按照片 GPS 和拍摄时间找出机位、排好顺序、沿真实步行/驾车路线连起来;用照片生成用户的 Q 版卡通形象,卡通小人沿路线一颠一颠地走,右上角里程累加,走到每个机位停下「咔嚓」拍照、照片啵地弹出(写着第几站、已走多少公里),再走向下一站,最后照片墙 + 总里程收尾;配原创欢快 BGM 和脚步、快门、啵、叮音效,弹照片踩在拍点上。手账风竖屏 MP4。用 map-motion 引擎。当用户说「旅行 vlog」「把旅行照片做成视频」「小人在地图上走」「卡通形象走路线」「打卡路线视频」「citywalk 视频」「一日游路线动画」,或丢来一组带位置的旅行照片要做成视频时使用。单张照片找机位用 photo-spot;3D 山体用 map-3d。
What it loads into context
Frontmatter
269 tokensAlways available to the agent
SKILL.md
2,194 tokensWhen the skill is activated
Reference documents
88 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 准备
- 流程
- spec 里能改的
- 踩过的坑
Scripts executed separately
scripts/vlog.pyscripts/vlog.sh
Files
SKILL.mdcore6,826 bytesSKILL.mdcore6,826 bytesSKILL.mdcore6,826 bytesSKILL.mdcore6,826 bytesSKILL.mdcore6,826 bytesSKILL.mdcore6,826 bytesexamples/README.mddoc269 bytesexamples/westlake_walk.jsonasset1,851 bytesscripts/vlog.pyruns18,184 bytesscripts/vlog.shruns159 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubSkills included
- map-motion
- map-3d
- photo-spot
- travel-vlog
Repository facts
- License
- No license detected
- Created
- Oct 7, 2026
- Last pushed
- Oct 9, 2026
- Forks
- 10
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 7, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 15 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedassets/china.json:1Analysis incomplete: physical or joined line exceeds character limitassets/land.json:1Analysis incomplete: physical or joined line exceeds character limitmap-3d/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedmap-3d/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedphoto-spot/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedphoto-spot/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedphoto-spot/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedtravel-vlog/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedtravel-vlog/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedtravel-vlog/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedtravel-vlog/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedtravel-vlog/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 83 network referencesin 9 files: README.md:79 scripts/render.py:16 travel-vlog/scripts/vlog.py:28 and 6 more
- 3 obfuscation signalsin 2 files: scripts/render.py:134 travel-vlog/scripts/vlog.py:56
- No instruction overrides
- 30 executable scriptsin 24 files: scripts/dem.py:1 scripts/geo.py:1 scripts/make.sh:1 and 21 more
- 9 references to secretsin 5 files: travel-vlog/scripts/vlog.py:29 scripts/amap.py:19 SKILL.md:79 and 2 more
- No requests to vote in Hot
Show all 125 signals by file
README.md
- Network accessline 79
也有独立仓库 [SpaceZephyr/travel-vlog](https://github.com/SpaceZephyr/travel-vlog)(自带引擎,单独安装即可用)。 - Network accessline 131
git clone https://github.com/SpaceZephyr/map-motion ~/.claude/skills/map-motion - Network accessline 134
依赖:[uv](https://docs.astral.sh/uv/)、ffmpeg。 - Network accessline 197
**Skill** - [huashu-art-motion](https://github.com/alchaincyf/huashu-art-motion)(花叔):借鉴了它的工作方法——风格先在同一帧上出多个方向让人挑、所有渲染确定性可复现、交付前抽静帧逐帧检查、派独立 agent 只看成片审片、把踩过的坑写回 skill(本 skill 的 SKILL.md 末尾也保留了「踩过的坑」)。 - Network accessline 198
- [huashu-art-motion](https://github.com/alchaincyf/huashu-art-motion)(花叔):借鉴了它的工作方法——风格先在同一帧上出多个方向让人挑、所有渲染确定性可复现、交付前抽静帧逐帧检查、派独立 agent 只看成片审片、把踩过的坑写回 skill(本 skill 的 SKILL.md 末尾也保留了「踩过的坑」)。 - Network accessline 199
- [Anthropic skill-creator](https://github.com/anthropics/skills):skill 的组织方式——SKILL.md 只放流程和选择指南,参数细节放 references/,可执行部分放 scripts/,按需加载。 - Network accessline 201
**产品与灵感** - [Mult.dev](https://mult.dev)、[TravelAnimator](https://travelanimator.com):旅行地图视频的常见镜头(航线、自驾、照片插入)。 - Network accessline 202
- [Mult.dev](https://mult.dev)、[TravelAnimator](https://travelanimator.com):旅行地图视频的常见镜头(航线、自驾、照片插入)。 - Network accessline 212
**数据** - [高德开放平台](https://lbs.amap.com) Web 服务 API(地理编码、路径规划、行政区)与地图瓦片 - Network accessline 213
- [高德开放平台](https://lbs.amap.com) Web 服务 API(地理编码、路径规划、行政区)与地图瓦片 - Network accessline 214
- [阿里云 DataV GeoAtlas](https://datav.aliyun.com/portal/school/atlas/area_selector):中国省级边界(含南海诸岛与九段线) - Network accessline 215
- [Natural Earth](https://www.naturalearthdata.com) / [world-atlas](https://github.com/topojson/world-atlas):世界陆地轮廓 - Network accessline 216
- [OpenStreetMap](https://www.openstreetmap.org)(Overpass API):公园、景区等地块轮廓 © OpenStreetMap contributors,ODbL - Network accessline 217
- [OpenTopoData](https://www.opentopodata.org):SRTM 30m 海拔 - Network accessline 218
- [AWS Terrain Tiles](https://registry.opendata.aws/terrain-tiles/)(Mapzen Terrarium 编码):3D 地形与 3D 片的海拔/爬升,© Mapzen 及各数据源(SRTM、GMTED、ETOPO1 等) - Network accessline 219
- [MapLibre GL JS](https://maplibre.org) 5.24(BSD-3):3D 片的渲染,运行时从 unpkg 下载并缓存 - Network accessline 220
- [Esri World Imagery](https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9):境外卫星影像(`satellite-world`)和 3D 片的全部卫星影像,© Esri, Maxar, Earthstar Geographics - Network accessline 221
- 太阳位置:NOAA Solar Calculator 算法(scripts/sun.py,自写实现) - 卡通形象:[LabNana](https://labnana.com) 图像接口(gpt-image-2 / Gemini)按用户照片生成,需用户自己的 key;内置小人由代码绘制 - 配乐与音效:scripts/audio.py 程序合成(Karplus-Strong 拨弦、正弦钟琴等),原创,无第三方版权 - Network accessline 222
- 卡通形象:[LabNana](https://labnana.com) 图像接口(gpt-image-2 / Gemini)按用户照片生成,需用户自己的 key;内置小人由代码绘制
SKILL.md
- Access to secretsline 79
[Credential-related source omitted]
assets/fonts/OFL.txt
map-3d/scripts/m3d.py
- Executable scriptline 1
Executable file
map-3d/scripts/m3d.sh
- Executable scriptline 1
#!/bin/zsh
photo-spot/scripts/spot.py
- Executable scriptline 1
Executable file
photo-spot/scripts/spot.sh
- Executable scriptline 1
#!/bin/zsh
references/amap.md
- Access to secretsline 5
[Credential-related source omitted]
scripts/amap.py
- Executable scriptline 1
Executable file - Access to secretsline 19
[Credential-related source omitted] - Access to secretsline 20
[Credential-related source omitted] - Network accessline 34
f = CACHE / f"{h}.json" if f.exists(): return json.loads(f.read_text()) url = f"https://restapi.amap.com{path}?" + urllib.parse.urlencode({**q, "key": key()}) - Network accessline 35
if f.exists(): return json.loads(f.read_text()) url = f"https://restapi.amap.com{path}?" + urllib.parse.urlencode({**q, "key": key()}) for attempt in range(6): # 免费 key 约 3 次/秒:间隔+被限流退避 - Network accessline 36
url = f"https://restapi.amap.com{path}?" + urllib.parse.urlencode({**q, "key": key()}) - Network accessline 37
for attempt in range(6): # 免费 key 约 3 次/秒:间隔+被限流退避 time.sleep(0.35 * (attempt + 1)) d = json.load(urllib.request.urlopen(url, timeout=30, context=_ctx())) - Network accessline 38
time.sleep(0.35 * (attempt + 1)) d = json.load(urllib.request.urlopen(url, timeout=30, context=_ctx())) ok = d.get("status") == "1" or d.get("errcode") == 0 - Network accessline 39
d = json.load(urllib.request.urlopen(url, timeout=30, context=_ctx()))
scripts/audio.py
- Executable scriptline 1
Executable file
scripts/compile.py
- Executable scriptline 1
Executable file
scripts/dem.py
- Executable scriptline 1
Executable file - Executable scriptline 1
Executable file - Network accessline 12
URL = "https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png" - Network accessline 12
URL = "https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png" - Network accessline 23
for i in range(3): try: data = urllib.request.urlopen(URL.format(z=z, x=x, y=y), timeout=30, context=amap._ctx()).read(); break - Network accessline 23
for i in range(3): try: data = urllib.request.urlopen(URL.format(z=z, x=x, y=y), timeout=30, context=amap._ctx()).read(); break - Network accessline 24
try: data = urllib.request.urlopen(URL.format(z=z, x=x, y=y), timeout=30, context=amap._ctx()).read(); break except Exception as e: - Network accessline 24
try: data = urllib.request.urlopen(URL.format(z=z, x=x, y=y), timeout=30, context=amap._ctx()).read(); break except Exception as e: - Network accessline 25
data = urllib.request.urlopen(URL.format(z=z, x=x, y=y), timeout=30, context=amap._ctx()).read(); break - Network accessline 25
data = urllib.request.urlopen(URL.format(z=z, x=x, y=y), timeout=30, context=amap._ctx()).read(); break
scripts/elev.py
- Executable scriptline 1
Executable file - Network accessline 11
CACHE = Path.home() / ".cache/map-motion/elev" API = "https://api.opentopodata.org/v1/srtm30m?locations=" - Network accessline 12
API = "https://api.opentopodata.org/v1/srtm30m?locations=" - Network accessline 30
try: time.sleep(1.1) d = json.load(urllib.request.urlopen(API + q, timeout=40, context=amap._ctx())) - Network accessline 31
time.sleep(1.1) d = json.load(urllib.request.urlopen(API + q, timeout=40, context=amap._ctx())) if d.get("status") == "OK": break - Network accessline 32
d = json.load(urllib.request.urlopen(API + q, timeout=40, context=amap._ctx()))
scripts/osm.py
- Executable scriptline 1
Executable file - Network accessline 15
CACHE = Path.home() / ".cache/map-motion/osm" MIRRORS = ["https://overpass-api.de/api/interpreter", "https://maps.mail.ru/osm/tools/overpass/api/interpreter", "https://overpass.kumi.systems/api/interpreter"] - Network accessline 16
MIRRORS = ["https://overpass-api.de/api/interpreter", "https://maps.mail.ru/osm/tools/overpass/api/interpreter", "https://overpass.kumi.systems/api/interpreter"] - Network accessline 24
for u in MIRRORS: # 主站常 504,轮流试镜像 try: req = urllib.request.Request(u, data=urllib.parse.urlencode({"data": q}).encode(), headers={"User-Agent": "map-motion/1.0 (video tool)"}) - Network accessline 25
try: req = urllib.request.Request(u, data=urllib.parse.urlencode({"data": q}).encode(), headers={"User-Agent": "map-motion/1.0 (video tool)"}) d = json.load(urllib.request.urlopen(req, timeout=90, context=amap._ctx() - Network accessline 26
req = urllib.request.Request(u, data=urllib.parse.urlencode({"data": q}).encode(), headers={"User-Agent": "map-motion/1.0 (video tool)"}) - Network accessline 27
d = json.load(urllib.request.urlopen(req, timeout=90, context=amap._ctx()))
scripts/qa.py
- Executable scriptline 1
Executable file
scripts/render.py
- Executable scriptline 1
Executable file - Network accessline 16
TCACHE = Path.home() / ".cache/map-motion/tiles" SRC = { # 高德瓦片(GCJ-02 墨卡托):amap=标准路网 512px,sat=卫星 256px,lbl=卫星上的路名地名叠加 512px "amap": "https://wprd0{s}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=2&style=7", - Network accessline 17
SRC = { # 高德瓦片(GCJ-02 墨卡托):amap=标准路网 512px,sat=卫星 256px,lbl=卫星上的路名地名叠加 512px "amap": "https://wprd0{s}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=2&style=7", "sat": "https://webst0{s}.is.autonavi.com/appmap - Network accessline 18
"amap": "https://wprd0{s}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=2&style=7", - Network accessline 19
"sat": "https://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}", - Network accessline 20
"lbl": "https://wprd0{s}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=2&style=8<ype=4", - Network accessline 21
"esri": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}", # 境外卫星(WGS-84 墨卡托,全球高清);高德卫星境外只有城市级 - Network accessline 22
"dem": "https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png", # 3D 地形:AWS Terrain Tiles(Terrarium 编码高程) - Network accessline 23
} VENDOR = {"maplibre-gl.js": "https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.js"} # 3D 运行时用,首次下载后缓存 VCACHE = Path.home() / ".cache/map-motion/vendor" - Network accessline 24
VENDOR = {"maplibre-gl.js": "https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.js"} # 3D 运行时用,首次下载后缓存 - Network accessline 73
for k in range(3): try: data = urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0", "Referer": "https://www.amap.com/"}), timeout=20, context=CTX).read() - Network accessline 74
try: data = urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0", "Referer": "https://www.amap.com/"}), timeout=20, context=CTX).read() f.parent.mkdir(parents=True, exist_ok=True); - Network accessline 75
data = urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0", "Referer": "https://www.amap.com/"}), timeout=20, context=CTX).read() - Network accessline 93
f = VCACHE / VENDOR[p[8:]].split("/")[3] / p[8:] if not f.exists(): f.parent.mkdir(parents=True, exist_ok=True); f.write_bytes(urllib.request.urlopen(VENDOR[p[8:]], timeout=60, context=CTX).read()) - Network accessline 94
if not f.exists(): f.parent.mkdir(parents=True, exist_ok=True); f.write_bytes(urllib.request.urlopen(VENDOR[p[8:]], timeout=60, context=CTX).read()) return self._send(f.read_bytes(), "text/javascript") - Network accessline 95
f.parent.mkdir(parents=True, exist_ok=True); f.write_bytes(urllib.request.urlopen(VENDOR[p[8:]], timeout=60, context=CTX).read()) - Network accessline 121
pg.on("pageerror", lambda e: (A.verbose and print("[pageerror]", e), errors.append(str(e)))) pg.add_init_script("window.MM_TIMELINE = " + json.dumps(TL, ensure_ascii=False) + ";") pg.goto(f"http://127.0.0.1:{port}/{RT}.html") - Network accessline 122
pg.add_init_script("window.MM_TIMELINE = " + json.dumps(TL, ensure_ascii=False) + ";") pg.goto(f"http://127.0.0.1:{port}/{RT}.html") pg.wait_for_function("window.__ready === true || !!window.__bootFailed", timeout=120000) - Network accessline 123
pg.goto(f"http://127.0.0.1:{port}/{RT}.html") - Possible obfuscationline 134
(out / f"t{float(s):06.2f}.png").write_bytes(base64.b64decode(png)) - Possible obfuscationline 152
ff.stdin.write(base64.b64decode(png))
scripts/runtime/mm.js
- Executable scriptline 1
Executable file - Network accessline 66
const fonts = [['MM-Bold', 'NotoSansSC-700'], ['MM-Black', 'NotoSansSC-900'], ['MM-Hand', 'LXGWWenKai-500'], ['MM-Num', 'Anton-400']]; for (const [fam, f] of fonts) { const ff = new FontFace(fam, `url(/asset/fonts/${f}.woff)`); await ff.l - Network accessline 67
for (const [fam, f] of fonts) { const ff = new FontFace(fam, `url(/asset/fonts/${f}.woff)`); await ff.load(); document.fonts.add(ff); } ASSET.land = await (await fetch('/asset/land.json')).json(); ASSET.china = await (await fetch('/asse - Network accessline 68
ASSET.land = await (await fetch('/asset/land.json')).json(); - Network accessline 69
ASSET.china = await (await fetch('/asset/china.json')).json(); - Network accessline 506
const tx = x0 + 40 * U; c.textAlign = 'left'; c.fillStyle = S.chipText; c.font = `${24 * U}px "MM-Num"`; c.letterSpacing = `${5 * U}px`; c.globalAlpha *= 0.65; c.fillText(L.kicker || 'YOU ARE HERE', tx, y0 + 52 * U); c.letterSpacing = '0p - Network accessline 507
c.font = `${24 * U}px "MM-Num"`; c.letterSpacing = `${5 * U}px`; c.globalAlpha *= 0.65; c.fillText(L.kicker || 'YOU ARE HERE', tx, y0 + 52 * U); c.letterSpacing = '0px'; c.globalAlpha = e * (1 - out); const name = L.name || ''; const nc = - Network accessline 508
const name = L.name || ''; const nc = Math.ceil(clamp((lt - 0.15) / 0.6) * [...name].length);
scripts/runtime/qa.js
- Executable scriptline 1
Executable file
scripts/status.py
- Executable scriptline 1
Executable file
scripts/sun.py
- Executable scriptline 1
Executable file
scripts/sunlight.py
- Executable scriptline 1
Executable file
travel-vlog/SKILL.md
- Access to secretsline 22
[Credential-related source omitted]
travel-vlog/scripts/vlog.py
- Executable scriptline 1
Executable file - Network accessline 28
def labnana_key(): k = os.environ.get("LABNANA_API_KEY") if k: return k, os.environ.get("LABNANA_API_URL", "https://api.labnana.com") - Network accessline 29
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Network accessline 30
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Network accessline 32
if f.exists(): kv = dict(l.strip().split("=", 1) for l in f.read_text().splitlines() if "=" in l and not l.startswith("#")) if kv.get("LABNANA_API_KEY"): return kv["LABNANA_API_KEY"], kv.get("LABNANA_API_URL", "https - Network accessline 33
kv = dict(l.strip().split("=", 1) for l in f.read_text().splitlines() if "=" in l and not l.startswith("#")) if kv.get("LABNANA_API_KEY"): return kv["LABNANA_API_KEY"], kv.get("LABNANA_API_URL", "https://api.labnana.com") ra - Network accessline 34
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Network accessline 41
body = {"provider": prov, "model": model, "prompt": prompt, "imageConfig": {"aspectRatio": "1:1", "imageSize": "1K"}, "referenceImages": [{"inlineData": {"data": base64.b64encode(r).decode(), "mimeType": "image/jpeg"}} for r in - Network accessline 42
"referenceImages": [{"inlineData": {"data": base64.b64encode(r).decode(), "mimeType": "image/jpeg"}} for r in refs]} req = urllib.request.Request(f"{url}/openapi/v1/images/generation", data=json.dumps(body).encode(), method="POST", - Network accessline 43
req = urllib.request.Request(f"{url}/openapi/v1/images/generation", data=json.dumps(body).encode(), method="POST", - Network accessline 49
ctx = ssl.create_default_context() try: res = json.loads(urllib.request.urlopen(req, timeout=300, context=ctx).read()) - Network accessline 50
try: res = json.loads(urllib.request.urlopen(req, timeout=300, context=ctx).read()) except urllib.error.HTTPError as e: - Network accessline 51
res = json.loads(urllib.request.urlopen(req, timeout=300, context=ctx).read()) - Possible obfuscationline 56
Path(out).write_bytes(base64.b64decode(part["inlineData"]["data"])); return out
travel-vlog/scripts/vlog.sh
- Executable scriptline 1
#!/bin/zsh
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Declared and executed: 9 facts
- Contacts s3.amazonaws.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/dem.py:12High confidence
- Contacts overpass-api.de, which SKILL.md, the README and the plugin manifest do not mentionscripts/osm.py:16High confidence
- Contacts maps.mail.ru, which SKILL.md, the README and the plugin manifest do not mentionscripts/osm.py:16High confidence
- Contacts overpass.kumi.systems, which SKILL.md, the README and the plugin manifest do not mentionscripts/osm.py:16High confidence
- Contacts wprd0, which SKILL.md, the README and the plugin manifest do not mentionscripts/render.py:18High confidence
- Contacts webst0, which SKILL.md, the README and the plugin manifest do not mentionscripts/render.py:19High confidence
- Contacts server.arcgisonline.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/render.py:21High confidence
- Contacts s3.amazonaws.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/render.py:22High confidence
- Contacts unpkg.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/render.py:24High confidence
Signal confidence: 125 facts
- Network access in prose of documentationREADME.md:79Low confidence
- Network access in code of documentationREADME.md:131Low confidence
- Network access in prose of documentationREADME.md:134Low confidence
- Network access in prose of documentationREADME.md:197Low confidence
- Network access in prose of documentationREADME.md:198Low confidence
- Network access in prose of documentationREADME.md:199Low confidence
- Network access in prose of documentationREADME.md:201Low confidence
- Network access in prose of documentationREADME.md:202Low confidence
- Network access in prose of documentationREADME.md:212Low confidence
- Network access in prose of documentationREADME.md:213Low confidence
- Network access in prose of documentationREADME.md:214Low confidence
- Network access in prose of documentationREADME.md:215Low confidence
- Network access in prose of documentationREADME.md:216Low confidence
- Network access in prose of documentationREADME.md:217Low confidence
- Network access in prose of documentationREADME.md:218Low confidence
- Network access in prose of documentationREADME.md:219Low confidence
- Network access in prose of documentationREADME.md:220Low confidence
- Network access in prose of documentationREADME.md:221Low confidence
- Network access in prose of documentationREADME.md:222Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:79Low confidence
- Network access in prose of documentationassets/fonts/OFL.txt:4Low confidence
- Network access in prose of documentationassets/fonts/OFL.txt:6Low confidence
- Executable script in prose of a file that runsmap-3d/scripts/m3d.py:1Low confidence
- Executable script in code of a file that runsmap-3d/scripts/m3d.sh:1High confidence
- Executable script in prose of a file that runsphoto-spot/scripts/spot.py:1Low confidence
- Executable script in code of a file that runsphoto-spot/scripts/spot.sh:1High confidence
- Access to secrets in prose of documentationreferences/amap.md:5Low confidence
- Executable script in prose of a file that runsscripts/amap.py:1Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/amap.py:19Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/amap.py:20Low confidence
- Network access in code of a file that runsscripts/amap.py:34High confidence
- Network access in code of a file that runsscripts/amap.py:35High confidence
- Network access in code of a file that runsscripts/amap.py:36High confidence
- Network access in code of a file that runsscripts/amap.py:37High confidence
- Network access in code of a file that runsscripts/amap.py:38High confidence
- Network access in code of a file that runsscripts/amap.py:39High confidence
- Executable script in prose of a file that runsscripts/audio.py:1Low confidence
- Executable script in prose of a file that runsscripts/compile.py:1Low confidence
- Executable script in prose of a file that runsscripts/dem.py:1Low confidence
- Executable script in prose of a file that runsscripts/dem.py:1Low confidence
- Network access in code of a file that runsscripts/dem.py:12High confidence
- Network access in code of a file that runsscripts/dem.py:12High confidence
- Network access in code of a file that runsscripts/dem.py:23High confidence
- Network access in code of a file that runsscripts/dem.py:23High confidence
- Network access in code of a file that runsscripts/dem.py:24High confidence
- Network access in code of a file that runsscripts/dem.py:24High confidence
- Network access in code of a file that runsscripts/dem.py:25High confidence
- Network access in code of a file that runsscripts/dem.py:25High confidence
- Executable script in prose of a file that runsscripts/elev.py:1Low confidence
- Network access in code of a file that runsscripts/elev.py:11High confidence
and 75 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.