Przejdź do treści
Biblioteka skilli
Marketing i treści · Budowanie i kod

map

/map

Robi animowane filmy-mapy z prawdziwych danych geograficznych i komiksowych naklejek: narracja, trasy, etykiety i eksport 1920 na 1080 w 30 fps.

Repozytorium
Auto-Video ↗
Licencja
MIT
Ostatnia zmiana repozytorium
10.11.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
97
Skrypty
32
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 10.11.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co sprawdzić przed instalacją
  • 32 skrypty w paczce. Przejrzyj je przed instalacją, bo Claude może je uruchomić.

Skrypty: projects/zhangqian/lib/core.js, projects/zhangqian/lib/map.js, projects/zhangqian/lib/promo.js, projects/zhangqian/lib/stickers.js, projects/zhangqian/main.js, projects/zhangqian/paragraphs.js, projects/zhangqian/score.js, projects/zhangqian/sound.js, projects/zhangqian/timeline.js, runtime/bgm.mjs, runtime/core.js, runtime/lang.mjs, runtime/map.js, runtime/music.mjs, runtime/net.mjs, runtime/prom

Co robi i kiedy

Robi animowane filmy-mapy z prawdziwych danych geograficznych i komiksowych naklejek: narracja, trasy, etykiety i eksport 1920 na 1080 w 30 fps.

Oryginalny opis (EN)

用「真实地理数据 + 漫画贴纸」做地图动画口播片。口播稿 + 配音进,地球/区域/城市连续镜头、路线沿线绘制、人物贴纸锚定经纬度、标注卡与年份出:1920×1080 / 30 fps / −16 LUFS。当用户说「做地图解说」「地图动画」「在地图上讲这条路线」「map 管线出片」「照张骞那种地图来一支」时使用。

Jak działa

  1. 三种用法
  2. 输入契约
  3. 目录
  4. 流程
  5. 已知坑
  6. 验收
Sekcje z nagłówków SKILL.md, w oryginale · 160 linii, 695 słów
Podgląd SKILL.md
---
name: map
description: 用「真实地理数据 + 漫画贴纸」做地图动画口播片。口播稿 + 配音进,地球/区域/城市连续镜头、路线沿线绘制、人物贴纸锚定经纬度、标注卡与年份出:1920×1080 / 30 fps / −16 LUFS。当用户说「做地图解说」「地图动画」「在地图上讲这条路线」「map 管线出片」「照张骞那种地图来一支」时使用。
---

# map:地图动画管线

地图是论证主体:路线画在地图上、数字钉在发生地、镜头永远飞向正在说的那个地方。
人物、道具、地形都是**纯 SVG 漫画贴纸**,锚定真实经纬度或沿路线移动,按旁白逐句落位。
底图来自 Natural Earth(public domain),渲染是 Chrome 逐帧 + ffmpeg,画面是 `t` 的纯函数。

首个实例:`projects/zhangqian/`(025《张骞寻路》全片,544 s,1280×720 / 30 fps)。
规范:`references/asset-spec.md`(贴纸)、`references/storyboard.md`(分镜)、`references/qa.md`(验收)。

## 三种用法

| 用法 | 场景 | 入口 |
|---|---|---|
| **A. 新片** | 有配音 wav + 口播稿 txt | `map.py new` → 写 brief/分镜/贴纸 → `map.py vo` → `check/stills/render` |
| **B. 改一段** | 只改某段文案或动画 | 改 `script.json`/`main.js` → `map.py vo`(可 `--cut`)→ `stills` 复核 → `render` |
| **C. 只要视觉** | 复用地图/贴纸/镜头语法 | 抄 `runtime/map.js` 的 `G.*` 与 `runtime/stickers.js` 的 `MAP_STICKERS` |

## 输入契约

| 输入 | 必填 | 说明 |
|---|---|---|
| `配音.wav` | 是 | 用户原声,不重录;任意采样率,脚本会转 48k 立体声 |
| `口播稿.txt` | 是 | 每行一个自然段,空行忽略 |
| `brief.md` | 是 | 事实表 + 旁白原文;屏幕文字的唯一出处 |
| `storyboard.md` | 是 | 信息清单、段落时间轴、贴纸行为表 |
| `assets/models/*.svg` | 是 | 400×400、透明底、`#2E2924` 描边 4px 的贴纸 |
| `score.js` / `sound.js` | 是 | 配乐与音效设计(模板已给 map 风格起点) |

## 目录

