@remixmate/cli 0.1.0 → 0.1.1

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.
Files changed (122) hide show
  1. package/README.md +100 -83
  2. package/README.zh-CN.md +183 -0
  3. package/dist/handlers/gen-digital-human.d.ts +12 -0
  4. package/dist/handlers/gen-digital-human.js +157 -0
  5. package/dist/handlers/gen-image.js +5 -41
  6. package/dist/handlers/gen-video.d.ts +18 -0
  7. package/dist/handlers/gen-video.js +153 -0
  8. package/dist/handlers/gen-voice.js +2 -12
  9. package/dist/handlers/index.js +4 -2
  10. package/dist/handlers/shared.d.ts +26 -0
  11. package/dist/handlers/shared.js +66 -0
  12. package/dist/http.d.ts +4 -2
  13. package/dist/http.js +5 -3
  14. package/dist/manifest.json +27 -24
  15. package/dist/registry.d.ts +5 -16
  16. package/dist/registry.js +11 -17
  17. package/dist/skill-schema.d.ts +47 -0
  18. package/dist/skill-schema.js +49 -0
  19. package/package.json +5 -4
  20. package/skills/export-jianying/scripts/gen_jianying_draft.py +4 -4
  21. package/skills/gen-digital-human/SKILL.md +23 -46
  22. package/skills/gen-digital-human/skill.json +3 -2
  23. package/skills/gen-digital-human/version.json +1 -1
  24. package/skills/gen-image/SKILL.md +2 -2
  25. package/skills/gen-image/skill.json +2 -1
  26. package/skills/gen-image/version.json +1 -1
  27. package/skills/gen-script/SKILL.md +13 -13
  28. package/skills/gen-script/scripts/gen_script.py +11 -12
  29. package/skills/gen-video/SKILL.md +22 -33
  30. package/skills/gen-video/skill.json +3 -2
  31. package/skills/gen-video/version.json +1 -1
  32. package/skills/gen-voice/SKILL.md +1 -1
  33. package/skills/gen-voice/version.json +1 -1
  34. package/skills/prepare-video-assets/SKILL.md +2 -2
  35. package/skills/prepare-video-assets/skill.json +1 -1
  36. package/skills/render-video/scripts/render_video.py +8 -8
  37. package/skills/{template-bind → template-registry}/README.md +4 -4
  38. package/skills/{template-bind → template-registry}/SKILL.md +14 -12
  39. package/skills/template-registry/scripts/list_templates.py +129 -0
  40. package/skills/{template-bind → template-registry}/scripts/match_template.py +4 -3
  41. package/skills/{template-bind → template-registry}/scripts/registry_loader.py +1 -1
  42. package/skills/{template-bind → template-registry}/scripts/template_paths.py +7 -7
  43. package/skills/{template-bind → template-registry}/skill.json +6 -5
  44. package/skills/template-registry/version.json +7 -0
  45. package/skills/{template-bind → template-registry}/video_dsl/README.md +2 -2
  46. package/skills/{template-bind → template-registry}/video_dsl/runtime/__init__.py +1 -1
  47. package/skills/video-parser/SKILL.md +47 -160
  48. package/skills/video-parser/skill.json +3 -4
  49. package/skills/video-parser/version.json +1 -1
  50. package/skills/web-capture/SKILL.md +407 -116
  51. package/skills/web-capture/scripts/_media_screenshot/__init__.py +21 -0
  52. package/skills/web-capture/scripts/_media_screenshot/bootstrap.py +34 -0
  53. package/skills/web-capture/scripts/_media_screenshot/browser.py +86 -0
  54. package/skills/web-capture/scripts/_media_screenshot/cli_args.py +111 -0
  55. package/skills/web-capture/scripts/_media_screenshot/js/arrow.js +86 -0
  56. package/skills/web-capture/scripts/_media_screenshot/js/caption.js +27 -0
  57. package/skills/web-capture/scripts/_media_screenshot/js/clear_overlay.js +5 -0
  58. package/skills/web-capture/scripts/_media_screenshot/js/cursor_bootstrap.js +26 -0
  59. package/skills/web-capture/scripts/_media_screenshot/js/cursor_hide.js +6 -0
  60. package/skills/web-capture/scripts/_media_screenshot/js/cursor_move.js +12 -0
  61. package/skills/web-capture/scripts/_media_screenshot/js/cursor_ripple.js +25 -0
  62. package/skills/web-capture/scripts/_media_screenshot/js/element_zoom.js +72 -0
  63. package/skills/web-capture/scripts/_media_screenshot/js/element_zoom_restore.js +21 -0
  64. package/skills/web-capture/scripts/_media_screenshot/js/fade_out_overlays.js +10 -0
  65. package/skills/web-capture/scripts/_media_screenshot/js/focus.js +38 -0
  66. package/skills/web-capture/scripts/_media_screenshot/js/highlight.js +97 -0
  67. package/skills/web-capture/scripts/_media_screenshot/js/overlay_bootstrap.js +19 -0
  68. package/skills/web-capture/scripts/_media_screenshot/js/page_zoom_in.js +54 -0
  69. package/skills/web-capture/scripts/_media_screenshot/js/page_zoom_out.js +11 -0
  70. package/skills/web-capture/scripts/_media_screenshot/js/page_zoom_restore.js +13 -0
  71. package/skills/web-capture/scripts/_media_screenshot/js/redact.js +33 -0
  72. package/skills/web-capture/scripts/_media_screenshot/js/scroll.js +26 -0
  73. package/skills/web-capture/scripts/_media_screenshot/js/scroll_through.js +18 -0
  74. package/skills/web-capture/scripts/_media_screenshot/js/sequence.js +76 -0
  75. package/skills/web-capture/scripts/_media_screenshot/js/settled_check.js +15 -0
  76. package/skills/web-capture/scripts/_media_screenshot/js/title_card.js +71 -0
  77. package/skills/web-capture/scripts/_media_screenshot/js_loader.py +14 -0
  78. package/skills/web-capture/scripts/_media_screenshot/overlay.py +17 -0
  79. package/skills/web-capture/scripts/_media_screenshot/recording.py +100 -0
  80. package/skills/web-capture/scripts/_media_screenshot/scenes/__init__.py +39 -0
  81. package/skills/web-capture/scripts/_media_screenshot/scenes/arrow.py +50 -0
  82. package/skills/web-capture/scripts/_media_screenshot/scenes/caption.py +20 -0
  83. package/skills/web-capture/scripts/_media_screenshot/scenes/click.py +35 -0
  84. package/skills/web-capture/scripts/_media_screenshot/scenes/code_lines.py +54 -0
  85. package/skills/web-capture/scripts/_media_screenshot/scenes/focus.py +24 -0
  86. package/skills/web-capture/scripts/_media_screenshot/scenes/highlight.py +54 -0
  87. package/skills/web-capture/scripts/_media_screenshot/scenes/hover.py +28 -0
  88. package/skills/web-capture/scripts/_media_screenshot/scenes/redact.py +32 -0
  89. package/skills/web-capture/scripts/_media_screenshot/scenes/scroll.py +32 -0
  90. package/skills/web-capture/scripts/_media_screenshot/scenes/sequence.py +43 -0
  91. package/skills/web-capture/scripts/_media_screenshot/scenes/title_card.py +20 -0
  92. package/skills/web-capture/scripts/_media_screenshot/scenes/type.py +42 -0
  93. package/skills/web-capture/scripts/_media_screenshot/scenes/wait.py +9 -0
  94. package/skills/web-capture/scripts/_media_screenshot/scenes/zoom.py +72 -0
  95. package/skills/web-capture/scripts/_media_screenshot/screenshot.py +166 -0
  96. package/skills/web-capture/scripts/_media_screenshot/storyboard.py +88 -0
  97. package/skills/web-capture/scripts/_media_screenshot/template.py +119 -0
  98. package/skills/web-capture/scripts/_media_screenshot/trim.py +82 -0
  99. package/skills/web-capture/scripts/record.py +186 -0
  100. package/skills/web-capture/scripts/screenshot.py +94 -0
  101. package/skills/web-capture/skill.json +14 -14
  102. package/skills/web-capture/templates/github-code-tour.json +59 -0
  103. package/skills/web-capture/templates/github-readme-tour.json +77 -0
  104. package/skills/web-capture/templates/github-repo-intro.json +74 -0
  105. package/skills/web-capture/version.json +2 -2
  106. package/dist/handlers/template-bind.d.ts +0 -15
  107. package/dist/handlers/template-bind.js +0 -149
  108. package/skills/gen-digital-human/scripts/gen_digital_human_video.py +0 -574
  109. package/skills/gen-video/scripts/gen_video.py +0 -591
  110. package/skills/template-bind/version.json +0 -7
  111. package/skills/web-capture/scripts/web_capture.py +0 -461
  112. /package/skills/{template-bind → template-registry}/scripts/check_contracts.py +0 -0
  113. /package/skills/{template-bind → template-registry}/scripts/render_job_client.py +0 -0
  114. /package/skills/{template-bind → template-registry}/scripts/sync_registry.py +0 -0
  115. /package/skills/{template-bind → template-registry}/video_dsl/runtime/dsl_validator.py +0 -0
  116. /package/skills/{template-bind → template-registry}/video_dsl/runtime/prompt_enhancer.py +0 -0
  117. /package/skills/{template-bind → template-registry}/video_dsl/runtime/template_binder.py +0 -0
  118. /package/skills/{template-bind → template-registry}/video_dsl/runtime/timeline_compiler.py +0 -0
  119. /package/skills/{template-bind → template-registry}/video_dsl/schema/render-plan-v1alpha1.json +0 -0
  120. /package/skills/{template-bind → template-registry}/video_dsl/schema/template-binding-v1alpha1.json +0 -0
  121. /package/skills/{template-bind → template-registry}/video_dsl/schema/template-definition-v1alpha1.json +0 -0
  122. /package/skills/{template-bind → template-registry}/video_dsl/schema/video-dsl-v1alpha1.json +0 -0
