arca-marketing-video 2.3.0 → 2.5.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.md CHANGED
@@ -1,32 +1,41 @@
1
1
  # arca-marketing-video
2
2
 
3
- A brand-driven short-form marketing content kit, packaged as **four individual agent skills**
4
- that share one editable brand profile and asset set. Use any skill on its own, or chain them.
3
+ A brand-driven short-form marketing kit: **four installable Claude Code skills** that share one
4
+ editable brand profile and asset set. Use any skill on its own, or chain them.
5
+
6
+ ## Install (into Claude Code)
5
7
 
6
8
  ```
7
- npm install arca-marketing-video
9
+ npx arca-marketing-video # installs into ./.claude/skills (this project)
10
+ npx arca-marketing-video --global # installs into ~/.claude/skills (all projects)
8
11
  ```
9
12
 
10
- ## The four skills (`skills/`)
13
+ That copies the four skills into your `.claude/skills/` so Claude Code auto-discovers them.
14
+ (If `.claude/skills/` didn't exist before, restart Claude Code once so it starts watching it.)
15
+
16
+ > `npm install arca-marketing-video` alone does **not** register the skills — Claude Code only
17
+ > scans `.claude/skills/`, not `node_modules/`. Run the `npx` command above.
18
+
19
+ ## The four skills
11
20
 
12
21
  | Skill | Use when you want to… |
13
22
  | --- | --- |
14
- | `skills/carousel-generator` | Make a 3–5 slide Instagram carousel (4:5) — slide copy + per-slide image-gen prompts + caption |
15
- | `skills/storyboard-prompt` | Pressure-test a video idea and turn it into a phone-native 3×3 (9-panel) storyboard |
16
- | `skills/video-prompt` | Turn a 3×3 storyboard into realistic vertical UGC video (drives the Wyren MCP; keeps faces consistent) |
17
- | `skills/shorts-editor` | Cut / caption / add graphics to existing footage → a high-retention short (HyperFrames + ffmpeg + faster-whisper) |
23
+ | `carousel-generator` | Make a 3–5 slide Instagram carousel (4:5) |
24
+ | `storyboard-prompt` | Pressure-test a video idea a clean frames-only 3×3 grid + a text breakdown |
25
+ | `video-prompt` | Turn a storyboard into vertical video (drives the Wyren MCP; rebuilds schematic boards with Wyren clips + HyperFrames graphics) |
26
+ | `shorts-editor` | Cut / caption / add graphics to existing footage → a high-retention short |
18
27
 
19
- Each folder has its own `SKILL.md` with YAML frontmatter (`name` + `description`). The shorts
20
- editor also ships `silence_cut.py` and `composition.template.html`.
28
+ After installing, each appears as a skill (e.g. `/carousel-generator`).
21
29
 
22
30
  ## Shared brand profile + assets
23
31
 
24
- Every skill reads brand specifics from one place, so the kit is reusable for any brand:
32
+ All four skills read brand specifics from one place, so the kit is reusable for any brand:
25
33
 
26
- - `brand.md` — the brand profile (name, tone, audience, colors, persona, visual world, logo rules)
27
- - `assets/` — `logo.png`, `characters.png`, `design-guide.png`, `final-cta.png`
34
+ - `_arca-marketing-assets/brand.md` — the brand profile
35
+ - `_arca-marketing-assets/assets/` — `logo.png`, `characters.png`, `design-guide.png`, `final-cta.png`
28
36
 
29
- Skills reference these via `../../brand.md` and `../../assets/`.
37
+ This `_arca-marketing-assets/` folder has no `SKILL.md`, so Claude Code ignores it as a skill; the
38
+ skills reference it via `../_arca-marketing-assets/…`. To retarget to another brand, swap those files.
30
39
 
31
40
  ## Natural chain
32
41
 
@@ -35,11 +44,6 @@ storyboard-prompt → video-prompt → shorts-editor (original video)
35
44
  carousel-generator (independent)
36
45
  ```
37
46
 
38
- ## Retarget to another brand
39
-
40
- Replace `brand.md` with your own profile (keep the field structure) and swap the files in
41
- `assets/`. No skill edits needed.
42
-
43
47
  ## License
44
48
 
45
49
  MIT
package/bin/cli.js ADDED
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ // Installs the four Arca marketing skills into a Claude Code skills directory.
5
+ // npx arca-marketing-video -> ./.claude/skills (this project)
6
+ // npx arca-marketing-video --global -> ~/.claude/skills (all projects)
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+ const os = require('os');
11
+
12
+ const args = process.argv.slice(2);
13
+
14
+ if (args.includes('-h') || args.includes('--help')) {
15
+ process.stdout.write(`
16
+ arca-marketing-video — install the marketing skills into Claude Code
17
+
18
+ Usage:
19
+ npx arca-marketing-video Install into ./.claude/skills (this project)
20
+ npx arca-marketing-video --global Install into ~/.claude/skills (all projects)
21
+ npx arca-marketing-video --help Show this help
22
+
23
+ Installs: carousel-generator, storyboard-prompt, video-prompt, shorts-editor
24
+ (plus a shared brand profile + assets the skills read).
25
+ `);
26
+ process.exit(0);
27
+ }
28
+
29
+ const isGlobal = args.includes('--global') || args.includes('-g');
30
+ const baseDir = isGlobal ? os.homedir() : process.cwd();
31
+ const skillsRoot = path.join(baseDir, '.claude', 'skills');
32
+ const srcSkills = path.join(__dirname, '..', 'skills');
33
+
34
+ if (typeof fs.cpSync !== 'function') {
35
+ process.stderr.write('Error: Node 16.7+ is required (fs.cpSync). Please upgrade Node.\n');
36
+ process.exit(1);
37
+ }
38
+
39
+ const skillsRootExisted = fs.existsSync(skillsRoot);
40
+ fs.mkdirSync(skillsRoot, { recursive: true });
41
+
42
+ const entries = fs
43
+ .readdirSync(srcSkills, { withFileTypes: true })
44
+ .filter((d) => d.isDirectory());
45
+
46
+ const installedSkills = [];
47
+ for (const dir of entries) {
48
+ const from = path.join(srcSkills, dir.name);
49
+ const to = path.join(skillsRoot, dir.name);
50
+ fs.rmSync(to, { recursive: true, force: true });
51
+ fs.cpSync(from, to, { recursive: true });
52
+ if (!dir.name.startsWith('_')) installedSkills.push(dir.name);
53
+ }
54
+
55
+ process.stdout.write(`\n✓ Installed ${installedSkills.length} Arca marketing skills into ${skillsRoot}\n`);
56
+ for (const name of installedSkills.sort()) process.stdout.write(` • ${name}\n`);
57
+ process.stdout.write(` (+ shared brand profile & assets in _arca-marketing-assets)\n`);
58
+
59
+ if (!skillsRootExisted) {
60
+ process.stdout.write(
61
+ `\nNote: .claude/skills was just created — restart Claude Code once so it starts watching the folder.\n\n`
62
+ );
63
+ } else {
64
+ process.stdout.write(
65
+ `\nThe skills are available now — Claude Code detects skill changes live.\n\n`
66
+ );
67
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "arca-marketing-video",
3
- "version": "2.3.0",
4
- "description": "Brand-driven short-form marketing content kit: four individual agent skills (carousel generator, storyboard prompt, video prompt, shorts editor) plus a shared brand profile and assets.",
3
+ "version": "2.5.0",
4
+ "description": "Brand-driven short-form marketing content kit: four installable Claude Code skills (carousel generator, storyboard prompt, video prompt, shorts editor) plus a shared brand profile and assets. Run `npx arca-marketing-video` to install them into .claude/skills.",
5
5
  "keywords": [
6
6
  "skill",
7
7
  "claude",
@@ -18,10 +18,15 @@
18
18
  ],
19
19
  "author": "aobalitaan",
20
20
  "license": "MIT",
21
+ "bin": {
22
+ "arca-marketing-video": "bin/cli.js"
23
+ },
24
+ "engines": {
25
+ "node": ">=16.7"
26
+ },
21
27
  "files": [
28
+ "bin/",
22
29
  "skills/",
23
- "brand.md",
24
- "assets/",
25
30
  "README.md",
26
31
  "LICENSE"
27
32
  ]
@@ -6,7 +6,7 @@ description: Use when creating an Instagram (or LinkedIn) image carousel of 3–
6
6
  # Carousel Generator
7
7
 
8
8
  ## Brand profile (read first)
9
- Read `../../brand.md` first and apply it throughout: name-usage rules, tone, audience, positioning, color palette, persona, visual world, recurring objects, and logo rules. Brand assets live in `../../assets/` (`logo.png`, `characters.png`, `design-guide.png`, `final-cta.png`). Use the supplied logo only — never invent or distort it. Swap `../../brand.md` + `../../assets/` to retarget this skill to another brand.
9
+ Read `../_arca-marketing-assets/brand.md` first and apply it throughout: name-usage rules, tone, audience, positioning, color palette, persona, visual world, recurring objects, and logo rules. Brand assets live in `../_arca-marketing-assets/assets/` (`logo.png`, `characters.png`, `design-guide.png`, `final-cta.png`). Use the supplied logo only — never invent or distort it. Swap `../_arca-marketing-assets/brand.md` + `../_arca-marketing-assets/assets/` to retarget this skill to another brand.
10
10
 
11
11
  ---
12
12
 
@@ -18,15 +18,15 @@ INTAKE — ASK FIRST:
18
18
  Before writing anything, ask the user for the inputs you need, then wait for their answers:
19
19
  1. TOPIC / CONCEPT — the vague idea or angle for this carousel.
20
20
  2. TARGET MARKET / AUDIENCE — who this is for and what they struggle with.
21
- 3. BRAND PROFILE — the attached or pasted ../../brand.md (brand name, positioning, tone, visual world, colors, persona, recurring objects, hook/CTA examples).
21
+ 3. BRAND PROFILE — the attached or pasted ../_arca-marketing-assets/brand.md (brand name, positioning, tone, visual world, colors, persona, recurring objects, hook/CTA examples).
22
22
  If the user leaves something blank, make smart assumptions and state them briefly. Do not stall unless the topic is impossible to understand.
23
23
 
24
24
  INPUTS / VARIABLES TO FILL IN:
25
- - BRAND PROFILE: [attach or paste ../../brand.md]
25
+ - BRAND PROFILE: [attach or paste ../_arca-marketing-assets/brand.md]
26
26
  - TOPIC: [the vague topic or concept]
27
27
  - TARGET MARKET: [the audience this carousel targets]
28
28
 
29
- All brand specifics — brand name and how to write it, audience, positioning, core idea, tone, visual world, color palette, persona, and recurring objects — come from the attached BRAND PROFILE (../../brand.md). Read it first and apply it throughout. Do not hardcode any single brand’s details into this template.
29
+ All brand specifics — brand name and how to write it, audience, positioning, core idea, tone, visual world, color palette, persona, and recurring objects — come from the attached BRAND PROFILE (../_arca-marketing-assets/brand.md). Read it first and apply it throughout. Do not hardcode any single brand’s details into this template.
30
30
 
31
31
  BRAND, AUDIENCE, POSITIONING, AND TONE:
32
32
  See the attached BRAND PROFILE. Follow its name-usage rules, target audience, positioning, "should feel like / should not feel like" guidance, and tone exactly.
@@ -12,8 +12,8 @@ on-screen graphics / zooms / SFX layered in, or a brand splash / end card.
12
12
  Built on HyperFrames + ffmpeg + faster-whisper.
13
13
 
14
14
  ## Brand profile (read first)
15
- Read `../../brand.md` for the brand's colors, logo rules, and persona. The brand-splash end card
16
- uses `../../assets/final-cta.png`; the logo (`../../assets/logo.png`) may appear as a subtle
15
+ Read `../_arca-marketing-assets/brand.md` for the brand's colors, logo rules, and persona. The brand-splash end card
16
+ uses `../_arca-marketing-assets/assets/final-cta.png`; the logo (`../_arca-marketing-assets/assets/logo.png`) may appear as a subtle
17
17
  in-world mark. `silence_cut.py` and `composition.template.html` are co-located in this skill folder.
18
18
  This skill is the final edit stage after `video-prompt` (or runs standalone on any raw footage).
19
19
 
@@ -55,7 +55,7 @@ Neither signal alone works:
55
55
  - **Graphic chips:** glass pill + inline-SVG icon + short label, in the **lower-mid torso band (~y1170 of 1920)** — below the face, above the captions. "Over the people" is fine; over the face is not. One per beat, pop in / hold / pop out.
56
56
  - **Zoom punch-ins:** scale the plate wrapper (base ~1.04) to ~1.10-1.14 on emphasis lines, ease back. Never scale below 1.0 (reveals letterbox edges). Cover-fit the plate.
57
57
  - **SFX:** riser on the very first frame; soft whoosh on hard cuts / speaker changes; pop on each chip entrance. Keep dialogue front (SFX vol 0.25-0.35). Mixkit free SFX (`mixkit.co/free-sound-effects/<cat>/` → `assets.mixkit.co/.../<id>-preview.mp3`) is a reliable no-key source.
58
- - **Brand splash:** 3s end card (a still image — use `../../assets/final-cta.png`), brought in by a quick white flash + one signature SFX, with a subtle ken-burns zoom. Reserve that SFX for the splash only.
58
+ - **Brand splash:** 3s end card (a still image — use `../_arca-marketing-assets/assets/final-cta.png`), brought in by a quick white flash + one signature SFX, with a subtle ken-burns zoom. Reserve that SFX for the splash only.
59
59
 
60
60
  ## Gotchas
61
61
  | Symptom | Fix |
@@ -6,7 +6,7 @@ description: Use when pressure-testing a short-form video idea and turning it in
6
6
  # Storyboard Prompt
7
7
 
8
8
  ## Brand profile (read first)
9
- Read `../../brand.md` first and apply its name-usage rules, tone, audience, persona, logo rules, and colors throughout. Brand assets live in `../../assets/` (`logo.png`, `characters.png`, `design-guide.png`, `final-cta.png`). Use the supplied logo only — never invent or distort it. The natural next step after this skill is `video-prompt` (turn the storyboard into video). Swap `../../brand.md` + `../../assets/` to retarget to another brand.
9
+ Read `../_arca-marketing-assets/brand.md` first and apply its name-usage rules, tone, audience, persona, logo rules, and colors throughout. Brand assets live in `../_arca-marketing-assets/assets/` (`logo.png`, `characters.png`, `design-guide.png`, `final-cta.png`). Use the supplied logo only — never invent or distort it. The natural next step after this skill is `video-prompt` (turn the storyboard into video). Swap `../_arca-marketing-assets/brand.md` + `../_arca-marketing-assets/assets/` to retarget to another brand.
10
10
 
11
11
  ---
12
12
 
@@ -25,7 +25,7 @@ Before doing anything, ask the user for the inputs you need, then wait for their
25
25
  1. RAW CONCEPT — the video idea to pressure-test and storyboard.
26
26
  2. VIDEO TYPE / STYLE — UGC / phone-shot (default), cinematic / movie-trailer, animation, motion-graphics, product film, skit, etc. This drives the LOOK and the first-5-seconds cold-open strategy.
27
27
  3. TARGET MARKET / AUDIENCE — who this is for.
28
- 4. BRAND PROFILE — the attached or pasted ../../brand.md (brand name, positioning, tone, persona, logo rules, colors).
28
+ 4. BRAND PROFILE — the attached or pasted ../_arca-marketing-assets/brand.md (brand name, positioning, tone, persona, logo rules, colors).
29
29
  5. TARGET FORMAT — TikTok / Instagram Reels / YouTube Shorts.
30
30
  6. PREFERRED LENGTH — or let you recommend one.
31
31
  Ask first. Only make smart, briefly stated assumptions for whatever is still missing. Do not stall unless the concept is impossible to understand.
@@ -59,10 +59,10 @@ Raw concept:
59
59
  [PASTE THE CONCEPT HERE]
60
60
 
61
61
  Brand:
62
- [BRAND NAME — see the attached brand profile (../../brand.md)]
62
+ [BRAND NAME — see the attached brand profile (../_arca-marketing-assets/brand.md)]
63
63
 
64
64
  Brand profile:
65
- [ATTACH OR PASTE ../../brand.md — positioning, tone, persona, logo rules, colors]
65
+ [ATTACH OR PASTE ../_arca-marketing-assets/brand.md — positioning, tone, persona, logo rules, colors]
66
66
 
67
67
  Logo asset:
68
68
  Use the attached brand logo if available.
@@ -322,7 +322,7 @@ For each hook, provide:
322
322
  - how to make it more visual
323
323
  - whether it can be understood without sound
324
324
  - stickiness: is the line catchy, sharp, and quotable (a phrase the viewer could repeat)?
325
- - brand fit: does the message ladder to the brand's positioning, audience, and tone (per ../../brand.md)?
325
+ - brand fit: does the message ladder to the brand's positioning, audience, and tone (per ../_arca-marketing-assets/brand.md)?
326
326
 
327
327
  Then score the hooks on three axes — scroll-stop power, stickiness, and brand fit — rank the top 3, and choose the single strongest hook (highest combined, never high scroll-stop but off-brand).
328
328
 
@@ -332,7 +332,7 @@ The chosen hook must be:
332
332
  - fast
333
333
  - emotionally clear
334
334
  - catchy and memorable — a line or image worth repeating, not just clear
335
- - on-brand — in the brand's voice and aligned to its message (see ../../brand.md), never generic
335
+ - on-brand — in the brand's voice and aligned to its message (see ../_arca-marketing-assets/brand.md), never generic
336
336
  - a true promise that sets up the brand's value (not a clever line that goes nowhere)
337
337
  - easy to execute in the chosen video type
338
338
  - not corporate
@@ -414,13 +414,13 @@ Create an ending that naturally connects back to the first frame if possible.
414
414
 
415
415
  BRAND MESSAGING ALIGNMENT (non-negotiable)
416
416
  Pull the brand's positioning, core idea, tone, target audience, audience pain, and hook/CTA examples
417
- from ../../brand.md, and make the polished concept ladder to them:
417
+ from ../_arca-marketing-assets/brand.md, and make the polished concept ladder to them:
418
418
  - The hook and core promise must speak to the brand's exact audience and the specific pain it solves —
419
419
  not a generic version of the topic.
420
420
  - The payoff must implicitly prove the brand's value (the transformation the brand enables), so the
421
421
  viewer connects the idea to what the brand does — without it feeling like an ad.
422
422
  - Tone must match the brand's voice: keep its do's and avoid its don'ts (no hype / buzzwords / cringe,
423
- or whatever ../../brand.md specifies).
423
+ or whatever ../_arca-marketing-assets/brand.md specifies).
424
424
  - The CTA should echo the brand's CTA style and lead softly and naturally to the brand.
425
425
  - Treat the brand's hook/CTA examples as a springboard, not copy-paste — write a fresher, sharper line.
426
426
  State in ONE line how the chosen hook + payoff + CTA map to the brand's message.
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: video-prompt
3
- description: Use when turning a 3×3 storyboard into a finished vertical short-form video of any type (UGC, cinematic / movie-trailer, animation, product film, etc.) via the Wyren MCP — picking image/video models and resolutions, optimizing the TikTok first 5 seconds, keeping character faces consistent across shots, and generating ≤15s clips. Triggers on "make the video from this storyboard", "generate the short", "render the clips". Part of the arca-marketing-video kit.
3
+ description: Use when turning a storyboard into a finished vertical short-form video of any type (UGC, cinematic / movie-trailer, animation, product film, etc.). Handles both photographic storyboards (clean and use as start frames) and schematic / annotated plans (do NOT upscale 1:1 — rebuild patterned to them using Wyren clips for live footage + HyperFrames for on-screen graphics). Drives the Wyren MCP — picks image/video models and resolutions, optimizes the TikTok first 5 seconds, and keeps character faces consistent across shots. Triggers on "make the video from this storyboard", "generate the short", "render the clips". Part of the arca-marketing-video kit.
4
4
  ---
5
5
 
6
6
  # Video Prompt
7
7
 
8
8
  ## Brand profile (read first)
9
- Read `../../brand.md` first and apply its name-usage, persona, logo rules, and colors. Brand assets live in `../../assets/` — feed `../../assets/characters.png` (persona) and `../../assets/logo.png` to the image/video models for consistency; use the supplied logo only, never invent or distort it. **This skill drives the Wyren MCP — load the `wyren` skill before any `mcp__wyren__*` call.** It pairs with `storyboard-prompt` (upstream) and `shorts-editor` (downstream edit). Swap `../../brand.md` + `../../assets/` to retarget to another brand.
9
+ Read `../_arca-marketing-assets/brand.md` first and apply its name-usage, persona, logo rules, and colors. Brand assets live in `../_arca-marketing-assets/assets/` — feed `../_arca-marketing-assets/assets/characters.png` (persona) and `../_arca-marketing-assets/assets/logo.png` to the image/video models for consistency; use the supplied logo only, never invent or distort it. **This skill drives the Wyren MCP — load the `wyren` skill before any `mcp__wyren__*` call.** It pairs with `storyboard-prompt` (upstream) and `shorts-editor` (downstream edit). Swap `../_arca-marketing-assets/brand.md` + `../_arca-marketing-assets/assets/` to retarget to another brand.
10
10
 
11
11
  ---
12
12
 
@@ -14,9 +14,9 @@ Create a realistic vertical short-form video from the provided 3x3 storyboard re
14
14
 
15
15
  INTAKE — ASK FIRST:
16
16
  Before generating, ask the user for any of these that are not already provided, then wait for their answers:
17
- 1. STORYBOARD REFERENCE — the 3x3 storyboard image (and shot notes if available).
17
+ 1. STORYBOARD REFERENCE — the storyboard image (and shot notes if available). Note whether it is PHOTOGRAPHIC frames or a SCHEMATIC / annotated plan (panel numbers, notes boxes, mock UI) — see STORYBOARD INTERPRETATION; it changes how the video is built.
18
18
  2. VIDEO TYPE / STYLE — UGC / phone-shot (default), cinematic / movie-trailer, animation, motion-graphics, product film, skit, etc. Should match the storyboard's declared type. Drives the LOOK and the first-5-seconds cold open. If UGC, the phone-shot styling below applies; if not, follow that type's craft.
19
- 3. BRAND PROFILE — the attached or pasted ../../brand.md (brand name, logo rules, persona, colors).
19
+ 3. BRAND PROFILE — the attached or pasted ../_arca-marketing-assets/brand.md (brand name, logo rules, persona, colors).
20
20
  4. TARGET MARKET / AUDIENCE — who this is for.
21
21
  5. VIDEO SEGMENT — FULL VIDEO / PART 1 / PART 2.
22
22
  6. TARGET DURATION.
@@ -26,7 +26,12 @@ Before generating, ask the user for any of these that are not already provided,
26
26
  10. NATIVE AUDIO — whether the video model should synthesize dialogue/sound (only some models support it). Default: on if the chosen model supports `sound`.
27
27
  Ask first. Only make smart, briefly stated assumptions for whatever is still missing, and state them briefly. If the user names a budget or "cheapest/fastest", pick the model tier accordingly and say which you picked.
28
28
 
29
- Use the storyboard as the primary visual anchor. Crop the frames, upscale and clean them using image AI and then use those as the first frames. You may generate clips separately video merge them (or merge them using Hyperframes), or you may also do multishot for Video AI decide automatically and smartly.
29
+ Use the storyboard as the PLAN, not as footage to copy. First classify it (see STORYBOARD
30
+ INTERPRETATION below): if the panels are photographic, clean them and use them as start frames; if
31
+ they are schematic / annotated mockups (panel numbers, notes boxes, drawn phone bezels, mock UI), do
32
+ NOT upscale or reproduce them 1:1 — rebuild the video patterned to them, using Wyren clips for the
33
+ live footage and HyperFrames for the on-screen graphics. You may generate clips separately and merge
34
+ them (Wyren or HyperFrames), or use video-model multishot — decide smartly.
30
35
 
31
36
  VIDEO TYPE SCOPE — read before applying the rules below.
32
37
  This skill makes ANY video type. The LOOK follows the chosen VIDEO TYPE; the TikTok retention rules
@@ -43,6 +48,42 @@ rules) apply to EVERY type.
43
48
  — render in the chosen type's craft (e.g. for a trailer: cinematic lighting, fast cutting, scale).
44
49
  Still keep the retention rules, continuity locks, brand/logo rules, and the first-5s cold open.
45
50
 
51
+ STORYBOARD INTERPRETATION — PHOTOGRAPHIC vs SCHEMATIC (read before generating)
52
+
53
+ Storyboards arrive in two forms. Detect which you have before touching Wyren.
54
+
55
+ A) PHOTOGRAPHIC frames — each cell is a real / clean image of the actual scene (people, environment),
56
+ like the clean frame grid the `storyboard-prompt` skill now outputs.
57
+ → Crop each frame to 9:16 and clean / upscale it into a start frame (GENERATION SETTINGS Step A),
58
+ keeping the face, then use it as the videoAI startFrame. This is the 1:1-friendly path.
59
+
60
+ B) SCHEMATIC / ANNOTATED storyboard — each panel is a rough PLAN: a drawn phone bezel, small webcam
61
+ tiles, mock UI cards, labels, sticky notes, captions, and a notes box (SCENE / TIME / SHOT / ANGLE
62
+ / MOVE / ACTION / DIALOGUE / AUDIO / TRANSITION / RETENTION / PHONE REALISM). The example
63
+ "AI Operator Interview" sheet is exactly this kind.
64
+ → Treat it strictly as a SHOT PLAN, never as pixels. Do NOT upscale it, do NOT reproduce panels
65
+ 1:1, and never render the panel numbers, "Panel N" labels, notes boxes, drawn bezels, or the
66
+ panel's rough mock graphics as-is into the video. Instead REBUILD each beat:
67
+ - Read the panel's SCENE / ACTION / SHOT / ANGLE / MOVE / DIALOGUE / AUDIO / TRANSITION /
68
+ RETENTION as the brief for that shot.
69
+ - Generate the LIVE FOOTAGE with Wyren (people, faces, desk, reactions, real environment, camera
70
+ move) using the recurring character profile for face consistency and a fresh start frame
71
+ DESIGNED for that shot via image AI — not the schematic panel.
72
+ - Build the ON-SCREEN GRAPHICS with HyperFrames and composite them over the Wyren footage: UI
73
+ cards, data / deck mockups, split-desk labels, chips, checklists, route-map lines, captions,
74
+ progress arcs, a REC indicator, the logo — anything that is a graphic, not live action.
75
+ - Match each panel's layout and intent (what graphic sits where, what the person is doing), but
76
+ realize it as real footage + clean motion graphics in the chosen VIDEO TYPE's look.
77
+
78
+ WHO MAKES WHAT (schematic path):
79
+ - Wyren videoAI → live-action clips: people, faces, reactions, hands, environment, props, camera move.
80
+ - Wyren imageAI → designed start frames and any photographic plates feeding the clips.
81
+ - HyperFrames → all overlay graphics, captions, chips, UI / data mockups, transitions, logo, splash,
82
+ composited on top of the clips (the same graphics layer the `shorts-editor` skill uses).
83
+ Keep diegetic vs overlay clear: a screen the actor really looks at can be a graphic comped onto the
84
+ device; floating captions / chips are HyperFrames overlays. Never bake storyboard annotations into the
85
+ video. If you are unsure which form the storyboard is, ask the user before generating.
86
+
46
87
  CORE OUTPUT
47
88
 
48
89
  Generate a finished vertical short-form video with:
@@ -67,13 +108,18 @@ options with `mcp__wyren__list_models` and `mcp__wyren__get_model_capabilities`
67
108
  the lists below are a current snapshot, not a contract, and per-model resolution/duration/startFrame
68
109
  support changes.
69
110
 
70
- Step A — clean storyboard frames into start frames (image model, `imageAI` node):
71
- - Crop each storyboard panel to 9:16, then upscale/clean it into a usable first frame.
111
+ Step A — produce a start frame per shot (image model, `imageAI` node):
112
+ - PHOTOGRAPHIC storyboard (path A): crop each panel to 9:16, then upscale/clean it into a usable
113
+ first frame.
114
+ - SCHEMATIC storyboard (path B): do NOT upscale the panel. Use image AI to DESIGN a new start frame
115
+ for that shot from the character profile + the panel's brief (scene, action, framing), so the frame
116
+ is real-looking footage, not a redraw of the mockup. The panel's mock UI becomes a HyperFrames
117
+ overlay later, not part of this start frame.
72
118
  - **Keep the face.** When upscaling/cleaning with the image model, instruct it to PRESERVE the
73
119
  existing person's identity — same face, hair, age, build, and wardrobe — and only improve quality
74
120
  (sharpen, denoise, fix artifacts). Do not let it redraw or beautify into a different face. Use an
75
121
  image-edit-capable model (Nanobanana / Nanobanana Pro accept image input) and pass the panel plus
76
- the character profile (and `../../assets/characters.png`) as references, with a prompt like "enhance and
122
+ the character profile (and `../_arca-marketing-assets/assets/characters.png`) as references, with a prompt like "enhance and
77
123
  clean this frame, keep the exact same face and person, do not change identity." This face-preserving
78
124
  upscale is what makes the per-shot start frames consistent across a multishot/multi-clip video.
79
125
  - Image models (category "image"): Nanobanana (Gemini 2.5 Flash Image, 1K, image input, default),
@@ -81,7 +127,7 @@ Step A — clean storyboard frames into start frames (image model, `imageAI` nod
81
127
  persona/logo consistent), Imagen 4 Fast / Standard / Ultra (text-only, 1K–2K, no image input).
82
128
  - Image sizes: 1K / 2K / 4K depending on model. Aspect ratios: 1:1, 4:3, 9:16, 16:9.
83
129
  - Default: Nanobanana Pro at 2K (image input + multi-reference keeps character + logo locked).
84
- To feed the persona and logo, pass `../../assets/characters.png` and `../../assets/logo.png` as reference images.
130
+ To feed the persona and logo, pass `../_arca-marketing-assets/assets/characters.png` and `../_arca-marketing-assets/assets/logo.png` as reference images.
85
131
 
86
132
  Step B — generate the clips (video model, `videoAI` node):
87
133
  - Video models (category "video") and their key knobs:
@@ -101,12 +147,18 @@ Step B — generate the clips (video model, `videoAI` node):
101
147
 
102
148
  Wyren execution flow (per the wyren skill's policy — load it before any `mcp__wyren__*` call):
103
149
  1. `list_models` + `get_model_capabilities` to lock the exact image/video model, resolution, mode, duration.
104
- 2. `build_graph`: `imageInput` (storyboard frame, characters.png, logo.png) → `imageAI` (clean/upscale) →
105
- `videoAI` (the chosen model/resolution/mode/duration). Use multi-shot or per-clip nodes per the split rule.
150
+ 2. `build_graph`: `imageInput` (start-frame source, characters.png, logo.png) → `imageAI` (path A: clean/
151
+ upscale the photo panel; path B: design a fresh start frame) → `videoAI` (the chosen model/resolution/
152
+ mode/duration). Use multi-shot or per-clip nodes per the split rule.
106
153
  3. `validate_workflow` — resolve warnings with the user.
107
154
  4. Estimate cost with `get_pricing` (chain mode) / `estimate_product_cost`; get the user's OK to spend.
108
155
  5. `run_workflow` (`userConfirmed: true`), then poll `get_workflow_run_status` every 5s until terminal.
109
- 6. Pull results with `get_node_outputs`. Merge multi-clip output (Wyren or HyperFrames) into the final cut.
156
+ 6. Pull the clips with `get_node_outputs`.
157
+ 7. GRAPHICS PASS (HyperFrames) — build the on-screen overlay graphics the storyboard calls for (UI/data
158
+ cards, chips, captions, checklists, route maps, logo, transitions) and composite them over the Wyren
159
+ clips. For a SCHEMATIC storyboard this pass is required (the mock UI in the panels lives here, not in
160
+ the footage). Hand off to the `shorts-editor` skill, which owns this HyperFrames graphics + master step.
161
+ 8. Merge the clips + graphics into the final cut.
110
162
 
111
163
  RECURRING CHARACTER CONSISTENCY (multishot / multi-clip)
112
164
 
@@ -117,8 +169,8 @@ FIRST, before generating any shot. Do this for each recurring character (e.g. th
117
169
 
118
170
  Step 0 — build a character profile BEFORE any shot:
119
171
  1. Generate a character profile / face reference with the image model. Use **Nanobanana Pro**
120
- (up to 14 reference images, up to 4K) seeded with `../../assets/characters.png` and the persona
121
- description from `../../brand.md`. Produce a clean reference: a front face + a 3/4 face (and a
172
+ (up to 14 reference images, up to 4K) seeded with `../_arca-marketing-assets/assets/characters.png` and the persona
173
+ description from `../_arca-marketing-assets/brand.md`. Produce a clean reference: a front face + a 3/4 face (and a
122
174
  head-to-waist) of the SAME person — consistent face, hair, skin, age, build, and wardrobe —
123
175
  rendered in the casual phone-UGC look (natural skin texture, real lighting), NOT glamour/studio.
124
176
  One profile image per recurring character.
@@ -173,10 +225,10 @@ Storyboard breakdown or shot notes:
173
225
  [PASTE BREAKDOWN HERE]
174
226
 
175
227
  Brand:
176
- [BRAND NAME — see brand profile (../../brand.md)]
228
+ [BRAND NAME — see brand profile (../_arca-marketing-assets/brand.md)]
177
229
 
178
230
  Brand profile:
179
- [ATTACH OR PASTE ../../brand.md — brand name, logo rules, persona, colors]
231
+ [ATTACH OR PASTE ../_arca-marketing-assets/brand.md — brand name, logo rules, persona, colors]
180
232
 
181
233
  Logo asset:
182
234
  Use the supplied brand logo only if available.