```
map/
├── SKILL.md                 本文档
├── README.md                快速开始
├── CREDITS.md               许可与数据来源
├── pipeline.json            定版参数(画幅/色板/镜头/音频/交付)
├── runtime/
│   ├── core.js promo.js map.js    浏览器运行时(BB-Video MIT,vendored)
│   ├── stickers.js                贴纸层(本管线新增)
│   ├── render.mjs music.mjs bgm.mjs lang.mjs net.mjs sound.mjs scores/
│   └── LICENSE.BB-Video
├── scripts/
│   ├── map.py               编排 CLI:new/vo/check/stills/render/probe/deliver
│   ├── make_vo.py           配音 + 口播稿 → timeline / paragraphs / script.json
│   └── deliver.py           混 BGM → QA → 出稿包
├── references/
│   ├── asset-spec.md        贴纸规范(图层、lift、动画字段、已知坑)
│   ├── storyboard.md        分镜写法
│   └── qa.md                验收清单
├── template/                空白可运行工程(8 s 示例时间轴 + 2 张示例贴纸)
└── projects/
    └── zhangqian/           张骞全片实例(代码/文案/44 张贴纸/时间轴,无音频与成片)
```

## 流程

### 1. 建工程

```bash
python scripts/map.py new <工程目录> --title "片名"
```

复制 `template/`,并把运行时复制到 `<工程>/lib/`。随后写 `brief.md`、`storyboard.md`、贴纸与 `main.js`。

### 2. 配音与时间轴

```bash
python scripts/map.py vo <工程目录> --src 配音.wav --text 口播稿.txt [--lead 0.7] [--cut 秒]
```

`make_vo.py` 做的事:

1. `silencedetect` 找静音候选;
2. 按「字数 / 语速」DP 对齐每个自然段的边界(停顿短于 0.22 s 也能切开);
3. 段内按字数预测句边界,在 ±0.8 s 内取 20 ms 能量最低点校正;
4. 输出 `audio/narration.m4a`、`timeline.json/js`(句级 + 字级)、`paragraphs.js`、`script.json`。

已有验证过的前 K 段边界时用 `--fixed 0,32.18,47.73,…`(或 `para_bounds.json`),其余段落继续 DP。

### 3. 画贴纸

按 `references/asset-spec.md`:400×400 viewBox、透明底、统一色板、平涂分面。
文件名 `NN_english_name.svg`,中文说明放审核页。人物与道具的 `lift` 规则见规范 §3。

### 4. 写画面

`main.js` 的 `PROMO.compose({ build })` 里:

```js
const G = await PROMO.map(F, { ground: 'atlas', globeZoom: 3.6 });
await G.world({ detail: '50m', states: false });

G.label(CHANGAN, '长安', { kind: 'city', dir: 'e', at: a1 + 1.7, until: E[0] });
const R = G.line(NORTH, { color: 'accent', width: 5, dash: [8, 8], at: a1, dur: 3 });
G.travel(NORTH, { at: a1 + 0.2, dur: 4, marker: 'dot', trail: true });
G.callout(AFG, { kicker: '一万二千里', title: '阿富汗集市', at: a2, until: E[1], side: 'r' });
G.note('方向示意,非实测路线', { at: a1, until: fin, pos: 'br' });

await MAP_STICKERS(G, [
  { f: '01_zhangqian.svg', path: HOMEWARD, from: a1 + 1.8, to: a1 + 4.2, w: 240, at: a1 + 1.8, until: a1 + 4.7, dy: 20, lift: 200 },
  { f: '02_wudi.svg',      ll: [108.94, 34.34], w: 260, at: a1 + 2.4, until: a2 + 0.3, dy: 22, lift: 215 },
], { dir: 'assets/models/' });

G.camera([...]);
```

API 全表见 `runtime/map.js` 顶部注释与 `references/storyboard.md`。要点:

- 一条连续镜头;每段给 `center/zoom` 或 `fit`,飞行 ≤ 2.5 zoom/秒。
- 地理锚点用今天坐标,只作画布位置,不代表历史疆界。
- 字幕级别的时间用 `paragraphs.js` 的 `start/end`,不要手写。

### 5. 自检与抽帧

```bash
python scripts/map.py check  <工程>
python scripts/map.py stills <工程> --times 3,7.5,16.5,25
```

`--check` 会核对:文字重叠、标注出画、镜头过快、没有新动作、屏幕文字 vs `brief.md`、信息密度、音乐/音效 name 是否还是模板原文。

### 6. 渲染

```bash
python scripts/map.py render <工程>                  # 1080p
python scripts/map.py render <工程> --scale 0.6667   # 720p 样片
```

渲染是 Chrome 逐帧 + ffmpeg;map 的 waterlines 每帧重算,1080p 约 0.3–0.6 s/帧。
长片(>5 分钟)整片配乐合成也要数分钟,别误判为卡死。

### 7. 交付

