← Recherche

Map Motion
Video 📌 Version épinglée : commit 65ab781
🔎 Analyse du prompt d’installation · 2026-10-19 : fait des appels réseau · écrit des fichiers · utilise des clés API ou des jetons
⚙ Prérequis: Avant de commencer…

Map Motion

Transformer une liste de plans JSON en vidéo d'animation cartographique (MP4 vertical/horizontal + GIF) : AMap (Gaode) résout les noms de lieux et fournit les vraies routes voiture/marche/vélo et les

L’essentiel
Quoi
Transformer une liste de plans JSON en vidéo d'animation cartographique (MP4 vertical/horizontal + GIF) : AMap (Gaode) résout les noms de lieux et fournit les vraies routes voiture/marche/vélo et les
Coût
Gratuit
Prérequis
Avant de commencer : lis ce prompt d'installation au complet, dis-moi en quelques lignes ce que ce skill fait et ce que son installation implique, et attends mon feu vert avant de faire quoi que ce soit d'autre.
Installation
Copiez le prompt d’installation ci-dessous dans votre Muse — votre agent fait le reste.

Version :

⌁

Installation

Copiez le dossier d’installation ci-dessous, puis collez-le dans Muse📌 Version épinglée : commit 65ab781
Envie d'être encore plus prudent ?

Le prompt d'installation ci-dessous inclut déjà les étapes de vérification : votre agent suit la checklist communautaire avant d'installer tout ce qui contient du code exécutable. Vous en voulez plus ?

Comment vérifier une création avant de l’installer →

🧭 Ce que ça touche
  • Peut contacter des services externes par le réseau.
  • Peut créer ou modifier des fichiers.
  • Fonctionne avec une clé API ou un jeton que tu fournis.
Analyse du prompt d’installation · 2026-10-19
🔒 Sécurité et provenance
📌 Version épinglée : commit 65ab781 · 2026-10-19
🔎 Analyse du prompt d’installation · 2026-10-19 : fait des appels réseau · écrit des fichiers · utilise des clés API ou des jetons
Ce que le scan a trouvé — extraits du prompt d’installation
  • fait des appels réseau — - What leaves this machine at use time, disclosed here before it ever happens — using the skill is a separate · - Ce qui quitte cette machine à l'usage, divulgué ici avant que ça arrive — utiliser le skill est une étape sé
  • écrit des fichiers — Prerequisites: none for the install itself: no account, no API key, no paid service, and nothing else to insta · Prérequis : aucun pour l'installation elle-même : aucun compte, aucune clé API, aucun service payant, et rien
  • utilise des clés API ou des jetons — Prerequisites: none for the install itself: no account, no API key, no paid service, and nothing else to insta · Prérequis : aucun pour l'installation elle-même : aucun compte, aucune clé API, aucun service payant, et rien
Skill Harbor ne révise jamais le code des skills listés. Ce sont des faits datés sur le prompt d’installation et notre test d’installation, pas une certification de sécurité. Révisez un skill vous-même avant de l’installer. Comment nous vérifions

