chengfeng-landingpage production
Turn the product's central tension into one visual system. Decide the direction; do not present a menu of concepts or ask the user to choose one.
Inputs
Use the product description, target audience, desired action, brand constraints, and any supplied reference. Infer missing details from the request. State a material assumption only when it changes the outcome.
Find the product tension before choosing a style. Express it as a short relationship, such as autonomous execution under human control or complex work made calm and legible.
Case library
For a video-led landing-page task, read references/case-studies.md before defining the first screen. The public package intentionally contains only the reusable patterns, not the original local pages or generated footage. Treat every pattern as a structural reference, never as a source to copy: do not reuse another brand, wording, visual asset, generated footage, or exact prompt.
Workflow
- Distill one product claim and one central tension.
- Select the single strongest concrete metaphor. Prefer an everyday physical system with visible cause and effect; avoid decorative, generic, or purely stylistic concepts.
- Create a mapping from product roles and relationships to visual roles. Every major object, scale relationship, and motion must support that mapping.
- Define the visual grammar:
- composition and negative space;
- palette, material, and lighting;
- semantic motion: specify exactly what moves, what remains stable, and why;
- first-screen hierarchy: video world, contrast/atmosphere layer, live navigation and copy, primary action, and one small state or interaction cue;
- headline and supporting copy that name the proposition without explaining the image literally;
- typography that matches the language of the live copy, including its reading size, line height, and tracking;
- interaction behavior that reinforces the same relationship.
- For every visual or landing-page production, create a motion source before building the page:
- create an original, production-quality raster first-frame visual with usable negative space for live UI; when the Agent has image-generation capability, generate it directly and prefer the
image2model when available; - when the Agent has no image-generation capability, give the user one copy-ready
image2first-frame prompt and the exact image contract (16:9, intended subject position, reserved live-copy region, palette/material/lighting, no baked text/logo/UI). Ask the user to generate the image through an available image-generation service—preferably one offeringimage2—and upload the resulting PNG back to the Agent; - do not use an SVG, CSS diagram, wireframe, or other placeholder as the generation source;
- create a playable 4–8 second video loop from that frame;
- animate the part of the metaphor that proves the product relationship; keep framing and non-semantic elements stable;
- keep text, logos, and UI out of generated footage.
- create an original, production-quality raster first-frame visual with usable negative space for live UI; when the Agent has image-generation capability, generate it directly and prefer the
- Directly produce the requested scope:
- strategy / concept: deliver the metaphor map, a production-ready creative brief, and a concrete video treatment;
- video: deliver the loop as the primary artifact, with its poster/first frame;
- landing page: build the homepage hero only by default. Make the generated video a full-viewport hero world; layer editable DOM navigation, proposition, action, and one restrained status/interaction cue over it; include the poster fallback, responsive layout, and reduced-motion behavior. Do not invent, add, or restyle sections below the hero, nor modify another specimen, unless the user explicitly expands the scope. Use a contained video card only when the user explicitly asks for it or the task is a UI/product walkthrough where a full-bleed world would contradict the claim.
- Resolve the video source after the first frame is approved:
- When an eligible, configured video API is authorized for the task, generate the loop through it and continue directly.
- When no video API is configured, available, or authorized, do not replace the video with a static image or a generic local animation. Give the user a manual video-generation handoff: the original first-frame PNG, one copy-ready image-to-video prompt, and the exact export contract (
16:9,4–8 seconds, locked camera, one semantic motion, no baked text/logo/UI, muted MP4). Recommend a browser-accessible image-to-video service the user already has access to; if none is known, describe the required capability rather than inventing a provider. Ask the user to upload the resulting MP4 back to the Agent. - On MP4 import, inspect the media and finish the same full-viewport hero treatment. The origin of the video may differ; the first-screen quality contract does not.
- Validate the result. Confirm that the metaphor is legible without the copy, that copy still works without the image, and that no visual or motion cue contradicts the product claim. For media, verify a real playable video file, duration, first/middle/last frame, and audio state. For a landing page, verify that the first viewport uses the video as its world rather than a contained illustration, and that all editable UI remains in DOM above the footage. When live copy is CJK, run
assets/tools/audit-cjk.jsin the browser at 1440px and 390px and requiretotal: 0at both; reject any first screen relying on a system font stack, using weights the font does not ship, or showing negative tracking, sub-1.2 line height, sub-12px CJK, or horizontal overflow.
CJK typography
When editable UI copy is predominantly Chinese, Japanese, Korean, or mixed CJK. Full spec, rationale, and failure cases: references/cjk-typography.md. Han characters are fixed-width blocks that fill the em box — every English typographic instinct points the wrong way here.
- Ship the font; do not rely on a system stack. A stack that starts at
"PingFang SC"renders as three different faces on macOS / Windows / Linux, and PingFang is a system UI face that makes any art-directed hero look like a settings screen. Subset a webfont against the page's own copy — a hero uses 100–300 glyphs, so a full page lands at 160–230KB. Useassets/tools/build-fonts.mjs; keep system faces only as a missing-glyph fallback. Re-run the script after any copy change, or new characters silently fall back mid-sentence. macOS system faces (PingFang, Songti/SinoType) are licensed with the OS and may not be embedded or redistributed — fallback position only. - Pick the typeface from the metaphor, not from a global default. Type is part of the metaphor: a neutral corporate sans over a dark classical oil painting has the image talking about craft and weight while the text talks about system settings. Read the material and era in the frame — wood/paper/stone/brass/handwork →
classical(serif); steel/hydraulics/gauges/speed/pressure →industrial; screens/data/abstract geometry →neutral. Body copy defaults toneutralregardless. Declare the choice with its reasoning in the page'sfonts.config.json; full voice catalog and selection rules inreferences/cjk-type-voices.md. - Use only weights the font actually ships. PingFang has 100–600 in steps of 100; a subset ships whatever you packed.
650/680/560snap to the nearest real weight, and withfont-synthesis: none(keep it) nothing is synthesized — three declared levels render as two. Bind tokens to real files: 400 body, 500 nav/labels, 600 buttons/subheads, 700 display. - Never track CJK negative. Headings and body at
0; small labels at most.02em. Negative tracking merges strokes on dense glyphs. Reserve.04em–.07emtracking and uppercase for purely Latin technical labels. - Line height: display
≥1.2(use 1.22), body1.75–1.85, single-line labels1.5. English editorial values like.91,1.06, or1overlap CJK lines outright. Check thefontshorthand too —font: 600 36px/1.1is the same bug, just harder to see. - Size floor is 12px for CJK, not 11px. Han glyphs carry far more strokes than Latin at the same size. Body ≥16px desktop / ≥15px narrow; nav and actions ≥13px / ≥12px; labels, footers, status ≥12px. Values like
.55rem(8.8px) inherited from English templates must all be raised. - Measure in
em— 1em is exactly one Han character. Display≤11em(11 characters per line), body≤26em.32emexceeds the comfortable 24–28 character scan width. - Lock semantic line breaks at wide widths only.
white-space: nowrapby default with a narrow-width escape hatch overflows the viewport between the two breakpoints; invert it (@media (min-width: 781px)). Author breaks with explicit spans, nevertext-wrap: balance. Define a separate line plan for narrow screens and keep punctuation off line starts. - Set
line-break: strict,word-break: normal,overflow-wrap: normal, plustext-spacing-trimandtext-autospacebehind@supportsfor Han–Latin spacing and full-width punctuation trimming. - Give CJK blocks more vertical air than English. Dense Han blocks have none of the ascender/descender variation that groups English text visually; separation comes entirely from whitespace. Use a 4px scale with named rhythm tokens (eyebrow→title, title→body, body→action).
- Choose the CJK type voice from the product meaning: a product/UI claim normally leads with a CJK sans-serif hierarchy; use a serif display face only when the editorial, cultural, or metaphorical direction earns it — and then carry it through, rather than leaving a serif
h2stranded under a sansh1. - Audit in a real browser before claiming completion. Run
assets/tools/audit-cjk.jsat 1440px and 390px; it flags negative tracking, sub-1.2 line height, non-existent weights, sub-12px CJK, over-wide measure, and horizontal overflow. Reading the CSS is not enough — media queries, trailing override blocks, andfontshorthands all diverge from the rendered value.total: 0at both widths is the bar.
Video-led interface contract
Treat this as a hard constraint for every video-led landing page. Let the video establish the world; let the UI make one proposition legible.
- Define semantic tokens before styling:
background,panel,ink,muted,line, andaccent. Keep a dark video world when it serves the metaphor; do not flatten it into a generic light product UI. - Give the first viewport one hierarchy only: brand/navigation, one optional eyebrow, a deliberate headline, one supporting sentence, one primary action with at most one quiet secondary action, and one functional state or control. Remove duplicate counters, coordinate readouts, scroll prompts, and decorative status panels.
- Make the desktop CJK headline two intentional semantic lines when possible and never more than three; target
44px–60pxwith1.22line height (never below1.2— see CJK typography). On narrow screens, define its new line plan at30px–40px. Use explicit spans or breaks; never use balanced wrapping to invent the rhythm. - Keep the supporting copy to one short sentence,
15px–17px, with enough contrast and1.75–1.85line height. Preserve more negative space than annotation around the focal action in the video. - Limit text over video to the proposition group, the action group, and one real control or state cue. Every remaining overlay must either change a state, report a real state, or be removed.
- Use a 4px spacing scale. Use
6pxcorners and1pxborders for interface surfaces and buttons. Reserve fully rounded pills for compact, genuinely status-like controls; do not use them as the default marketing-button shape. - Keep controls compact and functional: generally
12px–14pxtype, visible hover/focus states, and no ornamental interaction labels. Make decorative motion subordinate to hierarchy, respect reduced motion, and do not animate every UI cluster on entry. - Reject a first screen if a semantic phrase is split accidentally, the headline competes with the video for most of the frame, more than one non-functional overlay group remains, a generic pill/button treatment is repeated, or the page cannot be understood at both a 1054px desktop viewport and a narrow mobile viewport.
Output contract
When producing a concept, return these sections in order:
产品主张核心张力视觉隐喻映射表达语法制作指令
When producing a page or video, use the same logic internally and lead with the finished deliverable. Always hand off the standalone video as well as any landing page. Explain the mapping only when the user asks for the reasoning.
Guardrails
- Do not give several visual directions, moodboards, or a selection step unless the user explicitly asks for alternatives.
- Do not treat a color palette or an art style as a metaphor. The relationship must be visible in object, composition, and behavior.
- Do not bake editable UI text, product claims, or logos into generated imagery or footage.
- Create original assets; do not reproduce a reference brand's marks, copy, or artwork.
- Keep generated video as an atmosphere or story layer. Keep navigation, copy, controls, and accessibility in the web layer.
- Do not choose a static-only visual treatment for a page, even when a CSS illustration could represent the metaphor.
- Do not place the generated video in a side panel, card, device mockup, or other contained frame by default. A full-viewport video hero is the landing-page default; deviate only for an explicit user constraint or a clear product-walkthrough need.
- Do not paste Latin-only font imports or English-first tight type metrics into a CJK interface. Set the language-appropriate stack and tune the rendered first viewport.
- Do not treat CJK typography as a font substitution. Define the intended line count, semantic breaks, Han–Latin spacing, and hierarchy before tuning CSS values; verify the rendered layout at desktop and narrow mobile widths.
- Do not ship a CJK page whose primary font is a system stack, and do not declare a weight the shipped font does not contain.
- Do not fix typography by appending another override block at the end of the stylesheet. Patch stacks make one value live in two places and drift apart; edit the source rule instead. If a trailing block already exists, fold it in rather than adding a third layer.
- Do not batch-rewrite minified or single-line CSS with regex without verifying brace balance and numeric validity afterwards — greedy matches turn
.72rem/1.55into1.5.55. - Use a paid external media API only when it is authorized in the task. If it is unavailable, preserve the video-led outcome through the manual handoff: provide the first frame, copy-ready image-to-video prompt, and MP4 export requirements; then resume after the user imports the generated video. Do not silently downgrade to a static hero or pretend a local placeholder is equivalent footage.
- If image generation is unavailable, preserve the same first-frame quality bar through the manual
image2prompt handoff. Do not replace the required raster first frame with an SVG, CSS drawing, stock placeholder, or unrelated screenshot.