Lumiclip

io.github.lumiclipPublished by GitHub account lumiclipv3.0.0Updated Oct 24, 2026

Turn YouTube videos into short-form clips from any AI assistant

VerifiedSTDIODesktop onlyProductivity & WorkflowMedia & Design

Overview

AI-generated overview

Turns a YouTube video into short vertical clips with subtitles, returning download-ready files from an AI assistant.

What you can do
Lumiclip starts clip generation from a YouTube URL and returns a project ID immediately. Tools let the assistant poll project status, list past projects, fetch details for a single clip, and check plan credits and usage. Finished clips are ranked by score and come with download URLs, vertical 9:16 framing, and subtitles. A callback URL can be supplied so results are pushed by webhook instead of polled.
When to use it
Useful when you want an assistant to repurpose long YouTube videos into short-form clips without leaving the chat, for example to pull highlight moments for social posting. It fits workflows where clip generation is one step among others, such as n8n automations or custom integrations.
Requirements
Runs locally over stdio via npx @lumiclip/mcp-server, so Node.js is needed. A Lumiclip API key is required in the LUMICLIP_API_KEY environment variable; the API base URL can be overridden with LUMICLIP_API_URL. Network access to the Lumiclip API and YouTube is required. A remote Streamable HTTP endpoint is also documented for clients that support it.
Before you install
The API key LUMICLIP_API_KEY is a secret and is passed in plain text in configuration and in the Authorization bearer header. Clip generation consumes paid credits, and an insufficient-credits error means you must buy more. Generated clips and thumbnails are hosted on Lumiclip's CDN, and the source YouTube URL is sent to Lumiclip's servers. Webhook callbacks can be signed with an X-Lumiclip-Signature header derived from the API key.

Installation

In SourceWeft

  1. Open Lumiclip in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

@lumiclip/mcp-server

Turn long videos into short clips — from Claude, Cursor, or any AI assistant that supports MCP.

Give it a YouTube link. It finds the best moments, reframes for vertical video (9:16), adds subtitles, and returns download-ready clips.

[smithery badge] [Lumiclip MCP server]

Quick Start

  1. Get an API key at app.lumiclip.ai/developers
  2. Run:
bash
LUMICLIP_API_KEY=sk_live_... npx @lumiclip/mcp-server

Setup

Claude Desktop / Cursor

Add to your config file — claude_desktop_config.json for Claude, .cursor/mcp.json for Cursor:

json
{  "mcpServers": {    "lumiclip": {      "command": "npx",      "args": ["@lumiclip/mcp-server"],      "env": {        "LUMICLIP_API_KEY": "sk_live_..."      }    }  }}

Cursor Directory

Install in Cursor

Smithery

bash
npx @smithery/cli mcp add lumiclip/lumiclip

Remote (Streamable HTTP)

For n8n, custom integrations, or any client that supports remote MCP:

  • Endpoint: https://mcp.lumiclip.ai/mcp
  • Auth: Authorization: Bearer sk_live_...
  • Transport: Streamable HTTP (POST)

Tools

ToolWhat it does
generate_clipsStart clip generation from a YouTube URL. Returns a project_id right away.
get_project_statusCheck progress and get clips when ready. Clips are sorted by score (best first).
list_projectsList your projects with status and clip counts.
get_clipGet full details for a single clip.
check_usageSee your plan, remaining credits, and usage.

How It Works

  1. Call generate_clips with a YouTube URL
  2. Get back a project_id immediately
  3. Poll get_project_status every 10–15 seconds (or pass a callback_url for webhook)
  4. When done, clips are sorted by score (best first), each with a download_url

Statuses

Project: pending → processing → completed (or completed_no_clips / failed)

Processing steps: queued → DOWNLOADING_VIDEO → EXTRACTING_AUDIO → TRANSCRIBING → DETECTING_HIGHLIGHTS → CUTTING_CLIPS → EXPORTING_CLIPS → done

Clips: pending → exporting → completed (or failed). The download_url is available when clip_status is completed.

API Reference

generate_clips

Start clip generation from a YouTube video.

FieldTypeRequiredDescription
urlstringYesFull YouTube video URL
start_timenumberNoStart time in seconds (to process only a segment)
end_timenumberNoEnd time in seconds (to process only a segment)
callback_urlstringNoWebhook URL to receive results when done
json
{  "project_id": "43dbe622-8ac6-4579-9625-0ad7f0f9db0b",  "status": "processing",  "poll_url": "/api/v1/projects/43dbe622-8ac6-4579-9625-0ad7f0f9db0b",  "estimated_minutes": 5,  "message": "Processing started. Poll with get_project_status every 10-15 seconds until status is 'completed'."}

get_project_status

Check progress and get clips.