```bash
python scripts/map.py deliver <工程> --chugao 出稿/<编号>_<选题> --name "12_map_片名_全片_720p" [--bgm 音乐.mp3]
```

混 BGM(循环铺满、自动响度)→ QA(时长/分辨率/帧率/响度/峰值/黑帧/解码)→ 复制 `.mp4/_封面/_字幕/_署名`。
QA 写入 `<工程>/review/qa.json`。样片与阶段成果回到 `出稿/`,全片归档到 `out/`。

## 已知坑

| 现象 | 原因 / 处理 |
|---|---|
| ffmpeg 卡在 AAC 编码 | 44.1k 单声道 → 先转 48k 立体声(`make_vo.py` 已内置) |
| 最后一句被切 | `-t` 必须放在 `-i` 之前(已内置) |
| 找不到 Chrome | 设置 `CHROME_PATH`;Windows 下脚本会自动找本机 Chrome/Edge |
| 贴纸出现在地球边缘 | globe 阶段不显示贴纸,出场推迟到地图展开后 |
| 人物压在路线南侧 | 加 `lift`,不是只调 `dy` |
| 地点标签出画 | 按「镜头能看到它的那一段」设 `at/until` |
| `G.world` 长时间不返回 | 从 CDN 取 world-atlas;网络差时先 `--offline` 不可用(页面依赖 d3),改用本地 CDN 或重试 |
| 渲染打印「完成」后挂起 | 封面/字幕收尾偶发挂起;确认帧数完整后终止进程,用 `deliver.py` 生成 SRT |
| 长片 `--check` 很慢 | 543 s 全片会合成整片配乐,正常需要数分钟 |
| Bash 的 curl 不通但 Chrome 能加载 CDN | 字体由 Node 拦截下载并缓存,底图由 Chrome 加载 |

## 验收