@@ -17,222 +17,109 @@ triggers:
17
17
 
18
18
  # Video Deconstruction Skill
19
19
 
20
- Splits a video into reusable content assets — audio, ASR transcript (with per-word timestamps), scene cuts, keyframe images. Emits a structured asset-manifest JSON.
20
+ Splits a video into reusable content assets — audio, ASR transcript (with per-word timestamps), scene cuts, keyframe images and returns a structured asset-manifest JSON.
21
21
 
22
- ## Dependencies
23
-
24
- - **ffmpeg**: must be installed locally (`brew install ffmpeg`) — used for audio extraction, scene-change detection, and keyframe capture.
25
- - **Python 3**: standard library only, no third-party dependencies.
22
+ The skill entry (`scripts/parse_via_render.py`) runs the deconstruction **through the ab-render HTTP service** (`POST /parse` → poll `POST /parseStatus`). It needs **no local ffmpeg** — the heavy lifting happens server-side and the manifest (with cloud-hosted asset URLs) comes back as JSON on stdout.
26
23
 
27
24
  ## Authentication & environment
28
25
 
29
- There is no dedicated env file; the **process environment** variables of the caller apply. Examples use `python`; on macOS without that alias use `python3`.
26
+ No skill-local env file the executing process inherits the system environment.
30
27
 
