From 7d878bd5c616f8e4250d07218a549dea9cb4225f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Sat, 11 Jul 2026 11:03:26 +0000 Subject: [PATCH] fix(website-to-video): correct local render dimensions guidance --- .../websiteToVideoSkillContent.test.ts | 24 +++++++++++++++++++ skills-manifest.json | 2 +- .../references/step-6-validate.md | 9 ++++--- 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 packages/cli/src/commands/websiteToVideoSkillContent.test.ts diff --git a/packages/cli/src/commands/websiteToVideoSkillContent.test.ts b/packages/cli/src/commands/websiteToVideoSkillContent.test.ts new file mode 100644 index 0000000000..b10fc7f61b --- /dev/null +++ b/packages/cli/src/commands/websiteToVideoSkillContent.test.ts @@ -0,0 +1,24 @@ +// @vitest-environment node +import { readFileSync } from "node:fs"; +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { describe, expect, it } from "vitest"; + +const REPO_ROOT = join(fileURLToPath(new URL(".", import.meta.url)), "..", "..", "..", ".."); +const VALIDATION_GUIDE = readFileSync( + join(REPO_ROOT, "skills", "website-to-video", "references", "step-6-validate.md"), + "utf8", +); + +describe("website-to-video validation guide", () => { + it("does not pass cloud-only dimension flags to local render", () => { + const localRenderExample = VALIDATION_GUIDE.match( + /node \/\/packages\/cli\/dist\/cli\.js render[\s\S]*?```/, + )?.[0]; + + expect(localRenderExample).toBeDefined(); + expect(localRenderExample).not.toContain("--width"); + expect(localRenderExample).not.toContain("--height"); + expect(localRenderExample).toContain("--quality draft"); + }); +}); diff --git a/skills-manifest.json b/skills-manifest.json index 9321089cb1..cb2ece0593 100644 --- a/skills-manifest.json +++ b/skills-manifest.json @@ -78,7 +78,7 @@ "files": 27 }, "website-to-video": { - "hash": "e8143700c50b7469", + "hash": "623619275f0fa75b", "files": 32 } } diff --git a/skills/website-to-video/references/step-6-validate.md b/skills/website-to-video/references/step-6-validate.md index 87bedd5093..27cc1712f6 100644 --- a/skills/website-to-video/references/step-6-validate.md +++ b/skills/website-to-video/references/step-6-validate.md @@ -230,13 +230,16 @@ Open the Studio URL in a browser via Playwright (or another browser tool you hav [ ] Audio audible and not clipped/peaked ``` -### Path 2: Render a low-res MP4 and read it frame-by-frame +### Path 2: Render a draft MP4 and read it frame-by-frame -When Playwright isn't available, render at 540p (fast — ~30s for a 30s video) and read the MP4: +When Playwright isn't available, render at draft quality and read the MP4. Local +`hyperframes render` takes its canvas dimensions from the composition's +`data-width` / `data-height`; `--width` and `--height` are cloud-render flags and +are not supported by the local command. ```bash node //packages/cli/dist/cli.js render \ - --width 960 --height 540 --quality medium + --quality draft ``` Then sample the resulting MP4 at minimum 5fps (use `ffmpeg -i -r 5 frames/frame-%04d.png` if needed). Read those frames sequentially. For each SFX moment in STORYBOARD.md, find the corresponding frame and confirm the visual matches.