AI Video Creator - Character Consistency (Short-Form Reels)

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Any

SALARY

3$ per hour

HOURS PER WEEK

6

DATE UPDATED

Sep 23, 2026

JOB OVERVIEW

We run a faceless short-form video channel on Instagram and TikTok built around
one recurring AI character — an elderly woman who gives simple health advice.
We post 5-7 videos a week, 45-90 seconds each.

We give you the script and the master character images. You build the rest.

WHAT WE GIVE YOU
- The finished script for each video
- The recorded voiceover file
- The master character sheet: her face, her clothing, her hands, her locations
- Brand guidelines: caption style, pacing, what the channel does and does not do
- Server access and paid tool accounts. You pay for nothing.

WHAT YOU BUILD
- D ---------- the shots. Read the script and work out what the viewer should see.
- Write your own image prompts and generate every shot from the master sheet,
keeping the character identical across every video we have ever posted
- Build and maintain the ComfyUI workflows or other tools for image generation, animation and
lip-sync
- Animate the shots and run the lip-sync against our voice file
- Edit in CapCut or your editor of choice: cuts, burned-in karaoke captions,
pinned banner, audio mix
- Export vertical 1080x1920 and post it
- Keep clean, organised folders so any asset from any video can be found later

REQUIRED
- Real experience keeping ONE character consistent across many generations.
This is the whole job. If her face drifts between videos, the channel dies.
- AI video generation: WAN, Hailuo/MiniMax, Kling, Runway, Veo — any of them
- Lip-sync tools: InfiniteTalk, Hedra, Sync.so, Kling Avatar, LatentSync
- Strong short-form editing, especially burned-in captions and audio timing
- You can write your own prompts in English and explain why a generation failed
- Reliable internet, your own computer, and hours overlapping Europe (CET)

NICE TO HAVE
- LoRA training
- Instagram Reels / TikTok posting and scheduling experience
- Photography or cinematography background

THE PART THAT MATTERS MOST
These tools fail constantly. Hands come out wrong. The character freezes. The
lip-sync smears. The model ignores half your prompt.

We are not looking for someone who sends the first output and calls it done. We
are looking for someone who sees what is wrong, knows why, changes one thing,
and runs it again. That instinct is worth more to us than any tool on your CV.

You will own this end to end. We will give you honest feedback and we expect the
same back.

HOW TO APPLY
Start your message with the word GINGER so we know you read this.

Then answer:
1. Send links to two short vertical videos you made with AI tools — ideally
with the same character in both.
2. Describe one time an AI generation kept coming out wrong and what you
changed to fix it.

Applications without the word GINGER will not be read.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0134
Total Execution Time  0.0148
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,499,136 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/AI-Video-Creator-Character-Consistency-Short-Form-Reels-1736659
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0075 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1736659
 LIMIT 1 
0.0008   SELECT *
FROM `employers`
WHERE `employer_id` = 976598
 LIMIT 1 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1736659
AND `misc`.`id` IS NULL 
0.0004   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-10-23',ej.date_added) duration_days, DATEDIFF('2026-10-23',e.rebill_date) duration_rebill, ej.*, e.deactivate FROM employers e, employer_jobs ej WHERE e.employer_id = ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id = '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-10-23',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1736659' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1736659 
0.0006   UPDATE employer_jobs SET hit_counts = '***Sep-23-2026=494***Sep-24-2026=60***Sep-25-2026=24***Sep-26-2026=16***Sep-27-2026=18***Sep-28-2026=24***Sep-29-2026=15***Sep-30-2026=11***Oct-01-2026=2***Oct-02-2026=12***Oct-03-2026=12***Oct-04-2026=5***Oct-05-2026=9***Oct-06-2026=9***Oct-07-2026=16***Oct-08-2026=1***Oct-09-2026=4***Oct-10-2026=3***Oct-11-2026=1***Oct-12-2026=5***Oct-13-2026=2***Oct-14-2026=3***Oct-15-2026=2***Oct-16-2026=1***Oct-17-2026=2***Oct-18-2026=1***Oct-20-2026=1***Oct-22-2026=1***Oct-23-2026=2' WHERE job_id= '1736659'  
0.0006   UPDATE employer_jobs SET monthly_hits = '***Sep-2026=662***Oct-2026=94' WHERE job_id= '1736659'  
0.0007   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1736659' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1736659 
0.0015   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '976598'
AND `date_added` >= '2022-06-08' 
0.0003   select * from teasers 
0.0002   SELECT * FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)