31
- - **Enterprise OpenClaw**: auth is injected, **no** `PRIV_TOKEN` / `--priv-token` needed.
32
- - **Other environments**: configure a token — obtain a `PRIV_TOKEN` from your ab-api service. Non-interactive invocations may fail when the token is missing; interactive runs prompt for one.
28
+ - **Enterprise OpenClaw**: auth + service address are injected; nothing to configure.
29
+ - **Other environments**: set `RENDER_API_URL` (the ab-render service) and `PRIV_TOKEN`. Without them the run fails fast with an actionable message.
33
30
 
34
31
  | Env var | Description | Default |
35
32
  |---------|-------------|---------|
36
- | `PRIV_TOKEN` | Tianyan token; overridable with `--priv-token`. | (none) |
37
- | `MM_API_BASE_URL` | API root URL. | `http://localhost:3001/api` |
38
- | `AGENT_NAME` | Optional, sent as the `x-invoke-agent` request header. | (none) |
33
+ | `RENDER_API_URL` | ab-render service base URL (e.g. `http://localhost:3000`). Required. | (none) |
34
+ | `PRIV_TOKEN` | Tianyan token, sent as `X-Priv-Token`. | (none) |
35
+ | `CONVERSATION_ID` | Optional, sent as `x-conversation-id` for file association. | (none) |
39
36
 
