@facelessad/mcp 2.2.0 → 2.3.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 +15 -0
- package/SKILL.md +35 -0
- package/index.js +5 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -61,6 +61,21 @@ for the text layer drawn over the product video.
|
|
|
61
61
|
Videos build in the background (3–10 min); the assistant polls
|
|
62
62
|
`facelessad_get_video`. You are only charged for steps that succeed.
|
|
63
63
|
|
|
64
|
+
## 2.3.0 — visual_direction_refine
|
|
65
|
+
|
|
66
|
+
`facelessad_create_video` takes `visual_direction_refine` on animated-ad and
|
|
67
|
+
music-video: a preset id (`metaphoric`, `realistic`, `dramatic`, `calm`,
|
|
68
|
+
`playful`, `dark`, `bright`, `magical` — `facelessad_list_tools` returns them
|
|
69
|
+
under `visual_direction_refine.presets`) or your own instruction up to 300
|
|
70
|
+
characters. It reshapes how the visual story is told, not how it looks, and is
|
|
71
|
+
applied on top of `visual_direction` if given, otherwise on the generated one.
|
|
72
|
+
Free of charge; an error on other tools, never ignored.
|
|
73
|
+
|
|
74
|
+
`layout` (same two tools) picks the card layout — `A`, `HA`, `AC`, `HAC`,
|
|
75
|
+
`AIA`, `HAIA`, `AIAC`, `HAIAC`. Hook and CTA cards you chose always stay; the
|
|
76
|
+
data card is dropped when the video is too short, and the response says so
|
|
77
|
+
(`layout.applied`, `layout.notice`). `facelessad_list_tools` lists them.
|
|
78
|
+
|
|
64
79
|
## 1.2.0 — text files as materials + agent skill
|
|
65
80
|
|
|
66
81
|
The package now ships `SKILL.md` — the same agent skill as @facelessad/cli —
|
package/SKILL.md
CHANGED
|
@@ -150,6 +150,8 @@ out is chosen for you** from the materials.
|
|
|
150
150
|
| `voice_over` | force narration on or off where the tool allows a choice |
|
|
151
151
|
| `voiceover_text` | your own narration, word for word (see below) |
|
|
152
152
|
| `visual_direction` | how it should look and what happens, max 600. Animated Ad, Character, Music Video, Product Showcase |
|
|
153
|
+
| `visual_direction_refine` | how the story is TOLD, not how it looks: a preset id or your own instruction, max 300. Animated Ad, Music Video. Free |
|
|
154
|
+
| `layout` | card layout: A, HA, AC, HAC, AIA, HAIA, AIAC, HAIAC — hook/CTA stay, data card drops if too short. Animated Ad, Music Video |
|
|
153
155
|
| `hook_text` | your own first-frame card text, max 120 |
|
|
154
156
|
| `cta` | the call to action it ends on |
|
|
155
157
|
| `brand_name` / `brand_color` | brand as said and shown; colour as six-digit hex |
|
|
@@ -174,6 +176,39 @@ or video-banner.
|
|
|
174
176
|
`visual_direction` steers the storyboard and `hook_text` the first frame.
|
|
175
177
|
Neither replaces the style: the look still comes from `style`/`custom_style`.
|
|
176
178
|
|
|
179
|
+
## Refining the visual story (optional)
|
|
180
|
+
|
|
181
|
+
`visual_direction_refine` reshapes **how the visual story is told** — its
|
|
182
|
+
narrative device, scale, tempo, mood, what the product's effect leads to — not
|
|
183
|
+
how it looks. It is applied on top of `visual_direction` if you gave one, and
|
|
184
|
+
otherwise on the visual direction the script writer generates, so you do not
|
|
185
|
+
need to author one yourself: an intent is enough.
|
|
186
|
+
|
|
187
|
+
Two forms, no guessing between them:
|
|
188
|
+
- a preset id — `metaphoric`, `realistic`, `dramatic`, `calm`, `playful`,
|
|
189
|
+
`dark`, `bright`, `magical` (`facelessad_list_tools` returns them under
|
|
190
|
+
`visual_direction_refine.presets` with one-line descriptions)
|
|
191
|
+
- any other text (max 300 characters) — your own instruction, used as written
|
|
192
|
+
|
|
193
|
+
Animated Ad and Music Video only; on other tools it is an error, not ignored.
|
|
194
|
+
Free of charge. Art-style words (palette, 3D, watercolor…) belong in
|
|
195
|
+
`custom_style`, not here. If the refine call fails, the video is still built
|
|
196
|
+
with the unrefined visual direction.
|
|
197
|
+
|
|
198
|
+
## Card layout (optional)
|
|
199
|
+
|
|
200
|
+
`layout` picks the card layout on Animated Ad and Music Video: `A` (scenes
|
|
201
|
+
only), `HA` (hook card + scenes), `AC` (scenes + CTA card), `HAC`, `AIA`
|
|
202
|
+
(scenes + data card + scenes), `HAIA`, `AIAC`, `HAIAC`. `facelessad_list_tools`
|
|
203
|
+
lists them under `layouts` with a name and, per duration, what each becomes.
|
|
204
|
+
|
|
205
|
+
Length is never an error. The hook and CTA cards you chose always stay; the
|
|
206
|
+
data card is dropped when the video is too short for it — `HAIAC` at 30 s
|
|
207
|
+
becomes `HAC`, `AIA` at 15 s becomes `A`. The create response reports
|
|
208
|
+
`layout.applied` and a `layout.notice` when it was reduced. Omit `layout` to
|
|
209
|
+
let the ad structure decide (its own layout, fitted to the duration the same
|
|
210
|
+
way).
|
|
211
|
+
|
|
177
212
|
## Captions
|
|
178
213
|
|
|
179
214
|
On by default, outline style, no dark box over the visuals.
|
package/index.js
CHANGED
|
@@ -78,7 +78,7 @@ function qs(q) {
|
|
|
78
78
|
return [...q.keys()].length ? '?' + q.toString() : '';
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
const server = new McpServer({ name: 'facelessad', version: '2.
|
|
81
|
+
const server = new McpServer({ name: 'facelessad', version: '2.3.0' });
|
|
82
82
|
|
|
83
83
|
server.tool(
|
|
84
84
|
'facelessad_list_tools',
|
|
@@ -206,6 +206,10 @@ const createShape = {
|
|
|
206
206
|
// 1.4.0 (§799): oma käsikirjoitus + visuaalinen ohjaus.
|
|
207
207
|
voiceover_text: z.string().optional().describe('Your own voice-over, spoken WORD-FOR-WORD — the AI script writer is skipped entirely (and not charged). Word limit follows duration: 15s fits 45 words, 30s fits 80, 50s fits 130; over the limit is an error, never a silent trim. Single narrator only; not on music-video (its script is sung lyrics) or video-banner (no narration).'),
|
|
208
208
|
visual_direction: z.string().optional().describe('How the video should LOOK and what happens visually (max 600 chars): setting, emotional arc, recurring motif, when the product appears. Steers the storyboard — the art style still comes from style/custom_style.'),
|
|
209
|
+
// 2.3.0 (§903): kerronnan esitystavan jalostus — preset tai vapaa ohje.
|
|
210
|
+
visual_direction_refine: z.string().optional().describe('animated-ad and music-video ONLY. Reshapes HOW the visual story is told — not how it looks. Either a preset id (metaphoric, realistic, dramatic, calm, playful, dark, bright, magical — facelessad_list_tools returns them under visual_direction_refine.presets) or your own free-text instruction (max 300 chars), e.g. an intent like "the product should have consequences far beyond its size". Applied on top of visual_direction if you gave one, otherwise on the generated one — so you do not need to write a full visual direction yourself. Free of charge. Art-style words (palette, 3D, watercolor…) belong in custom_style, not here.'),
|
|
211
|
+
// 2.3.0 (§912): H/I/C-layout — pituussovitus säännöllä, ei virhettä.
|
|
212
|
+
layout: z.string().optional().describe('animated-ad and music-video ONLY. The card layout: A (scenes only), HA (hook card + scenes), AC (scenes + CTA card), HAC, AIA (scenes + data card + scenes), HAIA, AIAC, HAIAC. facelessad_list_tools returns them under layouts with names and, per duration, what they become: hook and CTA cards you chose always stay, the data card is dropped when the video is too short (e.g. HAIAC at 30s becomes HAC). Never an error for length — the response reports layout.applied and a notice if it was reduced. Omit to let the ad structure decide.'),
|
|
209
213
|
hook_text: z.string().optional().describe('Your own first-frame hook card text, used as-is (max 120 chars). Omitted, it is derived from the script.'),
|
|
210
214
|
// 1.5.0 (§806): tekstitysten ulkoasu.
|
|
211
215
|
caption_style: z.string().optional().describe('Caption look: "outline" (default — no dark box), "bottom-bar", "word-pop", "karaoke" or "multi-font"'),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@facelessad/mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "FacelessAd as MCP tools \u2014 let your AI assistant create faceless video ads (Claude Desktop, Claude Code, Cursor, Windsurf, OpenClaw).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|