anaksor-ocr
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
An n8n workflow that turns the next Ready row of a Google Sheet into a selfie-style product video once a day. An OpenAI model writes the prompt, Kie.ai renders it with Veo 3.1, and the link lands in the row.
Selfie-style UGC product videos from a Google Sheets queue 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.
Daily schedule
It starts once a day from Schedule Trigger and reads the first row of Sheet1 whose Status is Ready, with:
A vertical selfie-style product video, its link written into the product’s row
What you need before you start.
Spreadsheet
Holds the product queue and takes back each finished video’s address and status.
NeedsA Google account to sign in with, and a sheet laid out as the setup shows
Language and vision models
Runs gpt-5-mini for the four prompt writers, and gpt-5.6-sol to describe the made picture.
NeedsOpenAI API key
Image and video generation
Edits the product photo with Nano Banana and renders the clip with Veo 3.1 Fast, or with Sora 2 on rows that ask for it.
NeedsKie.ai API key, in a Header Auth credential
Checked by Mindket on 13 Nov 2026
This n8n workflow turns rows of a Google Sheet into short selfie-style product videos, the kind a happy customer might post. Once a day it takes the first row marked Ready. An OpenAI model writes a video prompt from the product, its buyer, its features and a setting. Kie.ai renders the clip, and its address goes back into the row. Thirty-one nodes run it, in three branches you pick row by row.
Online shops and small brands that want many short ad clips without hiring creators, and the agencies that make those clips for them. It fits a team that already keeps its products in a sheet. Skip it if you need a real customer on camera. Everyone in these clips is generated.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Beauty and skincare | Shop owners | Queue one row per product and let a clip arrive each morning | A skincare shop lists ten serums and gets one selfie clip a day. |
| Consumer gadgets | Brand marketers | Try one product with different buyers in ICP | A marketer makes one row for students and one for commuters, both for the same earbuds. |
| Marketing agencies | Content producers | Keep one sheet per client and review each clip before it goes out | An agency fills a client’s sheet on Monday and has drafts through the week. |
| Food and drink | Social media managers | Pick Nano + Veo 3.1 when the product photo is a plain packshot | A coffee brand turns a white-background bag photo into a kitchen scene first. |
You need some n8n: three credentials, one of them a header for Kie.ai, and a sheet with nine columns. Its author puts setup at about 13 minutes.
Any n8n that can reach Google, OpenAI and Kie.ai will run it. The videos stay at Kie.ai’s addresses, and the sheet keeps the list.
Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Make the sheet first, since four nodes point at it.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| An account that can edit the sheet, for a Google Sheets OAuth2 credential | |
| OpenAI | An API key for the prompt writers and the picture description |
| Kie.ai | An account and its API key, for every picture and video |
| Product photos | A public address for each one, since Kie.ai fetches them itself |
| Column | What goes in it |
|---|---|
No | A number unique to the row, which the update nodes match on |
Product and Product Photo | The name and the photo’s public address |
ICP and Product Features | The buyer the clip speaks to and the points to praise |
Video Setting | Where it is filmed, such as a sunny kitchen |
Model | Veo 3.1, Nano + Veo 3.1 or Sora 2, spelled exactly so |
Status and Finished Video | Ready for a row to make. The workflow writes Finished and the address |
workflow.json./d/ and /edit.YOUR_SHEET_ID with the ID.Analyze image and OpenAI Chat Model.Authorization, its value Bearer, a space and your key. Select it in the eight Kie.ai nodes.Schedule Trigger, add one row marked Ready and press Execute workflow.Finished.Add a row for each video you want, choose its Model and set Status to Ready. Each run makes one video, from the first Ready row. A daily schedule gives you one clip a day. When it is done, the row says Finished and Finished Video holds the link to download it from.
| To change | Where |
|---|---|
| Who speaks and what they say | The system message of the prompt writer for that branch |
| Frame | aspectRatio in the Veo nodes, aspect_ratio in Sora Video, image_size in Nano Image |
| Video quality | model in Veo Video and Veo Video1, set to veo3_fast |
| How often it runs | Schedule Trigger, once a day at midnight as imported |
| Chat model | OpenAI Chat Model, the gpt-5-mini that all four prompt writers share |
A row for a steel water bottle, sent down the branch that makes a picture first.
| Column | Value |
|---|---|
| No | 7 |
| Product | Trailhead steel bottle |
| Product Photo | https://shop.example/bottle.jpg |
| ICP | Hikers in their twenties who care about their gear |
| Product Features | Keeps water cold all day, fits a bike cage |
| Video Setting | A rocky trail at sunrise |
| Model | Nano + Veo 3.1 |
| Status | Ready |
Nano Image first makes a still of a hiker holding the bottle on the trail. Analyze image describes that picture. From the row and the description, Veo Video Prompt writes an eight-second scene in which the hiker says a line or two about the bottle. When Veo is done, row 7 reads Finished, with the clip’s address beside it.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A Switch node sends each row down one of several paths, here one for each value of Model. Start with a Veo 3.1 row, the shortest path. Then open the run under Executions to read the prompt the agent wrote and what Kie.ai answered.
For experts. Each branch polls Kie.ai in its own loop, and the loops differ.
| Branch | Calls | What to know |
|---|---|---|
Veo 3.1 | Veo Video1, then Get Veo Video1 every 10 seconds | Kie.ai’s older Veo endpoints. If3 waits until data.response exists |
Nano + Veo 3.1 | Nano Image and Get Nano Image every 5 seconds, then Veo Video and Get Veo Video | The only branch that runs Analyze image, now on gpt-5.6-sol |
Sora 2 | Sora Video, then Get Sora Video every 10 seconds | If2 waits until data.state reads success |
The four request bodies strip line breaks from the prompt before it goes into the JSON. The backslashes that do this had been lost from the original copy, and they are back.
Sora 2 is gone, one model is close to shutdown, and a failed task never ends its loop.
sora-2 as removed on 24 September 2026 with no replacement. Kie.ai’s documentation lists no Sora model, so expect Sora 2 rows to failgpt-5.6-terra as its replacementAnalyze image named chatgpt-4o-latest, shut down on 17 February 2026, and now names gpt-5.6-solReadyAn n8n workflow that makes short selfie-style product videos, the kind a customer might film of something they bought.
Once a day it takes the next product marked Ready in a Google Sheet, has an OpenAI model write the video prompt, and sends
it to Kie.ai for a Veo or Sora video. The finished video's address goes back into the row.
workflow.json: the workflow as n8n exports it, 31 nodes, three of them sticky notes that label the branches. It holdsREADME.md: these notes.YOUR_SHEET_ID and find the tab by its name,Sheet1..replace(/r?n|r/g, ' '), which would have turned every letter n and r of the prompt into a space. They are back to.replace(/\r?\n|\r/g, ' '), which turns line breaks into spaces as intended.Analyze image named chatgpt-4o-latest. OpenAI's deprecations page, read on 2 November 2026, lists it as shut downgpt-5.1-chat-latest, as shut down on 23 July 2026 in favour ofgpt-5.6-sol. The node now names gpt-5.6-sol, which reads images.One tab, Sheet1, with these headers in row 1:
| Column | What goes in it |
|---|---|
| No | A number unique to the row. The update nodes find the row by it |
| Product | The product's name |
| Product Photo | The photo's public address |
| ICP | The buyer the video speaks to, such as busy parents in their thirties |
| Product Features | The points the speaker can praise |
| Video Setting | Where the clip is filmed, such as a sunny kitchen |
| Model | Veo 3.1, Nano + Veo 3.1 or Sora 2, spelled exactly so |
| Status | Ready for a row to make. The workflow writes Finished |
| Finished Video | Left empty. The workflow writes the video's address |
workflow.json./d/ and /edit.Get row(s) in sheet, Update row in sheet, Update row in sheet1 andUpdate row in sheet2, select it and replace YOUR_SHEET_ID with the ID.Analyze image and OpenAI Chat Model.Authorization, value Bearer followed by a space and your key. Select itNano Image, Get Nano Image, Veo Video, Get Veo Video, Veo Video1,Get Veo Video1, Sora Video and Get Sora Video.Schedule Trigger. The file leaves it on n8n's default, once a day at midnight in the workflow's time zone. SetStatus set to Ready, then press Execute workflow to try it.Finished.Schedule Trigger starts the run, and Get row(s) in sheet reads the first row whose Status is Ready. Only thatSwitch reads Model and picks one of three branches.Veo 3.1: Veo Video Prompt1 writes a prompt for an eight-second selfie video, and Veo Video1 sends it to Kie.ai'sveo3_fast model with the product photo, in 9:16.Nano + Veo 3.1: Veo Image Prompt writes a prompt for a still of a person holding the product. With it, Nano Imagegoogle/nano-banana-edit make that picture from the product photo. Then Analyze image describes theVeo Video Prompt writes the video prompt from the row and the description. Last, Veo Video sends it toSora 2: Sora Video Prompt writes a prompt for a ten-second video, and Sora Video sends it to Kie.ai'ssora-2-image-to-video with the product photo, portrait, watermark removal on.No, sets Status to Finished and puts the video's address inFinished Video.The four prompt writers share one model, gpt-5-mini in OpenAI Chat Model.
Veo Image Prompt, asks for the product in someone's hand, left exactly as in the photo.aspectRatio in Veo Video and Veo Video1, aspect_ratio in Sora Video, image_size in Nano Image.model in the two Veo nodes. veo3_fast is Kie.ai's faster Veo 3.1 tier, and its full tier is veo3.Schedule Trigger.sora-2 and its Videos API as removed on 24 September 2026, with noSora 2 row to fail at Sora Video, and use one of the two Veo values.gpt-5-mini: OpenAI's page lists it for shutdown on 11 December 2026, with gpt-5.6-terra as the replacement. PickOpenAI Chat Model before then./api/v1/jobs/createTask. The /api/v1/veo/generate and /api/v1/veo/record-info calls this file uses are filed underReady.Model value that none of the three spellings matches leaves the run with nothing to do. That row stays Ready andSora Video adds two stray closing braces after its prompt expression, so the prompt it sends ends in }}.README.md 7 KB workflow.json 51 KB
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
Qwen · Kit
Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…
ACE-Step · Kit
Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…
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…