clipwise 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +31 -31
- package/README.md +72 -38
- package/dist/cli/index.js +480 -106
- package/dist/compose/frame-worker.js +85 -76
- package/dist/index.d.ts +477 -34
- package/dist/index.js +582 -129
- package/package.json +1 -1
- package/skills/clipwise.md +51 -13
package/README.ko.md
CHANGED
|
@@ -80,6 +80,37 @@ const frames = await renderer.composeAll(session.frames);
|
|
|
80
80
|
const mp4 = await encodeMp4(frames, scenario.output);
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
+
## Claude Code 스킬
|
|
84
|
+
|
|
85
|
+
Clipwise에는 [Claude Code](https://claude.com/claude-code) 스킬이 내장되어 있습니다. 설치 후 Claude Code에서 `/clipwise`를 입력하면 자연어로 YAML 시나리오 생성, 검증, 녹화까지 한 번에 할 수 있습니다.
|
|
86
|
+
|
|
87
|
+
### 스킬 설치
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
npx clipwise install-skill
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
`.claude/skills/clipwise.md`에 스킬 파일이 복사됩니다 (`.claude/` 디렉토리가 있으면 프로젝트 레벨, 없으면 `~/.claude/skills/`에 설치).
|
|
94
|
+
|
|
95
|
+
### 사용법
|
|
96
|
+
|
|
97
|
+
Claude Code 세션에서:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
/clipwise
|
|
101
|
+
> http://localhost:3000 대시보드 데모 녹화해줘
|
|
102
|
+
— 로그인 버튼 클릭, 이메일/비밀번호 입력, 분석 페이지 이동
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Claude가 자동으로:
|
|
106
|
+
1. `clipwise.yaml` 시나리오 생성
|
|
107
|
+
2. `npx clipwise validate`로 검증
|
|
108
|
+
3. `npx clipwise record`로 MP4 녹화
|
|
109
|
+
|
|
110
|
+
### 업데이트
|
|
111
|
+
|
|
112
|
+
clipwise 업그레이드 후 `npx clipwise install-skill`을 다시 실행하면 최신 스킬로 업데이트됩니다.
|
|
113
|
+
|
|
83
114
|
## YAML 시나리오 형식
|
|
84
115
|
|
|
85
116
|
시나리오는 4개 섹션으로 구성됩니다: 메타데이터, 이펙트, 출력, 스텝.
|
|
@@ -403,37 +434,6 @@ VideoToolbox는 런타임에 자동 감지되며, 사용 불가 시 `libx264`로
|
|
|
403
434
|
|
|
404
435
|
[PROMPTS.md](./PROMPTS.md)에 바로 사용할 수 있는 AI 프롬프트 템플릿이 있습니다. ChatGPT나 Claude에 복붙하고 내 사이트 URL만 넣으면 YAML 시나리오를 생성해줍니다.
|
|
405
436
|
|
|
406
|
-
## Claude Code 스킬
|
|
407
|
-
|
|
408
|
-
Clipwise에는 [Claude Code](https://claude.com/claude-code) 스킬이 내장되어 있습니다. 설치 후 Claude Code에서 `/clipwise`를 입력하면 자연어로 YAML 시나리오 생성, 검증, 녹화까지 한 번에 할 수 있습니다.
|
|
409
|
-
|
|
410
|
-
### 스킬 설치
|
|
411
|
-
|
|
412
|
-
```bash
|
|
413
|
-
npx clipwise install-skill
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
`.claude/skills/clipwise.md`에 스킬 파일이 복사됩니다 (`.claude/` 디렉토리가 있으면 프로젝트 레벨, 없으면 `~/.claude/skills/`에 설치).
|
|
417
|
-
|
|
418
|
-
### 사용법
|
|
419
|
-
|
|
420
|
-
Claude Code 세션에서:
|
|
421
|
-
|
|
422
|
-
```
|
|
423
|
-
/clipwise
|
|
424
|
-
> http://localhost:3000 대시보드 데모 녹화해줘
|
|
425
|
-
— 로그인 버튼 클릭, 이메일/비밀번호 입력, 분석 페이지 이동
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
Claude가 자동으로:
|
|
429
|
-
1. `clipwise.yaml` 시나리오 생성
|
|
430
|
-
2. `npx clipwise validate`로 검증
|
|
431
|
-
3. `npx clipwise record`로 MP4 녹화
|
|
432
|
-
|
|
433
|
-
### 업데이트
|
|
434
|
-
|
|
435
|
-
clipwise 업그레이드 후 `npx clipwise install-skill`을 다시 실행하면 최신 스킬로 업데이트됩니다.
|
|
436
|
-
|
|
437
437
|
## GitHub Pages
|
|
438
438
|
|
|
439
439
|
`docs/` 폴더에 문서 사이트와 라이브 데모 대시보드가 포함되어 있습니다:
|
package/README.md
CHANGED
|
@@ -80,6 +80,37 @@ const frames = await renderer.composeAll(session.frames);
|
|
|
80
80
|
const mp4 = await encodeMp4(frames, scenario.output);
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
+
## Claude Code Skill
|
|
84
|
+
|
|
85
|
+
Clipwise ships a built-in [Claude Code](https://claude.com/claude-code) skill. Once installed, type `/clipwise` in Claude Code to generate YAML scenarios, validate, and record — all through natural language.
|
|
86
|
+
|
|
87
|
+
### Install the skill
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
npx clipwise install-skill
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
This copies the skill file to `.claude/skills/clipwise.md` (project-level if `.claude/` exists, otherwise `~/.claude/skills/`).
|
|
94
|
+
|
|
95
|
+
### Usage
|
|
96
|
+
|
|
97
|
+
In any Claude Code session:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
/clipwise
|
|
101
|
+
> Record a demo of my dashboard at http://localhost:3000
|
|
102
|
+
— click the login button, type credentials, navigate to analytics
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Claude will:
|
|
106
|
+
1. Generate a complete `clipwise.yaml` scenario
|
|
107
|
+
2. Run `npx clipwise validate` to check for errors
|
|
108
|
+
3. Run `npx clipwise record` to produce the MP4
|
|
109
|
+
|
|
110
|
+
### Update
|
|
111
|
+
|
|
112
|
+
Re-run `npx clipwise install-skill` after upgrading clipwise to get the latest skill.
|
|
113
|
+
|
|
83
114
|
## YAML Scenario Format
|
|
84
115
|
|
|
85
116
|
A scenario has 4 sections: metadata, effects, output, and steps.
|
|
@@ -138,6 +169,7 @@ steps:
|
|
|
138
169
|
| `waitForURL` | `url`, `timeout?` | `timeout: 15000` | Wait for URL match |
|
|
139
170
|
| `waitForFunction` | `expression`, `polling?`, `timeout?` | `polling: "raf"`, `timeout: 30000` | Wait for JS expression to be truthy |
|
|
140
171
|
| `waitForResponse` | `url`, `status?`, `timeout?` | `timeout: 30000` | Wait for network response (URL substring match) |
|
|
172
|
+
| `smartWait` | `until`, `selector?`, `timeout?`, `displaySpeed?` | `until: "networkIdle"`, `timeout: 30000`, `displaySpeed: 8` | Smart wait — records real wait, auto-speeds in output |
|
|
141
173
|
|
|
142
174
|
**`waitUntil`** options: `"load"`, `"domcontentloaded"`, `"networkidle"` (default)
|
|
143
175
|
**`state`** options: `"visible"` (default), `"attached"`, `"hidden"`
|
|
@@ -196,6 +228,7 @@ zoom:
|
|
|
196
228
|
# 1.15x | 1.25x | 1.35x | 1.5x | 1.8x
|
|
197
229
|
# scale: 1.25 # Override with a numeric value instead of intensity
|
|
198
230
|
duration: 800 # Zoom animation ms
|
|
231
|
+
easing: spring # spring (natural) | ease-in-out (default)
|
|
199
232
|
autoZoom:
|
|
200
233
|
followCursor: true # Viewport pans to follow cursor position
|
|
201
234
|
transitionDuration: 300
|
|
@@ -210,7 +243,7 @@ zoom:
|
|
|
210
243
|
| `strong` | 1.5× | Clear focus, some context sacrificed |
|
|
211
244
|
| `dramatic` | 1.8× | Maximum emphasis, sparse UIs only |
|
|
212
245
|
|
|
213
|
-
**Smart camera**: Zoom is automatically suppressed during scroll actions to avoid disorienting motion. When `followCursor` is enabled, the focal point smoothly pans to follow cursor position (not just click targets).
|
|
246
|
+
**Smart camera**: Zoom is automatically suppressed during scroll actions to avoid disorienting motion. When `followCursor` is enabled, the focal point smoothly pans to follow cursor position (not just click targets). **Zone-aware zoom** (v0.7.0) merges nearby clicks into continuous zoom zones — no more jarring zoom-out/zoom-in between adjacent interactions. **Spring easing** (`easing: spring`) produces natural, Screen Studio-like camera motion with faster initial response and smooth deceleration.
|
|
214
247
|
|
|
215
248
|
### Cursor
|
|
216
249
|
|
|
@@ -298,6 +331,32 @@ speedRamp:
|
|
|
298
331
|
actionSpeed: 0.8 # Slow factor near clicks
|
|
299
332
|
```
|
|
300
333
|
|
|
334
|
+
### Smart Speed <sup>v0.7.0</sup>
|
|
335
|
+
|
|
336
|
+
Content-aware speed control. Automatically compresses loading/wait periods while keeping meaningful content at normal speed. Detects CSS loading spinners via CDP Animation domain — no configuration needed.
|
|
337
|
+
|
|
338
|
+
```yaml
|
|
339
|
+
effects:
|
|
340
|
+
smartSpeed:
|
|
341
|
+
enabled: true
|
|
342
|
+
waitSpeed: 4 # Speed multiplier for wait/loading periods
|
|
343
|
+
idleSpeed: 4 # Speed multiplier for idle frames
|
|
344
|
+
transitionDuration: 500 # Ease-in/out duration (ms) — loader is visible before fast-forward
|
|
345
|
+
|
|
346
|
+
steps:
|
|
347
|
+
- name: "Submit form"
|
|
348
|
+
actions:
|
|
349
|
+
- action: click
|
|
350
|
+
selector: "#submit-btn"
|
|
351
|
+
- action: smartWait # Records real API wait, auto-compresses in output
|
|
352
|
+
until: selector # networkIdle | selector | domStable
|
|
353
|
+
selector: ".success-toast"
|
|
354
|
+
timeout: 30000
|
|
355
|
+
displaySpeed: 4 # 4x fast-forward (spinner visibly spins faster)
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
**How it works**: `smartWait` records the actual wait (API calls, loading states) at full quality, then smartSpeed compresses those frames in the output. Loading spinners are **auto-detected** via CDP — frames during active `@keyframes spin/rotate/pulse` animations are automatically marked for compression.
|
|
359
|
+
|
|
301
360
|
### Transitions
|
|
302
361
|
|
|
303
362
|
Control how steps transition to each other.
|
|
@@ -357,12 +416,15 @@ audio:
|
|
|
357
416
|
|
|
358
417
|
Measured on **Apple M1 Max (10 cores)** — Pulse Dashboard demo, 44s @ 30fps, 1280×800:
|
|
359
418
|
|
|
360
|
-
| Stage | v0.3.0 | v0.4.0 | v0.5.0 | v0.6.0 |
|
|
361
|
-
|
|
362
|
-
| Recording | 30.8 s | 31.1 s | 31.1 s | 31.1 s |
|
|
363
|
-
| Compose + Encode | 97.2 s | 60.6 s | 60.6 s | 60.6 s |
|
|
364
|
-
| **Total** | **127.9 s** | **91.7 s** | **91.7 s** | **91.7 s** |
|
|
365
|
-
| Frames captured | 1,303 | 902 | 902 | 902 |
|
|
419
|
+
| Stage | v0.3.0 | v0.4.0 | v0.5.0 | v0.6.0 | **v0.7.0** |
|
|
420
|
+
|-------|--------|--------|--------|--------|--------|
|
|
421
|
+
| Recording | 30.8 s | 31.1 s | 31.1 s | 31.1 s | 58.3 s¹ |
|
|
422
|
+
| Compose + Encode | 97.2 s | 60.6 s | 60.6 s | 60.6 s | **39.6 s** |
|
|
423
|
+
| **Total** | **127.9 s** | **91.7 s** | **91.7 s** | **91.7 s** | **97.8 s**¹ |
|
|
424
|
+
| Frames captured | 1,303 | 902 | 902 | 902 | 1,388 |
|
|
425
|
+
| **ms/frame** | **69** | **67** | **67** | **67** | **23** |
|
|
426
|
+
|
|
427
|
+
¹ v0.7.0 recording is longer due to more scenario steps (23 vs 20) and zoom-sustaining click events during typing. Compose throughput improved **3×** (69 → 23 ms/frame) via Sharp pipeline batching.
|
|
366
428
|
|
|
367
429
|
Key optimisations in v0.4.0: concurrent streaming pipeline, static frame deduplication (~33% skipped), per-worker StaticLayers cache, and raw RGBA buffer pipeline.
|
|
368
430
|
|
|
@@ -370,6 +432,8 @@ v0.5.0 focuses on **recording quality**: smooth cursor, zoom intensity presets,
|
|
|
370
432
|
|
|
371
433
|
v0.6.0 focuses on **convention alignment & expressiveness**: gentler defaults (light zoom, normal cursor speed), per-step effects override, new transitions (slide, blur), audio narration, and smart camera (scroll-aware zoom suppression + cursor-following focal point).
|
|
372
434
|
|
|
435
|
+
v0.7.0 focuses on **quality leap**: spring physics zoom, zone-aware zoom continuity, focus point interpolation, `smartWait` + content-aware `smartSpeed`, auto loader detection (CDP Animation), HEVC 10-bit encoding (`-tune animation`), AV1 codec support, and Sharp pipeline batching (5→1 calls/frame).
|
|
436
|
+
|
|
373
437
|
## Output Compression
|
|
374
438
|
|
|
375
439
|
Use the `preset` field to control quality and file size:
|
|
@@ -379,6 +443,7 @@ output:
|
|
|
379
443
|
format: mp4
|
|
380
444
|
fps: 30
|
|
381
445
|
preset: social # social | balanced | archive
|
|
446
|
+
codec: auto # auto | h264 | hevc | av1
|
|
382
447
|
```
|
|
383
448
|
|
|
384
449
|
| Preset | libx264 CRF | HEVC VideoToolbox q:v | Target use case |
|
|
@@ -483,37 +548,6 @@ npx clipwise record my-scenario.yaml -f mp4 -o ./output
|
|
|
483
548
|
|
|
484
549
|
See [PROMPTS.md](./PROMPTS.md) for a ready-to-use prompt template. Copy-paste it to ChatGPT or Claude with your site URL, and get a working YAML scenario back.
|
|
485
550
|
|
|
486
|
-
## Claude Code Skill
|
|
487
|
-
|
|
488
|
-
Clipwise ships a built-in [Claude Code](https://claude.com/claude-code) skill. Once installed, type `/clipwise` in Claude Code to generate YAML scenarios, validate, and record — all through natural language.
|
|
489
|
-
|
|
490
|
-
### Install the skill
|
|
491
|
-
|
|
492
|
-
```bash
|
|
493
|
-
npx clipwise install-skill
|
|
494
|
-
```
|
|
495
|
-
|
|
496
|
-
This copies the skill file to `.claude/skills/clipwise.md` (project-level if `.claude/` exists, otherwise `~/.claude/skills/`).
|
|
497
|
-
|
|
498
|
-
### Usage
|
|
499
|
-
|
|
500
|
-
In any Claude Code session:
|
|
501
|
-
|
|
502
|
-
```
|
|
503
|
-
/clipwise
|
|
504
|
-
> Record a demo of my dashboard at http://localhost:3000
|
|
505
|
-
— click the login button, type credentials, navigate to analytics
|
|
506
|
-
```
|
|
507
|
-
|
|
508
|
-
Claude will:
|
|
509
|
-
1. Generate a complete `clipwise.yaml` scenario
|
|
510
|
-
2. Run `npx clipwise validate` to check for errors
|
|
511
|
-
3. Run `npx clipwise record` to produce the MP4
|
|
512
|
-
|
|
513
|
-
### Update
|
|
514
|
-
|
|
515
|
-
Re-run `npx clipwise install-skill` after upgrading clipwise to get the latest skill.
|
|
516
|
-
|
|
517
551
|
## GitHub Pages
|
|
518
552
|
|
|
519
553
|
Clipwise includes a documentation site and a live demo dashboard in the `docs/` folder. To host it:
|