Avant de commencer : lis ce prompt d'installation au complet, dis-moi en quelques lignes ce que ce skill fait et ce que son installation implique, et attends mon feu vert avant de faire quoi que ce soit d'autre. Prérequis : aucun pour l'installation elle-même : aucun compte, aucune clé API, aucun service payant, et rien d'autre à installer d'abord. Pour utiliser le skill ensuite, lis ceci d'abord — l'usage exige des choses que cette installation ne met PAS en place : (1) ma propre clé API gratuite des services Web de AMap (Gaode), sans laquelle la compilation échoue carrément (voir les envois au point 2 : la clé n'est envoyée qu'à restapi.amap.com, comme clé propre à ce service) ; je la fournirai plus tard moi-même, comme variable d'environnement AMAP_KEY ou dans ~/.config/map-motion/amap_key — jamais dans un spec ni un dossier de projet ; l'inscription AMap est gratuite avec un quota quotidien, ce n'est pas un plan payant. (2) uv et ffmpeg sur ma machine. (3) À la première utilisation seulement, des téléchargements qui arrivent à ce moment-là, pas maintenant : uv va chercher les paquets Python nommés dans scripts/make.sh (certifi et Pillow pour la compilation, Playwright et certifi pour le rendu), et Playwright télécharge son navigateur Chromium (uv run --with playwright playwright install chromium) — SKILL.md présente cette étape comme une étape de première utilisation. Le skill transforme un spec JSON « liste de plans » — noms de lieux, routes, dates et chemins de photos locales que j'écris ou confirme — en vidéos d'animation cartographique MP4/GIF ; ce qui quitte cette machine à l'usage (noms de lieux et coordonnées vers AMap, OpenStreetMap/Overpass, OpenTopoData et les serveurs de tuiles) est divulgué au complet au point 2, avant que ça arrive. Installe-moi « map-motion ». Il fabrique des vidéos d'animation cartographique pour les vidéos de voyage et d'explication à partir d'une liste de plans JSON : compilation (AMap résout les noms de lieux, va chercher les vraies routes en voiture/à pied/à vélo et les limites administratives, OpenStreetMap fournit les contours de parcs/sites, OpenTopoData/AWS donnent l'altitude) puis rendu image par image (canvas Chromium sans tête + ffmpeg) en MP4 et GIF verticaux/horizontaux. Quatorze types de plans : plongée du globe vers un lieu, localisation Vlog « je suis ici » avec carte de coordonnées, épingles, tracé de route (voiture/marche/vélo/GPX, le véhicule suit la ligne, compteur kilométrique, profil d'altitude), arcs de vol, surbrillance de districts, vols en radiation un-vers-plusieurs, voyages multi-arrêts (routes + tampons + photos + retour ; un champ avatar fait passer un voyage en mode vlog à personnage de dessin animé, avec des images d'avatar que je fournis), mur de photos final, vue d'ensemble, cartes de titre, révélation de point de prise de vue « snap », devine-le-lieu, plus un mode terrain 3D (mode « 3d » : vrai terrain, texture satellite, lecture en suivant la trace) et un mode soleil — tous implantés dans les propres scripts de ce skill racine (scripts/terrain3d.py, scripts/sunlight.py), pas dans les dossiers frères. Quatorze styles (tuiles AMap standard/sombre/gris/sépia/journal, satellite AMap, satellite mondial Esri, et vectoriels sombre/clair/journal/vintage/néon/encre/plan technique). Dépôt : https://github.com/SpaceZephyr/map-motion (le skill est la RACINE du dépôt au commit épinglé : SKILL.md plus scripts/, references/, assets/ et les fichiers racine — 47 fichiers listés au point 1. Les skills frères map-3d/, photo-spot/ et travel-vlog/ et le dossier d'illustrations docs/ ne font PAS partie de cette installation — voir le point 2.) Version épinglée : installe le code au commit 65ab781832cace6e0f28d4c00452410a99f3a02c exactement. Ne substitue pas une version plus récente. Si ce commit est inaccessible, arrête-toi et dis-le-moi. 1. Clone https://github.com/SpaceZephyr/map-motion dans un dossier temporaire, place-toi au commit 65ab781832cace6e0f28d4c00452410a99f3a02c, et copie UNIQUEMENT le périmètre de 47 fichiers listé ci-dessous depuis ce checkout (tout sauf map-3d/, photo-spot/, travel-vlog/ et docs/). Compare ensuite chaque fichier copié aux empreintes enregistrées pour cette fiche le 2026-10-19 : [FINGERPRINTS] - .gitignore: SHA-256 7b5e3485bca1a2f1aee193d16f8b2fb5860755c9239e3485edc05861b2563947 - LICENSE: SHA-256 503807b77b7096091e3be3fdec62cfdc41f7de2a1b805a05e586edae7a7a657c - README.md: SHA-256 d7fc885cb030037b7a3e8aa8e901cd8468c619f69564c589a8e1b00adf417634 - SKILL.md: SHA-256 d3848172be1eca9b4cd8ba3e51a76bb5ff5a8e39b8d421a357e0b5e12f159790 - assets/china.json: SHA-256 df6c10e3d0be10052355a958812a5decd60a544b858b2934b170ca0fdebf2985 - assets/examples/cycling_trip.json: SHA-256 0a8a9d9d623a5fcdb29ac935e61763a274bb2624bf7aca9c481066411f51389a - assets/examples/drive_follow.json: SHA-256 d8841616d9a21550fccd22ad41a1039d4676989bccd1d38b1a042a7019637701 - assets/examples/flight.json: SHA-256 512638e5b0c301fcb1f507361f520bdcc569361e638408d22de3869e5fb7d518 - assets/examples/globe_dive.json: SHA-256 8e11c218b033790744c8cd4f09f8afa6e1963101ac6ebb7411d3e35971f5af9e - assets/examples/hike_elevation.json: SHA-256 b3b5e74502e5b303765882b121e9805bea5091db67d8af60664c9b7dd825352e - assets/examples/park_locate.json: SHA-256 497066f5bc7bde2541fd1002604372e8cae511ec0e269121e4c9ea6e90524233 - assets/examples/park_walk.json: SHA-256 4d16c5e317b6a42b7dbf5ffe4f58edc33f22173563cf47795403893ef52cf3f8 - assets/examples/radiate.json: SHA-256 1fa2b5bc128f598ebfadf4a2216dab8be35a37902a12c41990144a3deab81eb1 - assets/examples/region.json: SHA-256 53246ac098f88d1ee1da70cb037f801a2b55033160cb3ea548ae15836deb98b5 - assets/examples/road_trip.json: SHA-256 669fa694b0e24f1a56fb888c4a4c84813c5087b0af3b9509f74be3b1849dd49e - assets/examples/showcase.json: SHA-256 0ffc405e08220fe0e68e5a8b4fd5e22e5fc91feb1490a78cffb8703eae9fd242 - assets/examples/vlog_locate.json: SHA-256 1b9f3689354c5471e06a5b15db2563a80bf53f21e162c0177e5a2d754e283a4c - assets/examples/vlog_locate_night.json: SHA-256 6095ce35948007efb048f851affed3f6a012577751c0dae740e7fc26a2232444 - assets/fonts/Anton-400.woff: SHA-256 791375bdbed00de4a3aad4811291220ead0e1405d6f8b5bdbf109798c8359ac5 - assets/fonts/LICENSES.md: SHA-256 d0eae41ae5d5a1f8a55ee0e153f4f197f6090df826f871c232b4dc6fbd31e5b1 - assets/fonts/LXGWWenKai-500.woff: SHA-256 734bd187392579417ac83effe31d37b9de43c7b290bcb400800456511ed79e8f - assets/fonts/NotoSansSC-700.woff: SHA-256 dd0d39a9780eb995c499af0c20cca93b1dfdda865da70871a20890b3e406b968 - assets/fonts/NotoSansSC-900.woff: SHA-256 d2d8a42438b18b65b6577434df4e41bb08c6b5051281757849af00ab743bb58f - assets/fonts/OFL.txt: SHA-256 67c5d5206b96f8340b95fabd02ae60701e0b20ce2594d976216f1065e5aa3822 - assets/land.json: SHA-256 e8546a66c5ad7545d60097580fd8abd154c6257ae4b5022ff2dfadc62fc4ce46 - references/amap.md: SHA-256 2c2e6b441b2fdd5361a10c9a58c44f5b6ecc39a880ba43a1d2a8bca841d0a85d - references/spec.md: SHA-256 14d38fb1e8185922b2f3ac5f581ac966b5255f9cc3fced69ed22fbcd91e3ab57 - scripts/amap.py: SHA-256 7db7efbaf5b63362ca8078d88da9f0606e5c38a92410c3643e0f19072486b92d - scripts/audio.py: SHA-256 4785e478cea1ff36158f3db471214706465fa7cd8946e516c5f4faad6d52770e - scripts/compile.py: SHA-256 32420d87aa526d5bf86ea526dfb61e63d4ba2b31666c5828bbb4d5bbd3a5879e - scripts/dem.py: SHA-256 c193482183aa1e0bb54e8b7661d77e6dde0a6e56339c2e3c229439013d588a9c - scripts/elev.py: SHA-256 ec41a716692742c58a80596b1df804db02d8f7017108ad2d0797b2b1b5b588a7 - scripts/geo.py: SHA-256 9a7b1f555e7a54c0b5f15504a9aa213d4dc99b3f11c410404d6ab57cf30e7b63 - scripts/make.sh: SHA-256 9fc63a0c7933448d46b28b7352d233d88d251399205d6d52015f868cb21c49af - scripts/osm.py: SHA-256 3e30d7b0d8288f5a62de626f428899cddf9c7ca5b3e94623ebf7892a307421e2 - scripts/qa.py: SHA-256 9b87b89c690d22aeecf0441685f2d7489a2379cf9a8c9514045e2438eeb19baa - scripts/render.py: SHA-256 fd5eb323b0207c9b9920aa6dc24982113a04020b582fe67266f8359a57db5ecd - scripts/runtime/hud.js: SHA-256 143017794af92ca455a6caa8ec3c1811171ee80b99c0d875442ce10a9983f4db - scripts/runtime/index.html: SHA-256 898c81ea79e2828b5fb6d37c80c0ca1fe9048640ab78523d4670a0749cedd34d - scripts/runtime/mm.js: SHA-256 f943260dea924193a67eb6df587b04053a16f844ed0d930fab35def86bbf31f3 - scripts/runtime/qa.js: SHA-256 8c761421f289a378b8341fac965a1f516567899eda9cb5786ac1fc8f792e801a - scripts/runtime/t3d.js: SHA-256 a891d9343f8471407c1b39bd6d5fe2d2a796d0a81e479aa6c61663e97fb7a306 - scripts/runtime/terrain.html: SHA-256 61cc9712c9323e2ba22ea1d5bb7d9e19bf5bfe52b518a1edb717528c80e7954c - scripts/status.py: SHA-256 eca7060ddc17aef9262d5b0c7536449de7f6856afe4184411be43351f3c5f0d5 - scripts/sun.py: SHA-256 2c6ce15ccc443a6fa0935d31ca76fdca1cea4d2d82c6119598757f91269db2bc - scripts/sunlight.py: SHA-256 577c7613504d84a14c5813a7ace7534c81dc0dee8bb0c295fcb7a7f58819dadc - scripts/terrain3d.py: SHA-256 cd2741899a619a477c917e6107a04033157a3e92bf29b1662c94ff65c6602cc2 Si un fichier ne correspond pas, il a changé depuis la préparation de la fiche : ne l'installe pas encore, dis-moi ce que tu as trouvé et laisse-moi décider. 2. Lis SKILL.md au complet, les deux fichiers de references/ (spec.md, amap.md) et chaque fichier de scripts/ (amap.py, audio.py, compile.py, dem.py, elev.py, geo.py, make.sh, osm.py, qa.py, render.py, status.py, sun.py, sunlight.py, terrain3d.py et scripts/runtime/hud.js, index.html, mm.js, qa.js, t3d.js, terrain.html), et dis-moi en mots simples : ce que le skill fait quand on l'utilise, à quels services il se connecte, s'il lit ou envoie des informations personnelles ou des clés, et tout ce qui semble inhabituel. Arrête-toi sur tout signal d'alerte et dis-le-moi avant d'aller plus loin. Confirme ces points à partir des fichiers : - Périmètre et dépendances croisées, exactement : le skill racine est autonome dans les 47 fichiers ci-dessus. Son code n'importe ni n'appelle jamais rien dans map-3d/, photo-spot/ ou travel-vlog/ : le compilateur terrain 3D est scripts/terrain3d.py, le compilateur soleil est scripts/sunlight.py, et les plans snap (révélation de point de prise de vue) et avatar/vlog de trip sont des fonctions de plans dans scripts/compile.py. La dépendance va dans l'autre sens — les trois skills frères réutilisent CE moteur (map-3d/scripts/m3d.py, photo-spot/scripts/spot.py et travel-vlog/scripts/vlog.py pointent tous vers les scripts/ de la racine) — donc ils ne seront pas installés par cette installation, et un détail documenté vit hors de ce périmètre : references/spec.md renvoie à map-3d/SKILL.md pour les champs complets du spec du mode « sun ». Les fichiers d'exécution de la racine ne chargent que des assets de la racine : scripts/runtime/mm.js et hud.js chargent assets/land.json, assets/china.json et les quatre polices de assets/fonts/ (Anton-400, LXGWWenKai-500, NotoSansSC-700, NotoSansSC-900) via le serveur de rendu local, et le flux de travail de SKILL.md copie un spec de départ depuis assets/examples/. docs/media/ (18 images, environ 37 Mo) n'illustre que le README et n'est lu par aucun code. - Rien n'est envoyé nulle part pendant l'installation elle-même ; le seul téléchargement à l'installation est le dépôt depuis GitHub au commit épinglé. Aucun script n'est exécuté pendant l'installation, aucune clé n'est demandée, aucun Chromium ni paquet n'est installé, et il n'y a aucune télémétrie dans le périmètre. - Ce qui quitte cette machine à l'usage, divulgué ici avant que ça arrive — utiliser le skill est une étape séparée qui ne commence que quand je demande une vidéo, et la compilation/le rendu roulent à ce moment-là via scripts/make.sh (uv run --with certifi --with pillow pour scripts/compile.py, uv run --with playwright --with certifi pour scripts/render.py, donc uv peut télécharger ces paquets depuis PyPI à la première utilisation, et le Chromium de Playwright doit déjà avoir été fetched par l'étape de première utilisation des prérequis) : (a) services Web AMap, https://restapi.amap.com — scripts/amap.py envoie ma clé AMAP_KEY (comme paramètre de requête « key », à AMap seulement) avec ce que mon spec nomme : les noms de lieux/adresses vers /v3/geocode/geo (avec recherche par mots-clés de repli vers /v3/place/text), les coordonnées d'origine, de destination et d'étapes vers /v3/direction/driving, /v3/direction/walking ou /v4/direction/bicycling, et les noms de districts vers /v3/config/district. Autrement dit, les lieux, adresses et extrémités de routes de ma liste de plans vont à AMap (AutoNavi). Les réponses sont mises en cache sous ~/.cache/map-motion/api/. (b) Tuiles cartographiques, fetched par scripts/render.py via son proxy local et mises en cache sous ~/.cache/map-motion/tiles/ : tuiles AMap depuis wprd0{s}.is.autonavi.com et webst0{s}.is.autonavi.com (x/y/z de tuile et style seulement, avec un user-agent Mozilla/5.0 et un Referer https://www.amap.com/, aucune clé), imagerie mondiale Esri depuis server.arcgisonline.com pour le style satellite-world et toute l'imagerie satellite 3D (z/y/x de tuile seulement), et tuiles de terrain AWS depuis s3.amazonaws.com/elevation-tiles-prod/terrarium/ pour le terrain 3D et l'altitude (scripts/dem.py va chercher les mêmes tuiles directement ; coordonnées de tuiles seulement). (c) Overpass OpenStreetMap — scripts/osm.py POSTe une requête à l'un de https://overpass-api.de/api/interpreter, https://maps.mail.ru/osm/tools/overpass/api/interpreter ou https://overpass.kumi.systems/api/interpreter (essayés en rotation, cache sous ~/.cache/map-motion/osm/) : pour un plan « area », la requête porte le nom de lieu de mon spec et une boîte englobante autour de ses coordonnées résolues par AMap ; pour une trace 3D bâtie à partir de points de passage, elle porte la boîte englobante de ces points. (d) Altitude OpenTopoData — scripts/elev.py envoie des coordonnées (reconverties de GCJ-02 AMap en WGS-84, par lots de 100 comme paires lat,lng dans l'URL) à https://api.opentopodata.org/v1/srtm30m quand un plan demande l'altitude ou un profil d'altitude ; résultats en cache sous ~/.cache/map-motion/elev/. (e) 3D seulement : scripts/render.py télécharge MapLibre GL JS 5.24.0 depuis https://unpkg.com/[email protected]/dist/maplibre-gl.js au premier rendu 3D et le met en cache sous ~/.cache/map-motion/vendor — un téléchargement de bibliothèque seulement, aucune donnée d'utilisateur n'est envoyée à unpkg au-delà de la requête elle-même. - Ce qui reste local à l'usage : mes photos ne sont jamais téléversées par ce skill racine — scripts/render.py ne sert que les fichiers locaux précis de photo/avatar/Live Photo nommés dans la timeline, via son serveur 127.0.0.1, à la page Chromium sans tête locale qui dessine les images, et ffmpeg assemble le MP4/GIF localement ; audio.py synthétise la musique et les effets sonores localement. Ce skill racine ne lit pas lui-même l'EXIF des photos (ce lecteur vit dans le skill frère photo-spot, non installé ici) : si je mets des coordonnées GPS/EXIF ou GPX dans un spec marqué « wgs84 » : true, la compilation les convertit localement, et seules les requêtes de lieux/routes/coordonnées listées ci-dessus quittent la machine. L'usage des tuiles AMap est non officiel : les vidéos personnelles/d'apprentissage vont bien en gardant l'attribution AMap à l'écran, l'usage commercial exige une autorisation AMap ou un style vectoriel — même chose pour l'imagerie Esri. - Hors de ce périmètre, divulgué pour qu'il n'y ait aucune surprise plus tard : le skill frère travel-vlog (non installé ici) peut générer un avatar de dessin animé à partir de ma photo via l'API d'images tierce LabNana, ce qui enverrait cette photo à LabNana sous ma propre clé LabNana — c'est le comportement du frère, décrit dans le README de ce dépôt ; rien dans ce skill racine n'appelle LabNana, et installer cette fiche ne l'active pas. - N'exécute pas make.sh, compile.py, render.py ni aucun autre script pendant cette installation, n'installe ni Chromium ni aucun paquet, ne règle pas et ne demande pas AMAP_KEY, et ne fabrique aucune vidéo : configurer la clé AMap et les téléchargements de première utilisation est ma décision, plus tard, quand je demande vraiment une vidéo. 3. Quand je dis « yes, install », installe-le comme skill : copie le périmètre de 47 fichiers dans le répertoire des skills de l'agent, dans un dossier nommé « map-motion », en gardant sa structure (SKILL.md à sa racine, scripts/, references/ et assets/ comme dans le checkout, et aucun dossier map-3d/, photo-spot/, travel-vlog/ ni docs/ dedans). Un clone manuel suivi de la copie de ce périmètre dans ~/.claude/skills/ est la route décrite ici ; toute autre route ne convient que si chaque fichier installé correspond à son empreinte. 4. Vérifie sans appels réseau : frontmatter valide (name: map-motion), les 47 fichiers en place avec des empreintes concordantes, et aucun dossier frère ni docs installé. N'exécute aucun script de scripts/ pour vérifier. 5. Indique ce qui a été installé, où, et ce qu'il me reste à faire moi-même (par exemple : obtenir une clé gratuite des services Web AMap et la fournir comme AMAP_KEY ou ~/.config/map-motion/amap_key avant la première utilisation, en sachant que les lieux, adresses et coordonnées de mes specs vont à AMap et que les autres envois à l'usage divulgués ci-dessus arrivent seulement quand une vidéo est compilée/rendue ; m'assurer que uv et ffmpeg sont installés ; à la première utilisation, laisser uv aller chercher certifi/Pillow/Playwright et installer le Chromium de Playwright ; fournir moi-même le contenu de la liste de plans — lieux, routes, dates et chemins de photos locales ; utiliser le skill est une étape séparée qui ne commence que quand je le demande). GitHub est optionnel : si j'ai un compte GitHub ou la CLI gh, tu peux l'utiliser ; sinon l'accès public suffit. Ne jamais l'exiger sauf s'il figure dans les prérequis ci-dessus. Règles : ne touche à rien en dehors du dossier temporaire et de la cible d'installation. Si quelque chose semble anormal, arrête-toi et demande-moi.

?

Questions

Comment installer une création ?

Chaque fiche produit contient un prompt d’installation à copier-coller. Collez-le dans votre Muse et il installe la création pour vous — sans configuration manuelle.

Où va mon argent ?

Directement au vendeur. Skill Harbor ne traite jamais les paiements : le paiement se fait sur la page du vendeur, généralement via Stripe.

Que signifie le ✓ à côté du nom d’un créateur ?

Il signifie que nous avons confirmé l’identité de la personne derrière la fiche. Il ne dit rien sur le code lui-même — vérifiez toujours une création avant de l’installer.