@hubfluencer/mcp 0.8.2 → 0.9.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 +23 -12
- package/dist/index.js +611 -175
- package/package.json +1 -1
- package/src/campaign.ts +1 -1
- package/src/client.ts +4 -1
- package/src/core.ts +307 -15
- package/src/index.ts +511 -84
- package/src/output-schemas.ts +13 -2
- package/src/uploads.ts +401 -163
package/README.md
CHANGED
|
@@ -84,8 +84,8 @@ instead draw a **free daily quota of 20 AI assists** (top up with `unlock_ai_ass
|
|
|
84
84
|
| `generate_short` | Render an existing short — re-rolls the footage + music (fresh AI generation). If headline/subheadline/beats are all blank the server auto-writes the copy first (`skip_auto_text:true` for a deliberately bare clip). Safe to re-call (in-flight = reported, no double charge; a failed short can re-generate). | **15** |
|
|
85
85
|
| `rerender_short` | **FREE re-render** — applies the short's current text/style/CTA/end-card state over the already-paid footage + music. Use after `update_short` for copy/style/CTA tweaks; footage or music changes need `generate_short` instead. Needs one completed generation first (422 `short_not_ready` otherwise); changed footage/music inputs return 422 `short_paid_regeneration_required`. A failed free re-render leaves the delivered video intact — retry `rerender_short`, it stays free. | **0** |
|
|
86
86
|
| `generate_short_text` | AI-draft editable headline / subheadline / caption beats for a short. | 1 assist |
|
|
87
|
-
| `create_editor_ad` | Create an editor project
|
|
88
|
-
| `start_autopilot` |
|
|
87
|
+
| `create_editor_ad` | Create an editor project, attach optional local product/logo/closing assets, and return the live autopilot quote. Omit `max_credits` to stop free; provide an approved cap to launch. For a mascot/hero product that must remain identical with no humans, pass `cast_mode:"product_only"` plus `product_image_path`. | **0** until capped launch |
|
|
88
|
+
| `start_autopilot` | Quote autopilot on an **existing** editor draft when called with only `slug`; launch only with an explicit `max_credits` that covers the estimate and an adequate balance. | **0** quote; credits on capped launch |
|
|
89
89
|
| `create_slider` | Create an image-carousel draft: one prompt → N still slides + a ready-to-post caption + hashtags. `mode` `creative` (story) or `ad_driven` (facts). | **0** |
|
|
90
90
|
| `generate_slider` | Render a carousel (copy → AI backgrounds → composite). Poll `get_slider` until `completed`. | **1 / slide** (3–10) |
|
|
91
91
|
| `get_slider` | Read a carousel's status and, when completed, the per-slide image URLs + caption + hashtags. | **0** |
|
|
@@ -118,17 +118,22 @@ instead draw a **free daily quota of 20 AI assists** (top up with `unlock_ai_ass
|
|
|
118
118
|
|
|
119
119
|
Reads are confined to `HUBFLUENCER_INPUT_DIR`. All $0.
|
|
120
120
|
|
|
121
|
+
Size units are exact: videos are capped at **500 MB decimal (500,000,000 bytes)**; product
|
|
122
|
+
images at **8 MiB (8,388,608 bytes)**; closing/short/catalog images at **20 MiB
|
|
123
|
+
(20,971,520 bytes)**; logos at **1 MiB (1,048,576 bytes)**. Editor video multipart starts at
|
|
124
|
+
**50 MiB (52,428,800 bytes)**.
|
|
125
|
+
|
|
121
126
|
| Tool | What it does |
|
|
122
127
|
|---|---|
|
|
123
128
|
| `upload_video` | Upload a local clip into an editor project (presign → PUT, resumable multipart for large files → confirm → poll to ready) and, by default, add it to the timeline. An uploaded clip keeps its native duration. |
|
|
124
129
|
| `add_segment_from_upload` | Append a **ready** upload to the timeline as a new scene. |
|
|
125
|
-
| `use_asset_for_segment` | Set a specific scene's video from a ready upload **or** a completed scene in the same project (pass exactly one). |
|
|
126
|
-
| `set_product` | Upload
|
|
130
|
+
| `use_asset_for_segment` | Set a specific scene's video from a ready upload **or** a completed scene in the same project (pass exactly one). Returns downstream continuity impact plus narration/voice/music staleness that must be resolved before render. |
|
|
131
|
+
| `set_product` | Upload an editor product image (JPEG/PNG, ≤8 MiB) and attach it as the project product. |
|
|
127
132
|
| `set_product_placement` | Set where the product appears on pending AI scenes: `throughout` or `end`. |
|
|
128
|
-
| `set_closing_image` | Set the ~2s end-card image (upload a file, or reuse the product image with `from_product:true`). |
|
|
129
|
-
| `set_logo` | Upload a brand logo overlay (editor only; optional treatment/position/duration). |
|
|
130
|
-
| `set_short_product` | Attach a product image to a **short**. |
|
|
131
|
-
| `set_short_poster` | Set a short's end-card poster (extends the render 12s → 14s). Pass `poster_includes_lockup:true` if the poster already carries brand name/CTA/badges — suppresses the overlaid claim/CTA so they don't collide. |
|
|
133
|
+
| `set_closing_image` | Set the ~2s end-card image (JPEG/PNG, ≤20 MiB; upload a file, or reuse the product image with `from_product:true`). |
|
|
134
|
+
| `set_logo` | Upload a brand logo overlay (JPEG/PNG, ≤1 MiB; editor only; optional treatment/position/duration). |
|
|
135
|
+
| `set_short_product` | Attach a product image (JPEG/PNG, ≤20 MiB) to a **short**. |
|
|
136
|
+
| `set_short_poster` | Set a short's end-card poster (JPEG/PNG, ≤20 MiB; extends the render 12s → 14s). Pass `poster_includes_lockup:true` if the poster already carries brand name/CTA/badges — suppresses the overlaid claim/CTA so they don't collide. |
|
|
132
137
|
|
|
133
138
|
### Status & delivery
|
|
134
139
|
|
|
@@ -140,6 +145,12 @@ Reads are confined to `HUBFLUENCER_INPUT_DIR`. All $0.
|
|
|
140
145
|
| `get_credits` / `list_voices` / `list_projects` | Credit balance; narration voices; recent projects (`include_completed:true` to recover a finished short's slug). |
|
|
141
146
|
| `get_ai_assists` / `unlock_ai_assists` | The free daily assist quota / spend 1 credit for +10. |
|
|
142
147
|
|
|
148
|
+
For editor projects, `video_url` may remain the last delivered MP4 after the timeline changes.
|
|
149
|
+
It is current only when `ready:true` and `stale:false`. `stale:true` means the delivered render
|
|
150
|
+
does not match the live timeline; regenerate the reported stale scenes/audio and render again.
|
|
151
|
+
An absent/`null` server `is_stale` is **unknown** (for example a legacy render), not proof that
|
|
152
|
+
the render is current. Failure stages take precedence over active stages and are terminal.
|
|
153
|
+
|
|
143
154
|
### Campaign engine — onboard a product, plan, and draft (the delegation surface)
|
|
144
155
|
|
|
145
156
|
Everything here is **$0** (draft creates + planning against the free assist quota). Generation
|
|
@@ -211,7 +222,7 @@ Subscription-gated (a 402 `subscription_required` means the account needs an act
|
|
|
211
222
|
|---|---|
|
|
212
223
|
| `list_assets` | Your reusable asset catalog (images + videos) with presigned URLs + your storage quota; page with `limit`/`offset`. |
|
|
213
224
|
| `get_asset_quota` | Your catalog storage quota (limit / used / pending / reserved / remaining bytes). |
|
|
214
|
-
| `upload_asset` | Upload a local image (≤20 MiB) or video (≤500 MB; `duration_seconds` required, ≤60) into the catalog so it can be reused across projects. Reads confined to `HUBFLUENCER_INPUT_DIR`. Rate limit 30/min. |
|
|
225
|
+
| `upload_asset` | Upload a local image (≤20 MiB = 20,971,520 bytes) or video (≤500 MB decimal = 500,000,000 bytes; `duration_seconds` required, ≤60) into the catalog so it can be reused across projects. Reads confined to `HUBFLUENCER_INPUT_DIR`. Rate limit 30/min. |
|
|
215
226
|
|
|
216
227
|
### Credit prices (reference)
|
|
217
228
|
|
|
@@ -245,7 +256,7 @@ If it returns `terminal:false`, the render is still going — call `wait_for_com
|
|
|
245
256
|
|
|
246
257
|
**Granular (control/recovery):**
|
|
247
258
|
`create_short` → optional `generate_hook_variations` (test hook angles free) / `generate_short_text` → `generate_short` → `wait_for_completion {kind:"short"}` → `download_result`, or
|
|
248
|
-
`create_editor_ad` → `wait_for_completion {kind:"editor"}` → `download_result`.
|
|
259
|
+
`create_editor_ad` (free configure + quote) → obtain spend approval → `start_autopilot {slug, max_credits}` → `wait_for_completion {kind:"editor"}` → `download_result`.
|
|
249
260
|
|
|
250
261
|
**Iterate a short for free (never re-roll):** the first `generate_short` (15 credits) buys the footage +
|
|
251
262
|
music; after that, every text/style/CTA/end-card tweak re-renders over them for **0 credits** —
|
|
@@ -253,8 +264,8 @@ music; after that, every text/style/CTA/end-card tweak re-renders over them for
|
|
|
253
264
|
footage/music-affecting edits (`product_prompt`, product image, `creative_format`, `visual_language`,
|
|
254
265
|
`theme`, `music_vibe`, `music_instruments`, `language`) need another `generate_short`. Edits that
|
|
255
266
|
add/remove the end card (poster, `end_card`) can shift the video between 12s and 14s; the pinned music
|
|
256
|
-
bed
|
|
257
|
-
`generate_short`.
|
|
267
|
+
bed loops through the added CTA window and fades at export end rather than leaving a silent card.
|
|
268
|
+
For a newly composed bed timed specifically to the longer cut, use `generate_short`.
|
|
258
269
|
|
|
259
270
|
**Image carousel:**
|
|
260
271
|
`create_slider({ prompt: "5 tips for…", mode: "ad_driven", slide_count: 5 })` → `generate_slider` →
|