Repository navigation
Musab/ai content pipeline for on brand videos - #29
Merged
dazzatronus merged 11 commits intoOct 28, 2026
Merged
Conversation
Give Claude room to think before it answers and stop on a cut-off reply, keep one approval row per outcome whatever the reviewer writes in it, hold CSV values that name Object.prototype members, name the job in a timeout, keep ffmpeg's own message when a frame fails, replace every placeholder in a scene line, and exit 0 after the preview.
A video that was rendered but not downloaded is downloaded from the link in the approval sheet instead of being rendered and paid again. The first run saves the template and later runs update it. Held rows in the sheet are replaced on each run and rows with a video are never changed. A missing key in brand.json stops the run with its name.
The approval sheet keeps its own header, so a column the reviewer adds or moves survives a rewrite. A rerun resumes from the latest video row. A handle starts with a letter or a digit. A null value in brand.json counts as missing. The download-failed note says what the next run does.
Both files go through the same reader, so a sheet with a renamed or deleted column, or a row with too many fields, stops the run with the file name like the product export does. Header cells are quoted like every other cell. The download-failed note and the README say that a product is rendered again only when its link fails.
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Makes an on-brand 9:16 video for each product in a store's CSV export, from a brand guide in brand.json. Claude writes each voice-over script, an image-edit model puts the real product on a brand backdrop or in a scene for its type, an image-to-video model animates it, and code checks on the words and vision checks against the packshot hold anything off-brand in an approval sheet. Shotstack renders each video from one saved template with the voice-over, captions and one music track for the run.
Companion code for https://shotstack.io/learn/ai-content-pipeline-automation-brands/
Checks done: