Diwali falls on Sunday, November 8 this year, and Bhai Dooj three days later, on Wednesday, November 11 (some calendars list the 10th). That's two posts: a countdown teaser in the days before Diwali, and a sibling photo collage for Bhai Dooj. I made both in CapCut. Each had a problem that the obvious fix didn't solve. The lamps in the eye looked pasted in until the prompt described the curve of the eyeball. The old family photos only looked like one set after I matched their skin tones one photo at a time. The one-click fixes left the faces as far apart as before, or further.
The finished teaser: one generated still, with the text added in the editor.
A reflection has to bend with the eye
I made the eye stills with the AI image generator (Image mode, Seedream 4.5, 16:9, 2K), asking each time for five lit clay lamps reflected in the eye. To compare the results I counted the flames and measured how much the row of flames curves: how far its middle sags below a straight line between the end flames, as a share of the row's width. A reflection on a round eye should curve. A picture pasted into the pupil stays straight.
Words about mirrors changed nothing. Describing the shape of the railing did.
Describing how a reflection works (“mirror-image”, “convex mirror”) had no effect in these runs. Describing what the curve should look like (“the railing bends into an arc that follows the curve of the eye”) did. This is the wording that made the teaser:
Extreme close-up of a young woman's eye, filling the frame, sharp focus on the iris. The round, glossy surface of her eye reflects a row of five lit clay oil lamps on a balcony railing at night, curved like a fisheye lens view: the railing bends into an arc that follows the curve of the eye, the five lamps sit along that arc, and the reflection wraps across the dark pupil and the iris.
Two more setups didn't read as reflections. With both eyes in the frame, each eye got three lamp bowls carrying five flames between them, drawn flat on top of the pupil like stickers, and one flame in the right eye came out much smaller than the rest. A daylight scene, a rangoli in a sunlit courtyard, came back twice as a bright round picture sitting on the iris, the first time next to a second, separate pupil. What worked here was one eye and a night scene with small lights.
Top: “points of light” became whole lamps, and two eyes got two separate drawings. Bottom: a daylight scene read as a lens, not a reflection.
One still for every day of the countdown
Make the still once and keep it for the whole countdown. The “convex mirror” prompt sent twice returned two different eyes, with a different iris and a different railing, so an image regenerated for each day won't match the day before. Change only the number.
The text goes on in CapCut's online editor. Upload the still, and it lands on the timeline as a 5-second clip. Open Text and click Add heading, then type over the placeholder. The heading appeared in the middle of the frame, which in an eye close-up is right on top of the reflection. In the heading's Basic panel, under Transform, I set Scale to 72% and Position Y to 420. That puts the text band between 4.5% and 17.7% of the frame height, clear of the pupil, with about a quarter of the width free on each side.
The heading lands on the reflection; two numbers in the Basic panel move it clear.
Export from Export, then Download. The Format menu offered MP4 and MOV, and I found no still-image option in the export settings or the canvas menu, so for the still version I took a frame from the exported 1080p clip. For the next day, edit the text and export again. With Diwali on the 8th, “Diwali in 3 days” goes up on Thursday, November 5.
Four photos, four kinds of old light
A sibling collage usually mixes photos from different decades, and each decade's camera left its own color. To test fixes on that problem, I generated four photos of the same brother and sister at four ages and wrote a different kind of old light into each prompt: a 1990s glossy print faded to yellow-orange, a 2005 compact-camera flash photo with a cool blue cast, a 2014 phone photo under a green fluorescent tube, and a recent phone photo with neutral color. In the editor I set each one to 50% scale and moved it to a corner of the 16:9 frame (Position X ±480, Y ±270), which makes a two-by-two collage.
Then I measured the skin on both faces in each photo: the average color of the cheeks in CIELAB, where L* is lightness, a* runs from green to red, and b* from blue to yellow. The number to watch is the skin spread: how far apart the four photos' skin colors are in a* and b*, as the average and the largest gap between any two photos. As they came, the spread was 13.3 on average and 23.1 at most, and face lightness ran from 43.7 to 71.7. The rooms were further apart than the faces. The fluorescent photo's room was clearly green, but the skin in it wasn't (a* +22.4, close to the others).
What each fix did to the faces
Lower is better. The two one-click fixes made the gap wider. Photo-by-photo settings closed it.
AI color correction is a switch in each photo's Color adjustment panel. It changed each photo on its own terms. It brightened the two darkest faces (L* up by 9.9 and 8.5) and left the casts in place: the flash photo came out bluer overall (b* from −11.6 to −17.4), and the fluorescent photo stayed green. It doesn't compare the photos with each other, so nothing pulled them together.
One filter over everything didn't move all four photos by the same amount. It pushed the two darkest faces much further toward red and yellow (b* +8.4 and +12.3) than the two bright ones (+6.2 and +6.6), so the gap grew. The same thing happened when I added the filter after matching the color: the spread went from 3.2 back up to 10.1. Evening out the brightness first fixed that. With face lightness brought to between 58 and 63 L*, the filter kept the spread at 4.6.
In the first three, the faces still disagree. In the last one, they agree while the rooms stay different.
The settings, photo by photo
Pick the most neutral photo as the reference. Here that's the recent one. Then select each of the other photos on the canvas, open Color adjustment, and on the Basic tab use Temperature (blue to yellow) and Hue (green to magenta) until the skin matches the reference. Judge the skin, not the walls. Then set Brightness photo by photo until the faces are about equally light. Add the filter last, from Filters in the left bar. It goes on as its own bar on the timeline and colors the whole frame.
These values fit these four photos. Yours will need their own, but the order carries over: color first, then brightness, then one filter.
The controls used above. The AI color correction switch carries a small gem icon; the account I tested on has a Pro subscription.
The finished collage: color and brightness set photo by photo, then Golden Days over the whole frame.
A slow push for the Bhai Dooj post
For a moving version, I exported the collage, brought the clip back into a new project, and added two keyframes to Scale. With the playhead at the start, click the diamond next to Scale (its tooltip reads “Add keyframe”). Then move the playhead near the end and type 110%. The second keyframe was added automatically. The zoom grew at an even rate, about 2% per second, reaching ×1.10 at 5 seconds, with no easing at either end. By the end the frame loses about 4.5% of its width on each side, so keep faces away from the outer edges.
Scale keyframes at 100% and 110%, exported at 1080p and converted to a GIF for this page.
If you need a GIF yourself, the three-dot button next to Download in the Export panel has Download GIF, with a trim range and three sizes: 240P, plus 320P and 640P marked with the gem icon. At 240P I got a 428×240 GIF at 10 frames a second, 2.8 MB, with the zoom intact. Two of my eight exports stopped with “Couldn't save” and “Something went wrong”. Clicking Try again in the same dialog finished each one.
Leave the rooms as they were
In the finished collage the rooms still don't match. The fluorescent room is still green, and the flash photo's night is still blue. Overall the four photos are only a little closer in color than when they came in. The faces are about three times closer. The set reads as one family because the skin agrees, while the rooms still show which decade each photo came from. When you match your own photos, stop when the faces agree. Judge by the skin, and leave the walls alone.
Configuration and cost. Thirteen stills: Image mode, Seedream 4.5, 16:9, 2K. The composer showed “consume 1 credit” for each, and the account's credit details listed thirteen charges of 1 credit on 2026-09-28. That's 13 credits in total, including one redo of the 2005 photo, whose first version didn't look like the same family. Those figures apply to that configuration on that date; other models and resolutions are charged differently. The editor work (AI color correction, the filter, text, keyframes, exports and the GIF download) added no entries to the credit history. Festival dates were checked on 2026-09-28 against Drik Panchang, and the 2026 dates move each year.
Files. Stills 2560×1440. Editor exports 1920×1080 at 24 fps (MP4). Every generated image carries a small “Ai” mark in its top-left corner, and the mark survives into the collage. The images of the collage here are frames from the exported files. Prompt text is quoted as sent.
How the faces were measured. A standard face detector found the two faces in each source still. I mapped the boxes into the collage using the known 50% scale and corner positions and drew them back to check. Inside each box I averaged the cheek area in CIELAB, dropping the darkest 15% and brightest 10% of pixels (hair, teeth, highlights). I tested it by shifting a whole photo by known amounts: +8 in a* read +8.06, and −10 in b* read −10.02. A large +12 push in b* read +7.9, because very saturated colors clipped, so large shifts read low. The editor's preview measured up to 4.3 a* away from the exported file, so every number here comes from an export.
How the flames were measured. The measure finds the near-white cores of the flames and fits a curve through them. On test images with a known number of planted flames (3, 5, 5 and 7) and a known curve (0, 0, 0.15 and −0.10), it got every count right and every curve within 0.001. It also counts white letters, so on the finished teaser I applied it below the heading only: 5 flames, curve 0.066, against 0.065 on the still. On the two-eye still it counted one flame twice and missed a tiny one, so those counts were made by eye. The zoom in the moving version was measured by matching features between the first frame and later frames.
Corrected along the way. Some of my first entries in the editor's number fields didn't land where I typed them. Only settings read back from the panel went into an export. My first search for faces across the finished collage put boxes on a shirt, and it was replaced by the mapped boxes described above.