40
37
  ## Steps
41
38
 
42
- 1. **Script path**: read the system-injected `Base directory for this skill: <path>` as `<SkillDir>`. Every command below uses `<SkillDir>/scripts/deconstruct_video.py`; never hard-code paths.
43
- 2. **Confirm ffmpeg**: run `ffmpeg -version` to confirm it is installed locally.
44
- 3. **Pick the input**: either a direct video URL or a local file path (one of the two).
45
- 4. **Run the deconstruction**: invoke the script and wait for it to finish.
46
- 5. **Inspect the result**: check `deconstruction.json`, `audio.mp3`, and the `keyframes/` directory in the output folder.
39
+ 1. **Script path**: read the system-injected `Base directory for this skill: <path>` as `<SkillDir>`. The entry is always `<SkillDir>/scripts/parse_via_render.py`; never hard-code paths.
40
+ 2. **Provide a direct video URL** (`--url`). Page links (Douyin / Xiaohongshu share pages) are not supported — pass a direct video file URL.
41
+ 3. **Run and wait**: the script submits the task and polls until it finishes (up to ~10 minutes), printing progress lines.
42
+ 4. **Consume the result**: a JSON asset-manifest is printed to stdout (audio / ASR / scenes / keyframes, with cloud URLs). Save or pipe it as needed.
47
43
 
48
- ### Deconstruct from a URL
44
+ ### Deconstruct a video
49
45
 
50
46
  ```bash
51
- python3 <SkillDir>/scripts/deconstruct_video.py \
52
- --url "https://example.com/video.mp4" \
53
- --output-dir ./output_deconstructed
54
- ```
55
-
56
- ### Deconstruct from a local file
57
-
58
- ```bash
59
- python3 <SkillDir>/scripts/deconstruct_video.py \
60
- --local /path/to/video.mp4 \
61
- --output-dir ./output_deconstructed
47
+ python3 <SkillDir>/scripts/parse_via_render.py \
48
+ --url "https://example.com/video.mp4"
62
49
  ```
63
50
 
64
51
  ### Custom scene-change threshold
65
52
 
66
53
  ```bash
67
- python3 <SkillDir>/scripts/deconstruct_video.py \
54
+ python3 <SkillDir>/scripts/parse_via_render.py \
68
55
  --url "https://example.com/video.mp4" \
69
56
  --scene-threshold 0.4
70
57
  ```
71
58
 
72
- Lower values are more sensitive (more cuts), higher values are looser (fewer cuts). Default is 0.3.
59
+ Lower values are more sensitive (more cuts), higher values looser (fewer cuts). Default `0.3`.
73
60
 
74
- ### Audio + ASR only (skip keyframes)
61
+ ### Skip ASR or keyframes
75
62
 