FieldTypeRequiredDescription
project_idstringYesThe project ID from generate_clips
json
{  "id": "43dbe622-...",  "name": "Video Title",  "status": "completed",  "step": "done",  "error": null,  "expected_clips": 9,  "duration": 639,  "created_at": "2026-03-15T02:21:46.226Z",  "clips": [    {      "id": "32538b9c-...",      "title": "One Dating Theory Leads to Chaos",      "duration": 41.83,      "score": 90,      "reason": "Sharp universal joke that hooks instantly with strong reactions.",      "clip_status": "completed",      "download_url": "https://cdn.lumiclip.ai/exports/premium/.../clip-32538b9c-....mp4",      "quality": "1080p",      "thumbnail_url": "https://cdn.lumiclip.ai/exports/premium/.../clip-32538b9c-...-thumb.jpg",      "created_at": "2026-03-15T02:29:10.954Z",      "updated_at": "2026-03-15T02:30:43.907Z"    }  ]}

Clips are sorted by score (highest first).

list_projects

FieldTypeRequiredDescription
limitnumberNoMax projects to return. Default 20, max 100.
statusstringNoFilter: pending, processing, completed, completed_no_clips, failed
json
{  "projects": [    {      "id": "43dbe622-...",      "name": "Video Title",      "status": "completed",      "step": "done",      "expected_clips": 9,      "clips_count": 8,      "duration": 639,      "created_at": "2026-03-15T02:21:46.226Z"    }  ],  "total": 1,  "limit": 20,  "offset": 0}

get_clip

FieldTypeRequiredDescription
clip_idstringYesThe clip ID from a project's clips array
json
{  "id": "32538b9c-...",  "project_id": "43dbe622-...",  "title": "One Dating Theory Leads to Chaos",  "duration": 41.83,  "score": 90,  "reason": "Sharp universal joke that hooks instantly.",  "export_status": "completed",  "export_quality": "1080p",  "is_exported": true,  "video_url": "https://cdn.lumiclip.ai/...",  "video_url_720p": "https://cdn.lumiclip.ai/...",  "video_url_1080p": "https://cdn.lumiclip.ai/...",  "thumbnail_url": "https://cdn.lumiclip.ai/...",  "created_at": "2026-03-15T02:29:10.954Z",  "updated_at": "2026-03-15T02:30:43.907Z"}

check_usage

No input required.

json
{  "plan": "pro",  "credits_remaining": 450,  "credits_total": 500,  "period_start": "2026-03-01T00:00:00.000Z",  "period_end": "2026-04-01T00:00:00.000Z"}

Errors

HTTP StatusErrorWhat to do
400Invalid YouTube URLCheck the URL format
401UnauthorizedCheck your API key
402Insufficient creditsBuy more credits or use a shorter video
429Rate limit exceededWait and try again
500Internal server errorTry again later

Webhooks

Pass a callback_url when calling generate_clips to receive a POST when all clips are ready.

Completed:

json
{  "event": "project.completed",  "project_id": "43dbe622-...",  "status": "completed",  "source_url": "https://www.youtube.com/watch?v=H51iLa1leOU",  "clips": [    {      "id": "32538b9c-...",      "title": "One Dating Theory Leads to Chaos",      "duration": 41.83,      "score": 90,      "download_url": "https://cdn.lumiclip.ai/exports/premium/.../clip-32538b9c-....mp4",      "thumbnail_url": "https://cdn.lumiclip.ai/exports/premium/.../clip-32538b9c-...-thumb.jpg",      "quality": "1080p"    }  ]}

Failed:

json
{  "event": "project.failed",  "project_id": "43dbe622-...",  "status": "failed",  "error": "YouTube video is unavailable",  "clips": []}

Clips are sorted by score (highest first). We retry up to 3 times if your server doesn't respond.

Signature verification (optional): Each callback includes an X-Lumiclip-Signature header. Compute HMAC-SHA256 of the request body using SHA-256(your_api_key) as the signing key. Compare with the header value (sha256=<hex>).

Using with n8n

Option A — Webhook (recommended):

  1. Create a workflow with a Webhook trigger node. Copy its URL.
  2. Add an HTTP Request node: POST https://api.lumiclip.ai/api/v1/clips/generate with Header Auth (Authorization: Bearer sk_live_...) and body:
    json
    {  "url": "https://www.youtube.com/watch?v=...",  "callback_url": "https://your-n8n.com/webhook/abc123"}
  3. When clips are ready, the Webhook node receives the payload.
  4. Best clip: {{ $json.clips[0].download_url }}

Option B — Polling loop:

  1. POST to generate clips (same as above, without callback_url).
  2. Wait 15 seconds → GET https://api.lumiclip.ai/api/v1/projects/{{ $json.project_id }} → IF status is not completed, loop back to Wait.

REST API

For direct HTTP calls without MCP:

MethodEndpointDescription
POST/api/v1/clips/generateStart clip generation
GET/api/v1/projects/:idGet project status and clips
GET/api/v1/projectsList projects
GET/api/v1/clips/:idGet single clip details
GET/api/v1/account/usageCheck credits and plan

Base URL: https://api.lumiclip.ai — All endpoints require Authorization: Bearer sk_live_...

Environment Variables

VariableRequiredDefault
LUMICLIP_API_KEYYes—
LUMICLIP_API_URLNohttps://api.lumiclip.ai

Links

License

MIT

Source: README.md at commit 8da27d8

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v3.0.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts