Bonsai-27B-GGUF
lmstudio-community · Kit
A GGUF conversion of the 27B Bonsai model for LM Studio, with a 3.80 GB Q1_0 language file and a 0.93 GB BF16 vision projector. Tested for text, vision and par…
An n8n workflow that makes a still portrait move the way a video clip moves. A form takes the image and the clip, a RunningHub AI app transfers the motion, and n8n checks the task until it is done and downloads the video.
Photo motion transfer from a video clip is an n8n workflow in the Marketing & SEO category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
Form upload
It starts when someone sends the Video Motion Transfer form with:
A video of your portrait moving the way the clip does
What you need before you start.
AI video
Stores both files, runs the motion-transfer app on them, reports the task’s status and hands back the video’s address.
NeedsRunningHub API key
Checked by Mindket on 13 Nov 2026
This n8n workflow makes a still portrait move the way a video clip moves. A form takes the portrait and a source clip, and RunningHub stores both. Then a RunningHub AI app transfers the clip’s motion onto the image. n8n waits five minutes, checks the task, and keeps checking once a minute until the task succeeds or fails. Fifteen nodes run in two stretches: the first uploads the files and starts the task, and the second waits, fetches the result and downloads each video file it lists.
Creators and small teams who want a character, a portrait or a piece of concept art to perform a movement they can film or find. Skip it if you want to steer the result with words from inside n8n. The app has a prompt field. The file leaves it empty.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Social video | Creators who post short clips | Give a portrait or a mascot the move from a clip they like | A creator makes a mascot portrait turn its head the way a presenter does in a short clip. |
| Brand marketing | Brand and social teams | Let a brand character copy a gesture from a reference clip | A brand team has its character wave the way a spokesperson waves in a reference video. |
| Games and storytelling | Indie developers and writers | Bring concept art to life with a filmed movement | An indie team animates a character sketch with a clip of someone walking. |
| Training | Course makers | Animate an instructor illustration with a filmed demonstration | A trainer lets an illustrated instructor point at a screen the way a colleague did on camera. |
| Agencies | Video producers | Test a character’s performance before an animator is booked | A producer shows a client a rough performance filmed on a phone and carried onto the character. |
Any n8n that can reach runninghub.ai will run it. The form is the front door, so you share its address with whoever supplies the files.
Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Its author puts setup at about 14.5 minutes.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| RunningHub | An account, and the API key from it |
workflow.json.API Setup and replace YOUR_RUNNINGHUB_API with your RunningHub API key.On form submission and change the form’s title or the file types it accepts.createTask and type one into fieldValue of the entry whose nodeId is 164. The file leaves it empty.Open the form, attach a portrait and a video clip, and send them. Both fields are required. Each takes one file. The image can be .jpg, .jpeg, .png or .webp, and the clip .mp4, .avi, .mov or .mkv. The form confirms at once. The run goes on behind it. The video lands in the run’s execution data, so open the run under Executions to get it.
| To change | Where |
|---|---|
| The prompt | fieldValue of the nodeId 164 entry in createTask, empty in the file |
| First wait | Wait, five minutes before the first status check |
| Time between checks | Wait1, one minute |
| Accepted files | The two file fields of On form submission |
| Which RunningHub app runs | The app number ending the address in createTask, with the node numbers 163, 178 and 164 |
| Machine and queue | instanceType and usePersonalQueue in the body of createTask, set to plus and false |
A designer uploads a .png of a cartoon fox and a short .mp4 of someone turning their head and smiling. Five minutes after the task starts, the first status check runs, and once a minute after that until the status reads SUCCESS. Then downloadVideo holds a video of the fox turning its head and smiling.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. Here the heavy work happens on RunningHub, and n8n only carries files to it and waits. The key you paste into API Setup is how RunningHub knows the calls are yours. Send a test through the form first, since each node then shows what it received and sent.
For experts. The file talks to RunningHub in two styles. Upload and output calls carry your key as apiKey in the body. The task and status calls send it as a Bearer header, on a newer path.
| Node | Endpoint | Sends | Gets back |
|---|---|---|---|
uploadImage, uploadVideo | /task/openapi/upload | apiKey and one file, as multipart form data | The stored file’s fileName |
createTask | /openapi/v2/run/ai-app/ then the app number | The Bearer key and a nodeInfoList | A taskId |
checkStatus | /openapi/v2/query | The Bearer key and the taskId | A status: FAILED, SUCCESS, QUEUED or RUNNING |
getOutput | /task/openapi/outputs | apiKey and the taskId | A data list, each entry with a fileUrl |
The two uploads run side by side, and Merge and Aggregate fold their replies into one item. createTask then puts the image’s name in node 163 of the app and the video’s in node 178. After a SUCCESS, Code in JavaScript turns each entry of data into its own item, so downloadVideo fetches every file the app returns.
Each task costs money, and a failed one ends without a message.
plus instance type, so check what that costs thereSwitch, for FAILED, goes nowhere, so open the run under Executions when no video appearsAPI Setup, so anyone who can open the workflow can read itAn n8n workflow. Send one portrait and one video clip through its form, and it returns a video of the portrait moving
the way the clip moves, made by a RunningHub AI app.
workflow.json: the workflow as n8n exports it, 15 nodes. It holds no credential. Your RunningHub key goes into oneAPI Setup.README.md: these notes.workflow.json.API Setup and replace YOUR_RUNNINGHUB_API with your RunningHub API key. The other nodes read it from there.On form submission to change the form's title or the file types it accepts. The file takes .jpg,.png, .jpeg and .webp for the image, and .mp4, .avi, .mov and .mkv for the video.createTask and type one into fieldValue of the entry whosenodeId is 164. The file leaves it empty.The form confirms at once. The run goes on behind it, and the finished video is saved in the run's execution data, so
open the run under Executions to get it. Add a node after downloadVideo to save each file to a drive or send it on.
API Setup holds the key, and getBinaryFile passes the form's two files on.uploadImage and uploadVideo send one file each to RunningHub, side by side. Merge and Aggregate fold the twocreateTask starts a task on a RunningHub AI app, giving it the image's stored name in node 163 and the video's ininstanceType to plus andusePersonalQueue to false.Wait pauses five minutes, then checkStatus asks for the task's status. Switch sends SUCCESS to getOutput,Wait1 (one minute) back to checkStatus, and leaves FAILED unconnected.getOutput asks for the result list. Code in JavaScript turns each entry into an item with its fileUrl, anddownloadVideo fetches each file.| Node | RunningHub endpoint | Sends | Gets back |
|---|---|---|---|
| uploadImage, uploadVideo | /task/openapi/upload | apiKey and one file | the stored file's fileName |
| createTask | /openapi/v2/run/ai-app/ and the app number | a Bearer key and a nodeInfoList | a taskId |
| checkStatus | /openapi/v2/query | a Bearer key and the taskId | a status: FAILED, SUCCESS, QUEUED or RUNNING |
| getOutput | /task/openapi/outputs | apiKey and the taskId | a data list with a fileUrl in each entry |
fieldValue in createTask, as in step 4.Wait (five minutes before the first check) and Wait1 (one minute between checks). Wait has only its unitcreateTask. The node numbers beside it belong to thatOn form submission.plus instance type, so check its price there.Switch, for FAILED, goes nowhere. When no video appears, open the run under Executions.API Setup, so anyone who can open the workflow can read it.README.md 4 KB workflow.json 12 KB
lmstudio-community · Kit
A GGUF conversion of the 27B Bonsai model for LM Studio, with a 3.80 GB Q1_0 language file and a 0.93 GB BF16 vision projector. Tested for text, vision and par…
LibertAIDAI · Kit
Runs DeepSeek-V4.1-Flash-1017 as a 2.9 bits-per-weight EXL3 quantization, a 196 GiB copy for people serving large models on their own hardware. Perplexity stay…
facebook · Kit
Generates short music clips from a text description or an audio prompt, in the small checkpoint of facebook's MusicGen. It suits developers and music hobbyists…
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
nerijs · Kit
A pixel art style add-on for Stable Diffusion XL that turns text prompts into pixel-style images, with an optional LCM LoRA for faster runs. For game makers, d…
LiconStudio · Kit
Keeps characters, clothing, objects and backgrounds consistent in generated video by feeding the model up to five reference images. A LoRA for LTX-2.5 in Comfy…