76
63
  ```bash
77
- python3 <SkillDir>/scripts/deconstruct_video.py \
78
- --url "https://example.com/video.mp4" \
79
- --skip-keyframes
80
- ```
81
-
82
- ### Keyframes only (skip ASR)
64
+ # audio + scenes only (skip keyframes)
65
+ python3 <SkillDir>/scripts/parse_via_render.py --url "https://example.com/video.mp4" --skip-keyframes
83
66
 
84
- ```bash
85
- python3 <SkillDir>/scripts/deconstruct_video.py \
86
- --url "https://example.com/video.mp4" \
87
- --skip-asr
67
+ # keyframes + scenes only (skip ASR)
68
+ python3 <SkillDir>/scripts/parse_via_render.py --url "https://example.com/video.mp4" --skip-asr
88
69
  ```
89
70
 
90
71
  ### JSON pipeline mode
91
72
 
92
73
  ```bash
93
- python3 <SkillDir>/scripts/deconstruct_video.py \
74
+ python3 <SkillDir>/scripts/parse_via_render.py \
94
75
  --url "https://example.com/video.mp4" \
95
76
  --json-output
96
77
  ```
97
78
 
98
- Prints only the final `deconstruction.json` payload to stdout — no progress lines — suitable for piping.
99
-
100
- See every option: `python3 <SkillDir>/scripts/deconstruct_video.py --help`.
79
+ Prints only the final manifest JSON to stdout — no progress lines — suitable for piping into downstream tools.
101
80
 
102
81
  ## Common CLI flags
103
82
 
104
83
  | Flag | Description | Default |
105
84
  |------|-------------|---------|
106
- | `--url` | Remote video URL (mutually exclusive with `--local`). | — |
107
- | `--local` | Local video path (mutually exclusive with `--url`). | — |
108
- | `-o` / `--output-dir` | Output directory. | `./deconstructed_<timestamp>` |
109
- | `--scene-threshold` | Scene-change threshold 0.0–1.0. | `0.3` |
110
- | `--private-token` | Override `privateToken`. | env var |
111
- | `--json-output` | Pipeline mode — JSON-only stdout. | off |
85
+ | `--url` | Direct remote video URL (required). | — |
86
+ | `--scene-threshold` | Scene-change sensitivity 0.0–1.0. | `0.3` |
112
87
  | `--skip-asr` | Skip the ASR step. | off |
113
88
  | `--skip-keyframes` | Skip the keyframe-extraction step. | off |
89
+ | `--json-output` | Pipeline mode — JSON-only stdout. | off |
114
90
 
115
- ## Output layout
116
-
117
- The script writes the following under `--output-dir`:
118
-
119
- ```
120
- <output-dir>/
121
- ├── audio.mp3 # Extracted audio file
122
- ├── deconstruction.json # Asset-manifest JSON
123
- └── keyframes/ # Keyframe images
124
- ├── frame_001.jpg
125
- ├── frame_002.jpg
126
- └── ...
127
- ```
91
+ ## Result manifest shape
128
92
 
129
- ### `deconstruction.json` shape
93
+ `parse_via_render.py` prints the service's `result` payload — a structured manifest whose top-level fields are:
130
94
 
131
95
  ```json
132
96
  {
133
- "source": {
134
- "url": "original URL (if any)",
135
- "localPath": "local video path",
136
- "durationMs": 12345
137
- },
138
- "audio": {
139
- "localPath": "output_dir/audio.mp3",
140
- "url": "uploaded OSS URL"
141
- },
142
- "asr": {
143
- "text": "full recognized transcript",
144
- "duration": 3816,
145
- "utterances": [
146
- {
147
- "text": "per-utterance text",
148
- "startTime": 0,
149
- "endTime": 1000,
150
- "words": [...]
151
- }
152
- ]
153
- },
154
- "scenes": [
155
- {
156
- "index": 0,
157
- "startTimeSec": 0.0,
158
- "endTimeSec": 3.5,
159
- "keyframe": "keyframes/frame_001.jpg"
160
- }
161
- ],
162
- "keyframes": [
163
- {
164
- "index": 0,
165
- "timestampSec": 0.0,
166
- "localPath": "keyframes/frame_001.jpg"
167
- }
168
- ]
97
+ "source": { "url": "original URL", "durationMs": 12345 },
98
+ "audio": { "url": "cloud audio URL" },
99
+ "asr": { "text": "full transcript", "utterances": [ { "text": "...", "startTime": 0, "endTime": 1000, "words": [] } ] },
100
+ "scenes": [ { "index": 0, "startTimeSec": 0.0, "endTimeSec": 3.5, "keyframe": "cloud keyframe URL" } ],
101
+ "keyframes":[ { "index": 0, "timestampSec": 0.0, "url": "cloud keyframe URL" } ]
169
102
  }
170
103
  ```
