@cliangdev/conductor 0.28.0 → 0.29.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/assets/claude/skills/conductor-content-studio/references/capabilities.md +5 -0
- package/assets/claude/skills/conductor-content-studio/references/platform-specs.md +2 -2
- package/assets/claude/skills/conductor-creative/SKILL.md +34 -1
- package/assets/claude/skills/conductor-publisher/SKILL.md +6 -0
- package/dist/lib/creative-render.d.ts +8 -1
- package/dist/lib/creative-render.d.ts.map +1 -1
- package/dist/lib/creative-render.js +5 -5
- package/dist/lib/creative-render.js.map +1 -1
- package/dist/mcp/index.d.ts +525 -5
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +62 -17
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/tools/creative-drafts.d.ts +9 -0
- package/dist/mcp/tools/creative-drafts.d.ts.map +1 -1
- package/dist/mcp/tools/creative-drafts.js +121 -5
- package/dist/mcp/tools/creative-drafts.js.map +1 -1
- package/dist/mcp/tools/creatives.d.ts +55 -1
- package/dist/mcp/tools/creatives.d.ts.map +1 -1
- package/dist/mcp/tools/creatives.js +152 -5
- package/dist/mcp/tools/creatives.js.map +1 -1
- package/package.json +1 -1
|
@@ -21,6 +21,11 @@ needs changing until it fits.
|
|
|
21
21
|
- This is the right tool for a motion-text post: **it does not need filming.**
|
|
22
22
|
- **CLIP**: a finished video posted as-is. There is no brand layout and nothing to draft. It only
|
|
23
23
|
applies when the person already has the video.
|
|
24
|
+
- **CAROUSEL**: finished images posted as-is (1 to 10 slides for 4:5 and 1:1, up to 35 for 9:16
|
|
25
|
+
TikTok photo posts; one slide is a finished still). No brand layout is applied, so it only applies
|
|
26
|
+
when the slides already exist as image files or library media. Slides are ordered per placement
|
|
27
|
+
(`slides`, with `default` as the fallback) and each must match its placement's aspect. Reels,
|
|
28
|
+
Stories and YouTube cannot take it.
|
|
24
29
|
|
|
25
30
|
## Hard requirements (a draft is refused without them)
|
|
26
31
|
|
|
@@ -27,9 +27,9 @@ channel and title strip, take comparable space (check current platform guidance)
|
|
|
27
27
|
|
|
28
28
|
| Platform | Format and aspect | Length | What the ranking rewards | Sound and captions |
|
|
29
29
|
|---|---|---|---|---|
|
|
30
|
-
| TikTok | Video 9:16 (photo carousels also exist) | Up to several minutes; short pieces of about 15 to 45 s are the planning default | Watch time and completion, rewatches, shares, comments; TikTok's Creative Codes frame a piece as hook, body, close | Built for sound on; on-screen captions still matter. Caption text up to about 2,200 characters, but only the first line is visible before "more" |
|
|
30
|
+
| TikTok | Video 9:16 (photo carousels also exist: CAROUSEL Creatives use 9:16, up to 35 images) | Up to several minutes; short pieces of about 15 to 45 s are the planning default | Watch time and completion, rewatches, shares, comments; TikTok's Creative Codes frame a piece as hook, body, close | Built for sound on; on-screen captions still matter. Caption text up to about 2,200 characters, but only the first line is visible before "more" |
|
|
31
31
|
| Instagram Reels | Video 9:16 | Up to 3 minutes; about 15 to 30 s is the planning default | Watch time, likes and sends (shares by direct message); originality | Captions on screen; sound-off viewing is common. Caption up to 2,200 characters, about 125 shown before "more" |
|
|
32
|
-
| Instagram feed | Image or carousel 4:5 (also 1:1) | Carousels 2 to 10 cards | Saves, sends, likes; carousel swipes | No sound; the first card carries the hook |
|
|
32
|
+
| Instagram feed | Image or carousel 4:5 (also 1:1); finished-image CAROUSEL Creatives use 4:5, else 1:1 | Carousels 2 to 10 cards | Saves, sends, likes; carousel swipes | No sound; the first card carries the hook |
|
|
33
33
|
| Instagram Stories | 9:16, 2 to 7 beats | Each story card is short; sequences aim for 3 to 5 beats | Taps forward and replies; completion of the sequence | Text on screen; stickers and links sit in the UI zones |
|
|
34
34
|
| YouTube Shorts | Video 9:16 | Up to 3 minutes (older limits were 60 s) | Viewed vs swiped away, then average view duration | Sound on, captions on screen; title up to 100 characters |
|
|
35
35
|
| Facebook | Reels 9:16; feed image or video 1:1 | Reels are short vertical video; feed video varies | Watch time, shares, meaningful comments | Most feed video is watched muted: captions are required |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: conductor-creative
|
|
3
|
-
description: Creates on-brand marketing creative through the Conductor MCP tools — static ads and short videos alike, rendered locally on this machine as a draft, checked by eye and approved before anything is saved to Conductor. Covers a photo-plus-headline ad at every enabled placement (e.g. TikTok/Reels 9:16, Instagram feed 4:5, Facebook 1:1); a short video made from a still photo or an existing clip (animated text, zoom/pan, background music, a TikTok/Reels/Shorts-ready cut); posting a finished video as-is; a story or carousel sequence; a lettered headline/hook variant for testing; and, when a workspace's Brand Kit has never been set up, setting one up first (colours, font, logo, copy rules) from a website, a brand doc, or a few direct answers. Use when asked to make, design, write or export a social ad, a promo image, a short-form video, an animated ad, or to configure/update a project's brand.
|
|
3
|
+
description: Creates on-brand marketing creative through the Conductor MCP tools — static ads and short videos alike, rendered locally on this machine as a draft, checked by eye and approved before anything is saved to Conductor. Covers a photo-plus-headline ad at every enabled placement (e.g. TikTok/Reels 9:16, Instagram feed 4:5, Facebook 1:1); a short video made from a still photo or an existing clip (animated text, zoom/pan, background music, a TikTok/Reels/Shorts-ready cut); posting a finished video as-is; posting finished images as-is (a carousel or single still designed elsewhere, or an existing media set); a story or carousel sequence; a lettered headline/hook variant for testing; and, when a workspace's Brand Kit has never been set up, setting one up first (colours, font, logo, copy rules) from a website, a brand doc, or a few direct answers. Use when asked to make, design, write or export a social ad, a promo image, a short-form video, an animated ad, or to configure/update a project's brand.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: mcp__conductor__*, AskUserQuestion, Read, Glob, Grep, WebFetch
|
|
6
6
|
---
|
|
@@ -240,6 +240,39 @@ Mind each destination's own duration limit (per docs/publishing.md) — a clip t
|
|
|
240
240
|
platform may get rejected or trimmed on another; check before attaching to a Post that fans out
|
|
241
241
|
broadly.
|
|
242
242
|
|
|
243
|
+
## Finished images (carousel or single still)
|
|
244
|
+
|
|
245
|
+
When the slides are already designed (Figma exports, your own renderer, device-framed screenshots)
|
|
246
|
+
there is nothing for the brand layout to do, so use a CAROUSEL Creative: finished images posted
|
|
247
|
+
as-is. A one-slide CAROUSEL is a finished still. For text on a photo that Conductor should lay out,
|
|
248
|
+
use the STILL flow above instead (its "carousel" `sequence` is brand-rendered cards, a different
|
|
249
|
+
thing).
|
|
250
|
+
|
|
251
|
+
1. Get the images into the media library. A set in a folder goes up in one call:
|
|
252
|
+
`upload_creative_media({folder, glob?, labelTemplate: "01-import {stem}"})` (or `files: [...]`),
|
|
253
|
+
up to 100, in name order, with the shared `source`/`licence`/`aiGenerated`. Every file gets its own
|
|
254
|
+
result, so retry only the ones with an `error`. Find an already uploaded set with
|
|
255
|
+
`list_creative_media({labelPrefix: "01-import"})` rather than uploading again. `label`, `source`
|
|
256
|
+
and `licence` can't exceed 200 characters.
|
|
257
|
+
2. Local files: `preview_creative_draft({kind: "CAROUSEL", caption, slidePaths: {"4x5": [path, ...]}})`
|
|
258
|
+
returns a contact sheet per placement (slides in order), readiness and any violations; look at it
|
|
259
|
+
with the person, then `commit_creative_draft` (it uploads in order and requests the render).
|
|
260
|
+
Media already in the library: `create_creative({kind: "CAROUSEL", slides: {"4x5": [mediaId, ...]}, slideAltText, caption})`
|
|
261
|
+
and then `render_creative` (instant, server-side).
|
|
262
|
+
3. Placements. `slides` is a list per placement key (`4x5`, `9x16`, `1x1`); `default` is the
|
|
263
|
+
fallback for a placement with no list of its own. Each image must match its placement's aspect
|
|
264
|
+
within 2% (4x5 = 1080x1350, 9x16 = 1080x1920, 1x1 = 1080x1080); a mismatch comes back as a
|
|
265
|
+
`slideAspect` violation, so fix the image rather than the list. Limits: 10 slides for 4x5 and
|
|
266
|
+
1x1, 35 for 9x16 (TikTok photo posts); aim for 5 to 7.
|
|
267
|
+
4. Alt text: `slideAltText` has one entry per slide, in order (or a single Creative `altText`); readiness
|
|
268
|
+
blocks without it. Slides are never rewritten, so check them for burned-in text, logos and claims
|
|
269
|
+
and approve with `photoChecked: true`.
|
|
270
|
+
5. `get_creative` for `readiness` (slides, caption, altText, photoChecked block going READY), then
|
|
271
|
+
`attach_creative_to_post` (it renders first if needed). The mapping: Instagram feed gets `4x5`
|
|
272
|
+
(else `1x1`), Facebook feed `1x1` (else `4x5`), TikTok `9x16` (else `4x5`). Reels, Stories and
|
|
273
|
+
YouTube can't take a multi-image post; the preflight blocks with `MULTI_IMAGE_UNSUPPORTED`, so
|
|
274
|
+
switch that destination to Feed or remove it.
|
|
275
|
+
|
|
243
276
|
## Short videos from a photo or clip
|
|
244
277
|
|
|
245
278
|
A MOTION Creative animates the same brand layout from steps 1-5 above into a short video, instead
|
|
@@ -75,6 +75,12 @@ offers all three:
|
|
|
75
75
|
entry when several media are attached — omitted, `create_post` resolves it to the first of the
|
|
76
76
|
attached media and says so in `warnings`, which is a fallback worth naming rather than relying on.
|
|
77
77
|
|
|
78
|
+
A multi-image post (a CAROUSEL Creative's slides) only goes to **feed** formats: Instagram feed
|
|
79
|
+
(up to 10), Facebook feed (up to 10) and TikTok photo posts (up to 35). A reel, a story or YouTube
|
|
80
|
+
destination can't take one, and the preflight blocks with `MULTI_IMAGE_UNSUPPORTED` naming the
|
|
81
|
+
destination: switch it to Feed or remove it, then retry. A one-slide carousel is a single image and
|
|
82
|
+
fits anywhere an image does.
|
|
83
|
+
|
|
78
84
|
### Scheduling with no time given
|
|
79
85
|
|
|
80
86
|
When nobody names a time, `create_post` schedules for the next five-minute mark at or after the
|
|
@@ -28,6 +28,13 @@ export interface RenderCreativeResult {
|
|
|
28
28
|
error?: string | null;
|
|
29
29
|
frames: RenderFrame[];
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* A CLIP or CAROUSEL creative has no local browser render path at all — it's finished media used
|
|
33
|
+
* as-is (a video, or ordered images), and the backend assembles its frames itself synchronously. This just POSTs the render and relays what
|
|
34
|
+
* came back — `ApiError`'s `message` is already the server's own plain-English sentence (an RFC 7807
|
|
35
|
+
* `detail`), so a failure reaches the caller unchanged rather than wrapped in a generic message.
|
|
36
|
+
*/
|
|
37
|
+
export declare function renderViaApi(params: RenderCreativeParams, config: Config): Promise<RenderCreativeResult>;
|
|
31
38
|
/**
|
|
32
39
|
* Renders a Creative end to end. STILL and MOTION creatives both find a local browser and run the
|
|
33
40
|
* render core against the external API, reading back the stored render (frames with signed URLs,
|
|
@@ -36,7 +43,7 @@ export interface RenderCreativeResult {
|
|
|
36
43
|
* binary — resolved the same way `upload_creative_media`/`media-probe.ts` finds one (a system binary
|
|
37
44
|
* on PATH first, else the bundled `ffmpeg-static` fallback) — and runs at a fixed 30fps; a previewOnly
|
|
38
45
|
* MOTION render (the key-moments contact sheet) needs neither ffmpeg nor a video encode, so it skips
|
|
39
|
-
* this resolution entirely. CLIP creatives never launch a browser — see {@link renderViaApi}.
|
|
46
|
+
* this resolution entirely. CLIP and CAROUSEL creatives never launch a browser — see {@link renderViaApi}.
|
|
40
47
|
*/
|
|
41
48
|
export declare function renderCreative(params: RenderCreativeParams, config: Config, log?: (...args: unknown[]) => void): Promise<RenderCreativeResult>;
|
|
42
49
|
export interface DraftManifestFrame {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creative-render.d.ts","sourceRoot":"","sources":["../../src/lib/creative-render.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAS9C,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,0GAA0G;IAC1G,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB;
|
|
1
|
+
{"version":3,"file":"creative-render.d.ts","sourceRoot":"","sources":["../../src/lib/creative-render.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,12 +39,12 @@ async function loadRenderCore() {
|
|
|
39
39
|
return { run: renderMod.run, createApiTransport: transportMod.createApiTransport };
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* A CLIP creative has no local browser render path at all — it's
|
|
43
|
-
* the backend assembles its frames itself synchronously. This just POSTs the render and relays what
|
|
42
|
+
* A CLIP or CAROUSEL creative has no local browser render path at all — it's finished media used
|
|
43
|
+
* as-is (a video, or ordered images), and the backend assembles its frames itself synchronously. This just POSTs the render and relays what
|
|
44
44
|
* came back — `ApiError`'s `message` is already the server's own plain-English sentence (an RFC 7807
|
|
45
45
|
* `detail`), so a failure reaches the caller unchanged rather than wrapped in a generic message.
|
|
46
46
|
*/
|
|
47
|
-
async function renderViaApi(params, config) {
|
|
47
|
+
export async function renderViaApi(params, config) {
|
|
48
48
|
try {
|
|
49
49
|
const detail = await apiPost(`/api/v2/projects/${config.projectId}/marketing/creatives/${params.creativeId}/renders`, { previewOnly: !!params.previewOnly, renderer: params.renderer, workflowRunId: params.workflowRunId }, config);
|
|
50
50
|
return { ok: detail.state === 'SUCCEEDED', renderId: detail.id, state: detail.state, error: detail.error ?? null, frames: detail.frames ?? [] };
|
|
@@ -64,11 +64,11 @@ async function renderViaApi(params, config) {
|
|
|
64
64
|
* binary — resolved the same way `upload_creative_media`/`media-probe.ts` finds one (a system binary
|
|
65
65
|
* on PATH first, else the bundled `ffmpeg-static` fallback) — and runs at a fixed 30fps; a previewOnly
|
|
66
66
|
* MOTION render (the key-moments contact sheet) needs neither ffmpeg nor a video encode, so it skips
|
|
67
|
-
* this resolution entirely. CLIP creatives never launch a browser — see {@link renderViaApi}.
|
|
67
|
+
* this resolution entirely. CLIP and CAROUSEL creatives never launch a browser — see {@link renderViaApi}.
|
|
68
68
|
*/
|
|
69
69
|
export async function renderCreative(params, config, log = () => { }) {
|
|
70
70
|
const creative = await apiGet(`/api/v2/projects/${config.projectId}/marketing/creatives/${params.creativeId}`, config);
|
|
71
|
-
if (creative.kind === 'CLIP') {
|
|
71
|
+
if (creative.kind === 'CLIP' || creative.kind === 'CAROUSEL') {
|
|
72
72
|
return renderViaApi(params, config);
|
|
73
73
|
}
|
|
74
74
|
let ffmpegPath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creative-render.js","sourceRoot":"","sources":["../../src/lib/creative-render.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD;6DAC6D;AAC7D,MAAM,UAAU,GAAG,EAAE,CAAA;AAsErB;gFACgF;AAChF,SAAS,MAAM;IACb,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACpD,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;AAC5C,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IACpB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;IAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;IAChD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CACb,wCAAwC,GAAG,oDAAoD;YAC7F,qFAAqF;YACrF,yDAAyD,CAC5D,CAAA;IACH,CAAC;IACD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClD,MAAM,CAAC,UAAU,CAAwB;QACzC,MAAM,CAAC,aAAa,CAA6B;KAClD,CAAC,CAAA;IACF,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,kBAAkB,EAAE,YAAY,CAAC,kBAAkB,EAAE,CAAA;AACpF,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,YAAY,CAAC,MAA4B,EAAE,MAAc;
|
|
1
|
+
{"version":3,"file":"creative-render.js","sourceRoot":"","sources":["../../src/lib/creative-render.ts"],"names":[],"mappings":"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"}
|