← Recherche

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

map-3d

Transformer une spec JSON en vidéo de carte en relief 3D verticale : un vrai relief (altitudes AWS Terrain Tiles drapées d'imagerie satellite Esri, MapLibre GL) — plongée depuis l'orbite

L’essentiel
Quoi
Transformer une spec JSON en vidéo de carte en relief 3D verticale : un vrai relief (altitudes AWS Terrain Tiles drapées d'imagerie satellite Esri, MapLibre GL) — plongée depuis l'orbite
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 lancer des commandes sur l’ordinateur de ton Muse.
  • 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 : exécute des commandes · 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
  • exécute des commandes — Prerequisites: none for the install itself — no account, no API key, no paid service, and nothing is run or do · (e) Package and browser downloads at first use (never during this install): each m3d run executes uv run -q -- · (e) Téléchargements de paquets et de navigateur au premier usage (jamais pendant cette installation) : chaque
  • fait des appels réseau — (a) AMap / Gaode — scripts/amap.py → https://restapi.amap.com — ONLY if the spec contains place-name strings o · (b) OpenStreetMap Overpass — scripts/osm.py → POST to the first working mirror of https://overpass-api.de/api/ · (f) Present in the installed files but NOT called by map-3d's own modes — know they are there: scripts/elev.py
  • écrit des fichiers — Prerequisites: none for the install itself — no account, no API key, no paid service, and nothing is run or do · - The layout is two parts, and both are needed. (a) The skill folder map-3d/ holds 8 files only: SKILL.md (10, · 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 is run or do · 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 n'est exécuté ni téléchargé au-delà des fichiers du skill depuis GitHub au commit épinglé. Pour utiliser le skill ensuite, lis ceci d'abord, parce que l'outillage est lourd : il faut Python 3, uv, ffmpeg et zsh (le lanceur map-3d/scripts/m3d.sh est un script zsh ; sur une machine sans zsh, les mêmes commandes se lancent par python3 map-3d/scripts/m3d.py …). Le premier usage réel télécharge davantage, de lui-même — divulgué ici, jamais pendant cette installation : uv va chercher les paquets Python certifi, pillow et playwright sur PyPI à chaque exécution de m3d (uv run --with …), Playwright exige son navigateur Chromium (uv run --with playwright playwright install chromium, un gros téléchargement, que je fais moi-même séparément, plus tard), render.py télécharge MapLibre GL 5.24.0 depuis unpkg.com une fois et le met en cache, et un premier rendu télécharge des milliers de tuiles satellite et d'altitude et les met en cache sous ~/.cache/map-motion/. Une seule clé, et elle est conditionnelle : une clé API gratuite « Web Service » d'AMap (Gaode) n'est requise QUE si une spec utilise des noms de lieux en texte ou une route planifiée par AMap (conduite/marche/vélo de … à …) — les specs écrites en coordonnées numériques, avec un fichier de trace GPX/GeoJSON ou avec des points de passage reliés par les sentiers OSM n'en ont pas besoin. La clé se lit dans la variable d'environnement AMAP_KEY ou dans le fichier ~/.config/map-motion/amap_key, jamais dans la spec ; c'est moi qui la règle, plus tard, si j'en ai besoin — ne la demande pas et ne la règle pas pendant cette installation. Les rendus sont lents (WebGL logiciel : environ 1 image par seconde, un clip de 30 secondes prend environ 15–25 minutes et roule en arrière-plan) et la sortie est un MP4 vertical (portrait) plus un GIF d'aperçu de 270px. Installe-moi « map-3d ». Il fabrique des vidéos de cartes en relief 3D à partir d'une spec JSON : un vrai relief (altitudes AWS Terrain Tiles + imagerie satellite Esri, rendu par MapLibre GL) avec une plongée depuis la Terre satellite, un survol 3D de toute la route, puis une caméra qui suit la trace (la ligne parcourue devient jaune, kilométrage en direct, altitude, dénivelé cumulé, mini-carte, profil d'altitude en bas, et photos de la spec qui surgissent en route), puis un recul final avec les totaux — pour la randonnée/l'alpinisme (fichier GPX ou liaison par les sentiers OpenStreetMap), la conduite, le vélo et la marche ; ou un lieu unique vers lequel on plonge et autour duquel on tourne (nom du lieu, coordonnées, altitude) ; ou une prévision de lumière (mode « sun » : pour une date donnée, à quelle heure la lumière du lever/coucher du soleil touche un sommet et à quelle heure un point de vue choisi voit la lumière, calculé d'après la vraie position du Soleil et l'ombre du terrain, à environ ±3 minutes près). C'est un sous-skill du moteur map-motion du même dépôt : le dossier map-3d seul ne fait rien — son scripts/m3d.py pilote le moteur partagé à la racine du dépôt (scripts/compile.py envoie les specs « 3d » à scripts/terrain3d.py et les specs « sun » à scripts/sunlight.py, scripts/render.py rend), donc cette installation place le skill et les fichiers strictement requis du moteur côte à côte, dans la disposition que m3d.py cherche lui-même. Dépôt : https://github.com/SpaceZephyr/map-motion (le skill est le dossier map-3d/, 8 fichiers, plus le sous-ensemble moteur listé au point 1 : 13 modules Python dans scripts/, 4 fichiers dans scripts/runtime/, et les 4 fichiers de polices dans assets/fonts/ que le runtime 3D charge — 29 fichiers en tout) 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 prends dans ce checkout exactement ces 29 fichiers (chemins du dépôt) : tout le dossier map-3d/ (8 fichiers), scripts/amap.py, scripts/audio.py, scripts/compile.py, scripts/dem.py, scripts/elev.py, scripts/geo.py, scripts/osm.py, scripts/qa.py, scripts/render.py, scripts/status.py, scripts/sun.py, scripts/sunlight.py, scripts/terrain3d.py, scripts/runtime/hud.js, scripts/runtime/qa.js, scripts/runtime/t3d.js, scripts/runtime/terrain.html, et assets/fonts/Anton-400.woff, assets/fonts/LXGWWenKai-500.woff, assets/fonts/NotoSansSC-700.woff, assets/fonts/NotoSansSC-900.woff. Compare ensuite chacun d'eux aux empreintes enregistrées pour cette fiche le 2026-10-19 : [FINGERPRINTS] - map-3d/SKILL.md: SHA-256 c8cd678bfc9a2d2b45be7e3e0c05fe57e5809b4d4592f31035ca041572702b52 - map-3d/examples/drive_amap_shangrila.json: SHA-256 7d97cee99fcfe122d81fcff4d762bcff12df882a4b8da8852f1193361f37640f - map-3d/examples/hike_osm_yubeng.json: SHA-256 bdd3e8129391ab4d9579a4778755426eb8369a32feaed367e817507e38a7fe6a - map-3d/examples/place_orbit_meili.json: SHA-256 a1ac1c749ccdc0e6615888bc009fd484ca7fd1d671bcf6e233108a9f01b83312 - map-3d/examples/sun_meili_sunrise.json: SHA-256 f302f78c6d69a783d9b18a45dacf5a453ffc6e3f81d79064c0eaff192283fc87 - map-3d/examples/walk_amap_taishan.json: SHA-256 b2854dd5f1ed348bd79b068fcfa67430ff1978931a3fe7d9f57321737efcc397 - map-3d/scripts/m3d.py: SHA-256 eeb3bfc0e96247c70ead88aa0cadcc479fa80b0495b2b9428056b225b0bca47d - map-3d/scripts/m3d.sh: SHA-256 705ad779aae7e1b4f92ab8eb6df3eb2ec82b397746e4c4ed2e96b067bab8c243 - 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/osm.py: SHA-256 3e30d7b0d8288f5a62de626f428899cddf9c7ca5b3e94623ebf7892a307421e2 - scripts/qa.py: SHA-256 9b87b89c690d22aeecf0441685f2d7489a2379cf9a8c9514045e2438eeb19baa - scripts/render.py: SHA-256 fd5eb323b0207c9b9920aa6dc24982113a04020b582fe67266f8359a57db5ecd - scripts/status.py: SHA-256 eca7060ddc17aef9262d5b0c7536449de7f6856afe4184411be43351f3c5f0d5 - scripts/sun.py: SHA-256 2c6ce15ccc443a6fa0935d31ca76fdca1cea4d2d82c6119598757f91269db2bc - scripts/sunlight.py: SHA-256 577c7613504d84a14c5813a7ace7534c81dc0dee8bb0c295fcb7a7f58819dadc - scripts/terrain3d.py: SHA-256 cd2741899a619a477c917e6107a04033157a3e92bf29b1662c94ff65c6602cc2 - scripts/runtime/hud.js: SHA-256 143017794af92ca455a6caa8ec3c1811171ee80b99c0d875442ce10a9983f4db - scripts/runtime/qa.js: SHA-256 8c761421f289a378b8341fac965a1f516567899eda9cb5786ac1fc8f792e801a - scripts/runtime/t3d.js: SHA-256 a891d9343f8471407c1b39bd6d5fe2d2a796d0a81e479aa6c61663e97fb7a306 - scripts/runtime/terrain.html: SHA-256 61cc9712c9323e2ba22ea1d5bb7d9e19bf5bfe52b518a1edb717528c80e7954c - assets/fonts/Anton-400.woff: SHA-256 791375bdbed00de4a3aad4811291220ead0e1405d6f8b5bdbf109798c8359ac5 - assets/fonts/LXGWWenKai-500.woff: SHA-256 734bd187392579417ac83effe31d37b9de43c7b290bcb400800456511ed79e8f - assets/fonts/NotoSansSC-700.woff: SHA-256 dd0d39a9780eb995c499af0c20cca93b1dfdda865da70871a20890b3e406b968 - assets/fonts/NotoSansSC-900.woff: SHA-256 d2d8a42438b18b65b6577434df4e41bb08c6b5051281757849af00ab743bb58f 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 map-3d/SKILL.md au complet, lis map-3d/scripts/m3d.py et m3d.sh, et lis les fichiers moteur listés ci-dessus (compile.py au moins pour son aiguillage « 3d »/« sun », terrain3d.py, sunlight.py, sun.py, dem.py, elev.py, osm.py, amap.py, geo.py, render.py, et les fichiers runtime terrain.html, t3d.js, hud.js, qa.js), 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 : - La disposition comporte deux parties, et les deux sont nécessaires. (a) Le dossier du skill map-3d/ contient 8 fichiers seulement : SKILL.md (10 000 octets), cinq specs d'exemple dans examples/, et scripts/m3d.py + scripts/m3d.sh. (b) Le sous-ensemble moteur compte 21 fichiers : 13 modules Python à la racine du dépôt dans scripts/ et 4 fichiers runtime dans scripts/runtime/, plus les 4 polices dans assets/fonts/. m3d.py cherche le moteur d'abord à <parent du dossier map-3d>/scripts/, sinon il retombe sur ~/.claude/skills/map-motion/scripts — le point 3 utilise cette disposition de repli. Le reste du dépôt ne fait PAS partie de cette installation et n'est pas requis par map-3d : le SKILL.md racine et scripts/make.sh (l'entrée du skill 2D principal), scripts/runtime/mm.js et scripts/runtime/index.html (le runtime 2D ; les timelines 3D déclarent « runtime »: « terrain » et ne les chargent jamais), assets/land.json et assets/china.json (chargés seulement par mm.js), la documentation dans references/ et README.md, les assets/examples/ de la racine, docs/media/, et les deux skills frères photo-spot/ et travel-vlog/ — des fiches séparées qui partagent le même moteur mais que map-3d n'importe ni n'appelle jamais (aucune référence croisée dans un sens ni dans l'autre ; chaque frère a son propre lanceur autour du moteur). - 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é, aucun paquet n'est installé, aucun navigateur n'est téléchargé et aucune clé n'est demandée pendant l'installation. 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 lui donne une spec, et chaque envoi ci-dessous arrive à ce moment-là, à la compilation ou au rendu, par des appels HTTPS GET/POST ordinaires dans les fichiers listés (aucun appel caché : chaque appel réseau du périmètre passe par amap.py, osm.py, dem.py ou le proxy local de render.py) : (a) AMap / Gaode — scripts/amap.py → https://restapi.amap.com — SEULEMENT si la spec contient des noms de lieux en texte ou une trace planifiée par AMap ({"mode": "driving"|"walking"|"bicycling", "from": …, "to": …}) : le géocodage envoie les chaînes de noms de lieux/adresses que j'ai écrites (GET /v3/geocode/geo, avec repli sur la recherche POI par mots-clés GET /v3/place/text) et la planification envoie les coordonnées de l'origine, de la destination et des points de passage (GET /v3/direction/driving, /v3/direction/walking ou /v4/direction/bicycling) ; ma clé AMAP_KEY accompagne chacune de ces requêtes comme paramètre « key », vers AMap seulement. Les réponses sont mises en cache sous ~/.cache/map-motion/api/, donc les répétitions ne renvoient rien. Les coordonnées que j'écris en nombres ne sont jamais envoyées à AMap (elles sont seulement converties localement entre WGS-84 et GCJ-02). (b) OpenStreetMap Overpass — scripts/osm.py → POST au premier miroir qui répond parmi https://overpass-api.de/api/interpreter, https://maps.mail.ru/osm/tools/overpass/api/interpreter, https://overpass.kumi.systems/api/interpreter — SEULEMENT pour une spec de sentier ({"via": [points de passage…]} sans GPX) : le corps de la requête est une requête Overpass contenant la boîte englobante calculée à partir de mes points de passage (plus la marge de la spec, 0,02° par défaut), c'est-à-dire que la zone traversée par ma route est divulguée au miroir qui répond. Mise en cache sous ~/.cache/map-motion/osm/. Un fichier de trace GPX/GeoJSON est lu localement et n'est jamais téléversé. (c) AWS Terrain Tiles — scripts/dem.py → GET https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png — à CHAQUE compilation 3D/sun : l'altitude est échantillonnée pour chaque point de ma trace/de mon lieu (et, en mode sun, le long de lignes de visée jusqu'à 80 km autour du sommet et du point de vue), donc les coordonnées des tuiles demandées révèlent la zone de ma route ; aucune clé. Mise en cache sous ~/.cache/map-motion/tiles/dem/. Les mêmes tuiles sont reprises au rendu via le proxy de rendu (même hôte, même cache). (d) Tuiles et bibliothèque au rendu, via le proxy local de scripts/render.py (un serveur HTTP temporaire lié à 127.0.0.1 sur un port aléatoire, qui ne sert que les fichiers runtime, les polices, les tuiles ci-dessous et les fichiers photo nommés dans ma spec — au navigateur Chromium local sans tête seulement) : tuiles satellite Esri World Imagery GET https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x} (coordonnées de tuiles de la zone filmée ; envoyées avec un en-tête « Referer: https://www.amap.com/ » que le proxy ajoute aux requêtes de tuiles), les tuiles d'altitude AWS du point (c), et, une fois, MapLibre GL 5.24.0 depuis https://unpkg.com/[email protected]/dist/maplibre-gl.js, mis en cache sous ~/.cache/map-motion/vendor/. La page du navigateur elle-même (scripts/runtime/t3d.js) ne parle jamais qu'à ce proxy localhost (/tile/…, /asset/fonts/…, /file/…) ; elle n'appelle directement aucun hôte extérieur. Mes photos de spec sont lues depuis des fichiers locaux et servies par ce proxy au navigateur local seulement — elles ne sont téléversées nulle part — mais elles se retrouvent visibles dans la vidéo finie, que je publie ou non (SKILL.md avertit pour les photos où figurent des personnes). (e) Téléchargements de paquets et de navigateur au premier usage (jamais pendant cette installation) : chaque exécution de m3d lance uv run -q --with certifi --with pillow --with playwright python …, donc uv télécharge ces trois paquets depuis PyPI s'ils ne sont pas déjà dans son cache ; le navigateur Chromium de Playwright est un téléchargement unique séparé que je déclenche moi-même. ffmpeg est un outil système que les scripts appellent localement ; il ne fait aucun appel réseau. (f) Présent dans les fichiers installés mais NON appelé par les modes propres à map-3d — sache qu'ils sont là : scripts/elev.py contient une consultation de https://api.opentopodata.org/v1/srtm30m qui envoie des coordonnées par lots de 100, mais les chemins de code 3D/sun n'utilisent d'elev.py que sa conversion locale GCJ↔WGS et n'appellent jamais cette consultation (elle sert le skill 2D principal) ; scripts/amap.py contient aussi une fonction district() de frontières et scripts/osm.py une fonction area() de contours, que map-3d n'appelle jamais ; la table du proxy de scripts/render.py contient aussi des URL de tuiles AMap (wprd0*.is.autonavi.com, webst0*.is.autonavi.com) que seul le runtime 2D demande — le runtime 3D ne demande que les tuiles Esri et AWS. scripts/render.py lance Chromium sans tête avec --disable-web-security (plus les drapeaux WebGL logiciel SwiftShader pour le terrain) ; ce navigateur ne charge que la page localhost ci-dessus, mais le drapeau est réel — ne réutilise pas cette configuration de lancement pour autre chose. - Les parties locales seulement à l'usage : les maths de position du Soleil (scripts/sun.py, algorithme NOAA), toutes les maths de caméra/géométrie (geo.py, terrain3d.py, sunlight.py), le contrôle qualité automatique (qa.py/qa.js), la synthèse audio (audio.py, importée par render.py ; les timelines 3D ne portent aucun événement sonore, elle reste inactive), le dessin des titres/HUD et les encodages ffmpeg. Les réponses AMap, les réponses OSM et les tuiles sont mises en cache sous ~/.cache/map-motion/ (api/, osm/, tiles/, vendor/), donc re-rendre la même spec renvoie peu ou rien. Le kilométrage et le dénivelé sont calculés depuis les données d'altitude AWS et peuvent différer de 5–15 % d'une montre ; un sentier bâti depuis les chemins OSM est une hypothèse de plus court chemin entre points de passage, pas une trace que j'ai vraiment marchée — la livraison doit dire de quelle source vient une route. - Prudence sur les conditions, tirée du dépôt lui-même : les tuiles/API AMap et l'imagerie Esri conviennent aux vidéos personnelles non commerciales avec l'attribution à l'écran conservée ; un usage commercial exige une licence AMap / Esri. Ne retire pas la ligne d'attribution que le moteur incruste dans l'image. - N'installe pas uv, ffmpeg, de paquets Python ni Chromium pendant cette installation, ne règle pas et ne demande pas AMAP_KEY, n'exécute ni m3d.py/m3d.sh, ni compile.py, ni render.py, et ne rends aucune vidéo : la configuration des outils et la clé sont mes décisions, plus tard, quand je demande vraiment une vidéo de carte 3D. 3. Quand je dis « yes, install », installe-le en deux dossiers frères, en ne copiant que les fichiers vérifiés du checkout épinglé : (a) le dossier map-3d dans le répertoire des skills de l'agent sous le nom « map-3d », en gardant ses 8 fichiers (SKILL.md à sa racine, examples/, scripts/m3d.py et scripts/m3d.sh) ; (b) le moteur dans un dossier nommé « map-motion » juste à côté : les 13 modules scripts/*.py dans map-motion/scripts/, les 4 fichiers runtime dans map-motion/scripts/runtime/, et les 4 polices dans map-motion/assets/fonts/ — exactement le chemin de repli ~/.claude/skills/map-motion/scripts que m3d.py cherche. Ne copie aucun autre fichier du dépôt (ni le SKILL.md racine, ni make.sh, ni mm.js/index.html, ni land.json/china.json, ni photo-spot/, ni travel-vlog/). Toute autre disposition ne convient que si chaque fichier installé correspond à son empreinte et que m3d.py peut trouver terrain3d.py dans l'un de ses deux emplacements moteur documentés. 4. Vérifie sans appels réseau : frontmatter du SKILL.md installé de map-3d valide (name: map-3d), les 29 fichiers en place dans les deux dossiers avec des empreintes concordantes. N'exécute aucun script, n'invoque pas uv et n'ouvre pas les pages runtime pour vérifier. 5. Indique ce qui a été installé, où, et ce qu'il me reste à faire moi-même (par exemple : installer uv et ffmpeg moi-même s'ils manquent ; au premier usage, laisser uv aller chercher certifi/pillow/playwright sur PyPI et installer moi-même le Chromium de Playwright — deux téléchargements qui arrivent à l'usage, pas à l'installation ; créer une clé gratuite AMap Web Service et régler AMAP_KEY ou ~/.config/map-motion/amap_key moi-même SEULEMENT si je veux des noms de lieux ou des routes planifiées par AMap — les specs en coordonnées, GPX et sentiers OSM fonctionnent sans ; m'attendre à ce que le premier rendu d'une zone télécharge des milliers de tuiles Esri/AWS dans ~/.cache/map-motion/ et qu'un clip de 30 secondes prenne environ 15–25 minutes en arrière-plan ; garder en tête la frontière commercial/non commercial et la ligne d'attribution ; utiliser le skill est une étape séparée qui ne commence que quand je lui donne une spec, et les envois à l'usage divulgués au point 2 arrivent seulement à ce moment-là). 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 des cibles 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.