171
104
 
172
- ## Deconstruction structural analysis
173
-
174
- Reads the deconstruction artifacts and extracts hook, narrative structure, copy pacing, scene composition, etc., emitting a structured analysis report. Script path: `<SkillDir>/scripts/analyze_video.py`.
175
-
176
- The analysis report can be used to:
177
- - Feed an AI to write a new script with the same structure.
178
- - Guide a human re-creator to replicate the video's rhythm.
179
- - Inform downstream template development.
105
+ (Exact fields are defined by the ab-render service; treat the above as representative.)
180
106
 
181
- ### Basic usage
107
+ ## Optional local tools (not the skill entry)
182
108
 
183
- ```bash
184
- python3 <SkillDir>/scripts/analyze_video.py \
185
- -i ./output/deconstructed_xxx/deconstruction.json
186
- ```
187
-
188
- ### Specify the output directory
189
-
190
- ```bash
191
- python3 <SkillDir>/scripts/analyze_video.py \
192
- -i ./output/deconstructed_xxx/ \
193
- -o ./reports/
194
- ```
109
+ Two extra scripts ship alongside the entry for local / offline use. They are **not** invoked by the `video_parser` tool and are **not** the skill entry — call them directly with `python3` only when you specifically need local processing:
195
110
 
196
- ### Pipeline mode
111
+ - **`scripts/deconstruct_video.py`** — a fully local deconstruction alternative that **requires ffmpeg** (`brew install ffmpeg`) and writes `audio.mp3` + `keyframes/` + `deconstruction.json` to an `--output-dir`. Use when there is no ab-render service available. Flags: `--url` / `--local`, `-o/--output-dir`, `--scene-threshold`, `--skip-asr`, `--skip-keyframes`, `--json-output`.
112
+ - **`scripts/analyze_video.py`** — a second stage that reads a `deconstruction.json` (or the manifest above saved to disk) and emits a structural-analysis report (hook, narrative structure, pacing, CTA, …). Flags: `-i/--input`, `-o/--output-dir`, `--json-output`.
197
113
 
198
- ```bash
199
- python3 <SkillDir>/scripts/analyze_video.py \
200
- -i ./output/deconstructed_xxx/ \
201
- --json-output
202
- ```
203
-
204
- Prints only the `analysis.json` payload to stdout, no progress text, suitable for piping.
205
-
206
- ### analyze_video.py flags
207
-
208
- | Flag | Description | Default |
209
- |------|-------------|---------|
210
- | `-i` / `--input` | Path to `deconstruction.json` or its parent directory. | required |
211
- | `-o` / `--output-dir` | Output directory. | same as input |
212
- | `--json-output` | Pipeline mode (JSON-only stdout). | off |
213
-
214
- ### Output files
215
-
216
- `analysis.json`: the structured analysis report. Covers the following dimensions:
217
-
218
- | Field | Description |
219
- |-------|-------------|
220
- | `source` | Original video information (URL, duration). |
221
- | `overview` | Language, scene count, copy length, asset types. |
222
- | `hook` | Opening-hook text, duration, strategy classification. |
223
- | `narrativeStructure` | Per-scene narrative structure (role, duration share, text density). |
224
- | `pacing` | Pacing analysis (scene-duration distribution, rhythm type). |
225
- | `textStructure` | Copy structure (speaking rate, silent gaps, keywords). |
226
- | `audioPattern` | Audio pattern (speech vs. silence ratio). |
227
- | `cta` | CTA detection (closing copy, whether an explicit CTA exists). |
228
- | `assets` | Asset manifest (audio, keyframes). |
114
+ ```bash
115
+ python3 <SkillDir>/scripts/analyze_video.py -i ./deconstruction.json
116
+ ```
229
117
 