见 `references/qa.md`。硬门槛:`--check` 无 error、−16 LUFS / 约 −1 dBTP、黑帧 0、解码无错误、每句字幕齐全。
Pliki w paczce (97)
  • CREDITS.md 1 KB
  • README.md 2 KB
  • SKILL.md 8 KB
  • pipeline.json 2 KB
  • projects/zhangqian/README.md 1 KB
  • projects/zhangqian/brief.md 18 KB
  • projects/zhangqian/index.html 1 KB
  • projects/zhangqian/main.js 39 KB
  • projects/zhangqian/para_bounds.json 1 KB
  • projects/zhangqian/paragraphs.js 2 KB
  • projects/zhangqian/score.js 2 KB
  • projects/zhangqian/script.json 16 KB
  • projects/zhangqian/sentences.txt 14 KB
  • projects/zhangqian/sound.js 2 KB
  • projects/zhangqian/storyboard.md 7 KB
  • projects/zhangqian/timeline.js 198 KB
  • projects/zhangqian/timeline.json 290 KB
  • projects/zhangqian/assets/models/01_zhangqian.svg 4 KB
  • projects/zhangqian/assets/models/02_wudi.svg 4 KB
  • projects/zhangqian/assets/models/03_xiongnu_rider.svg 5 KB
  • projects/zhangqian/assets/models/04_bamboo_staff.svg 2 KB
  • projects/zhangqian/assets/models/05_shu_cloth.svg 2 KB
  • projects/zhangqian/assets/models/06_tibetan_plateau.svg 2 KB
  • projects/zhangqian/assets/models/07_desert.svg 3 KB
  • projects/zhangqian/assets/models/08_ancient_traveler.svg 3 KB
  • projects/zhangqian/assets/models/09_war_horse.svg 2 KB
  • projects/zhangqian/assets/models/10_scout_party.svg 2 KB
  • projects/zhangqian/assets/models/11_kunming_warrior.svg 3 KB
  • projects/zhangqian/assets/models/12_han_soldiers.svg 3 KB
  • projects/zhangqian/assets/models/13_stone_ox.svg 2 KB
  • projects/zhangqian/assets/models/14_gold_nuggets.svg 2 KB
  • projects/zhangqian/assets/models/15_strongman.svg 3 KB
  • projects/zhangqian/assets/models/16_sacrifice_pit.svg 2 KB
  • projects/zhangqian/assets/models/17_ivory_tusks.svg 2 KB
  • projects/zhangqian/assets/models/18_cowrie_shells.svg 2 KB
  • projects/zhangqian/assets/models/19_bronze_mask.svg 3 KB
  • projects/zhangqian/assets/models/20_shu_banner.svg 2 KB
  • projects/zhangqian/assets/models/21_lixihofen.svg 3 KB
  • projects/zhangqian/assets/models/22_old_mason.svg 3 KB
  • projects/zhangqian/assets/models/23_pla_soldier.svg 3 KB
  • projects/zhangqian/assets/models/24_jige.svg 4 KB
  • projects/zhangqian/assets/models/25_jige_wife.svg 3 KB
  • projects/zhangqian/assets/models/26_horse_caravan.svg 3 KB
  • projects/zhangqian/assets/models/27_washing_machine.svg 2 KB
  • projects/zhangqian/assets/models/28_fridge.svg 2 KB
  • projects/zhangqian/assets/models/29_tv_cabinet.svg 2 KB
  • projects/zhangqian/assets/models/30_truck_318.svg 2 KB
  • projects/zhangqian/assets/models/31_suspension_plank.svg 2 KB
  • projects/zhangqian/assets/models/32_stone_holes.svg 2 KB
  • projects/zhangqian/assets/models/33_fire_water.svg 2 KB
  • projects/zhangqian/assets/models/34_avalanche.svg 2 KB
  • projects/zhangqian/assets/models/35_village_jiaresa.svg 3 KB
  • projects/zhangqian/assets/models/36_tropical_forest.svg 4 KB
  • projects/zhangqian/assets/models/37_medog_road.svg 2 KB
  • projects/zhangqian/assets/models/38_jiange_pass.svg 2 KB
  • projects/zhangqian/assets/models/39_dujiangyan.svg 2 KB
  • projects/zhangqian/assets/models/40_camel_caravan.svg 3 KB
  • projects/zhangqian/assets/models/41_footprints.svg 2 KB
  • projects/zhangqian/assets/models/42_himalaya_peaks.svg 2 KB
  • projects/zhangqian/assets/models/43_photo_crew.svg 4 KB
  • projects/zhangqian/assets/models/44_goods_pile.svg 3 KB
  • projects/zhangqian/lib/core.js 23 KB
  • projects/zhangqian/lib/map.js 104 KB
  • projects/zhangqian/lib/promo.js 134 KB
  • projects/zhangqian/lib/stickers.js 4 KB
  • references/asset-spec.md 8 KB
  • references/qa.md 2 KB
  • references/storyboard.md 3 KB
  • runtime/LICENSE.BB-Video 1 KB
  • runtime/bgm.mjs 20 KB
  • runtime/core.js 23 KB
  • runtime/lang.mjs 2 KB
  • runtime/map.js 104 KB
  • runtime/music.mjs 73 KB
  • runtime/net.mjs 1 KB
  • runtime/promo.js 134 KB
  • runtime/render.mjs 113 KB
  • runtime/sound.mjs 28 KB
  • runtime/stickers.js 4 KB
  • runtime/scores/ambient.mjs 1 KB
  • runtime/scores/cinematic.mjs 1 KB
  • runtime/scores/lofi.mjs 1 KB
  • runtime/scores/minimal.mjs 1 KB
  • runtime/scores/pop.mjs 1 KB
  • scripts/deliver.py 8 KB
  • scripts/make_vo.py 11 KB
  • scripts/map.py 7 KB
  • template/index.html 1 KB
  • template/main.js 3 KB
  • template/paragraphs.js 1 KB
  • template/score.js 2 KB
  • template/script.json 1 KB
  • template/sound.js 2 KB
  • template/timeline.js 2 KB
  • template/timeline.json 3 KB
  • template/assets/models/demo_dune.svg 3 KB
  • template/assets/models/demo_traveler.svg 3 KB

Wersje

RepozytoriumWynikLicencja
Ta strona · DaBaoAgent/Auto-Video100MIT
milansolutionsai-ops/claude-code-map-skill100MIT
acaprino/alfio-claude-plugins100MIT
shenxingy/clade100MIT
bgmacris/quimera-ai100MIT
fabiozagaria/spring-security-advisor100MIT
htlin222/dotfiles100MIT
roma8ok/getmapstack100MIT
smg-project/smg-dev-guide100Apache-2.0

Migawka bazy z 13.11.2026 · wersja paczki 024cb1d08ae0 (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100laolang
    Tworzy animowane wideo z mową w stylu ręcznie rysowanej animacji celuloidowej z lat osiemdziesiątych, z paletą i ruchem kamery.
  • 100shuimo
    Tworzy krótki film popularnonaukowy w stylu tuszu na papierze z nagranym lektorem, pejzażami SVG, napisami i muzyką.
  • 81maps-geography
    Tworzy dokładne mapy na podstawie prawdziwych danych geograficznych do raportów i materiałów graficznych.
  • 100map-animation
    Prowadzi przez animację map w stylu Vox: zbliżenia, trasy, podświetlanie krajów, pinezki, import kamery z Earth Studio do After Effects, ruch map wektorowych i kadencja 12 fps.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.