230
118
  ## Error handling
231
119
 
232
- - **ffmpeg not installed**: the script detects this and prompts `brew install ffmpeg`.
233
- - **401 / token missing** (non-OpenClaw): check or set the token via the Feishu link above.
120
+ - **`RENDER_API_URL` not configured**: the script exits with a clear message; set the ab-render service URL.
121
+ - **401 / token missing** (non-OpenClaw): set `PRIV_TOKEN`.
234
122
  - **Business `code != 0`**: read the `msg` printed on stderr.
235
- - **Video download failed**: confirm the URL is a direct video link (page links such as Douyin / Xiaohongshu are not supported).
236
- - **ASR timeout**: large files can take a while; the script defaults to a 300-second timeout.
237
- - **No scene change detected**: too-high threshold can yield zero cuts — try lowering `--scene-threshold`.
238
- - **Network**: check connectivity and `MM_API_BASE_URL`.
123
+ - **Video download failed**: confirm the URL is a direct video link (share/page links are not supported).
124
+ - **Timeout**: very long videos may exceed the ~10-minute poll window; retry or pre-trim.
125
+ - **No scene change detected**: a too-high threshold yields zero cuts — lower `--scene-threshold`.
@@ -4,18 +4,17 @@
4
4
  "tier": "tool",
5
5
  "title": "Video Deconstruction",
6
6
  "description": "Video deconstruction: split a video into reusable assets (audio extraction, ASR transcript, keyframe extraction, scene segmentation).",
7
- "envVars": ["PRIV_TOKEN", "MM_API_BASE_URL", "AGENT_NAME", "RENDER_API_URL"],
7
+ "envVars": ["RENDER_API_URL", "PRIV_TOKEN", "CONVERSATION_ID"],
8
8
  "scriptPath": "scripts/parse_via_render.py",
9
9
  "parameters": {
10
10
  "type": "object",
11
11
  "properties": {
12
- "url": { "type": "string", "description": "Remote video URL (or use local)" },
13
- "local": { "type": "string", "description": "Local video path (or use url)" },
12
+ "url": { "type": "string", "description": "Direct remote video URL (required). Share/page links are not supported." },
14
13
  "scene_threshold": { "type": "number", "description": "Scene-cut detection threshold 0.0-1.0 (default 0.3)" },
15
14
  "skip_asr": { "type": "boolean", "description": "Skip the ASR step" },
16
15
  "skip_keyframes": { "type": "boolean", "description": "Skip the keyframe-extraction step" },
17
16
  "json_output": { "type": "boolean", "description": "Pipeline mode — emit JSON only on stdout" }
18
17
  },
19
- "required": []
18
+ "required": ["url"]
20
19
  }
21
20
  }
@@ -2,6 +2,6 @@
2
2
  "skillName": "video-parser",
3
3
  "repoName": "agent-skill-media-maker",
4
4
  "skillId": "553",
5
- "version": "V1",
5
+ "version": "V2",
6
6
  "skillDescription": "视频解构技能,将视频拆解为可复用的内容资产(音频、ASR 文本、关键帧、场景分段)。\n\n当用户提到以下任何需求时,立即使用本 skill:\n- 视频解构、视频拆解、视频分析、解析视频\n- 提取关键帧、提取视频文案、视频转文字\n- 视频内容资产、视频素材提取\n\n即使用户没有明确说「解构」,只要他们想要从视频中提取文案、关键帧或结构化信息,也要使用本 skill。"
7
7
  }