@lemoncat7/dsh-partner 2.4.2 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/docs/THIRD_PARTY_LICENSES.md +13 -0
- package/docs/attachment-storage.md +18 -0
- package/docs/director-skills.md +24 -0
- package/docs/long-task-continuation.md +51 -0
- package/docs/releases/2.5.0.md +13 -0
- package/docs/releases/2.6.0.md +11 -0
- package/docs/releases/2.7.0.md +21 -0
- package/lib/agent-runtime.d.ts +9 -1
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +117 -17
- package/lib/agent-runtime.js.map +1 -1
- package/lib/api/features/attachments-api.d.ts.map +1 -1
- package/lib/api/features/attachments-api.js +31 -1
- package/lib/api/features/attachments-api.js.map +1 -1
- package/lib/api.d.ts +1 -1
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +1 -1
- package/lib/api.js.map +1 -1
- package/lib/attachments/grouped-storage.d.ts +5 -0
- package/lib/attachments/grouped-storage.d.ts.map +1 -0
- package/lib/attachments/grouped-storage.js +47 -0
- package/lib/attachments/grouped-storage.js.map +1 -0
- package/lib/attachments/service.d.ts +17 -0
- package/lib/attachments/service.d.ts.map +1 -1
- package/lib/attachments/service.js +100 -8
- package/lib/attachments/service.js.map +1 -1
- package/lib/attachments/shared-storage.d.ts +7 -0
- package/lib/attachments/shared-storage.d.ts.map +1 -0
- package/lib/attachments/shared-storage.js +44 -0
- package/lib/attachments/shared-storage.js.map +1 -0
- package/lib/attachments/storage-admin.d.ts +6 -0
- package/lib/attachments/storage-admin.d.ts.map +1 -0
- package/lib/attachments/storage-admin.js +43 -0
- package/lib/attachments/storage-admin.js.map +1 -0
- package/lib/attachments/storage-types.d.ts +33 -0
- package/lib/attachments/storage-types.d.ts.map +1 -0
- package/lib/attachments/storage-types.js +2 -0
- package/lib/attachments/storage-types.js.map +1 -0
- package/lib/attachments/tool.d.ts.map +1 -1
- package/lib/attachments/tool.js +16 -5
- package/lib/attachments/tool.js.map +1 -1
- package/lib/channels/delivery-policy.d.ts.map +1 -1
- package/lib/channels/delivery-policy.js +7 -4
- package/lib/channels/delivery-policy.js.map +1 -1
- package/lib/channels/direct/message-format.js +418 -281
- package/lib/channels/direct/message-format.js.map +4 -4
- package/lib/channels/manager.d.ts +7 -3
- package/lib/channels/manager.d.ts.map +1 -1
- package/lib/channels/manager.js +73 -38
- package/lib/channels/manager.js.map +1 -1
- package/lib/channels/weixin/api.d.ts.map +1 -1
- package/lib/channels/weixin/api.js +7 -2
- package/lib/channels/weixin/api.js.map +1 -1
- package/lib/channels/weixin/errors.d.ts +14 -0
- package/lib/channels/weixin/errors.d.ts.map +1 -0
- package/lib/channels/weixin/errors.js +29 -0
- package/lib/channels/weixin/errors.js.map +1 -0
- package/lib/channels/weixin/poll.d.ts +14 -0
- package/lib/channels/weixin/poll.d.ts.map +1 -0
- package/lib/channels/weixin/poll.js +50 -0
- package/lib/channels/weixin/poll.js.map +1 -0
- package/lib/client-api.d.ts +1 -23
- package/lib/client-api.d.ts.map +1 -1
- package/lib/client-api.js.map +1 -1
- package/lib/client-controller.d.ts.map +1 -1
- package/lib/client-controller.js +3 -3
- package/lib/client-controller.js.map +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +1078 -679
- package/lib/client.js.map +4 -4
- package/lib/collaboration/composition.d.ts.map +1 -1
- package/lib/collaboration/composition.js +32 -8
- package/lib/collaboration/composition.js.map +1 -1
- package/lib/collaboration/domain.d.ts +8 -0
- package/lib/collaboration/domain.d.ts.map +1 -1
- package/lib/collaboration/domain.js.map +1 -1
- package/lib/collaboration/service.d.ts.map +1 -1
- package/lib/collaboration/service.js +38 -5
- package/lib/collaboration/service.js.map +1 -1
- package/lib/concern-notification.d.ts.map +1 -1
- package/lib/concern-notification.js +2 -1
- package/lib/concern-notification.js.map +1 -1
- package/lib/concern-tool.js +1 -1
- package/lib/concern-tool.js.map +1 -1
- package/lib/execution/reply-progress.d.ts.map +1 -1
- package/lib/execution/reply-progress.js +4 -2
- package/lib/execution/reply-progress.js.map +1 -1
- package/lib/execution/service.d.ts +1 -1
- package/lib/execution/service.d.ts.map +1 -1
- package/lib/execution/service.js +4 -7
- package/lib/execution/service.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +7 -1
- package/lib/index.js.map +1 -1
- package/lib/memory-reflection.js +2 -2
- package/lib/memory-reflection.js.map +1 -1
- package/lib/message-source.d.ts +25 -0
- package/lib/message-source.d.ts.map +1 -0
- package/lib/message-source.js +8 -0
- package/lib/message-source.js.map +1 -0
- package/lib/observation-loop.js +4 -4
- package/lib/observation-loop.js.map +1 -1
- package/lib/pendant/reader.js +1 -1
- package/lib/pendant/reader.js.map +1 -1
- package/lib/pendant/settings-panel.js +1 -1
- package/lib/pendant/settings-panel.js.map +1 -1
- package/lib/persona/service.js +1 -1
- package/lib/persona/service.js.map +1 -1
- package/lib/requirements/attachments.d.ts +7 -0
- package/lib/requirements/attachments.d.ts.map +1 -0
- package/lib/requirements/attachments.js +26 -0
- package/lib/requirements/attachments.js.map +1 -0
- package/lib/requirements/domain.d.ts +1 -1
- package/lib/requirements/domain.d.ts.map +1 -1
- package/lib/requirements/service.d.ts.map +1 -1
- package/lib/requirements/service.js +4 -1
- package/lib/requirements/service.js.map +1 -1
- package/lib/scheduler/channel-origin.d.ts +7 -0
- package/lib/scheduler/channel-origin.d.ts.map +1 -0
- package/lib/scheduler/channel-origin.js +27 -0
- package/lib/scheduler/channel-origin.js.map +1 -0
- package/lib/scheduler/continuations.d.ts +29 -0
- package/lib/scheduler/continuations.d.ts.map +1 -0
- package/lib/scheduler/continuations.js +286 -0
- package/lib/scheduler/continuations.js.map +1 -0
- package/lib/scheduler/domain.d.ts +40 -0
- package/lib/scheduler/domain.d.ts.map +1 -1
- package/lib/scheduler/final-reply.d.ts +13 -0
- package/lib/scheduler/final-reply.d.ts.map +1 -0
- package/lib/scheduler/final-reply.js +21 -0
- package/lib/scheduler/final-reply.js.map +1 -0
- package/lib/scheduler/service.d.ts +2 -0
- package/lib/scheduler/service.d.ts.map +1 -1
- package/lib/scheduler/service.js +30 -1
- package/lib/scheduler/service.js.map +1 -1
- package/lib/scheduler/wakeup-context.d.ts +7 -0
- package/lib/scheduler/wakeup-context.d.ts.map +1 -0
- package/lib/scheduler/wakeup-context.js +14 -0
- package/lib/scheduler/wakeup-context.js.map +1 -0
- package/lib/scheduler/wakeup.d.ts +11 -0
- package/lib/scheduler/wakeup.d.ts.map +1 -0
- package/lib/scheduler/wakeup.js +52 -0
- package/lib/scheduler/wakeup.js.map +1 -0
- package/lib/skills/builtin-resources.d.ts +6 -0
- package/lib/skills/builtin-resources.d.ts.map +1 -0
- package/lib/skills/builtin-resources.js +47 -0
- package/lib/skills/builtin-resources.js.map +1 -0
- package/lib/skills/builtin.d.ts +2 -5
- package/lib/skills/builtin.d.ts.map +1 -1
- package/lib/skills/builtin.js +11 -0
- package/lib/skills/builtin.js.map +1 -1
- package/lib/skills/director-builtins.d.ts +8 -0
- package/lib/skills/director-builtins.d.ts.map +1 -0
- package/lib/skills/director-builtins.js +65 -0
- package/lib/skills/director-builtins.js.map +1 -0
- package/lib/skills/drama-builtin.d.ts +3 -0
- package/lib/skills/drama-builtin.d.ts.map +1 -0
- package/lib/skills/drama-builtin.js +49 -0
- package/lib/skills/drama-builtin.js.map +1 -0
- package/lib/skills/long-task-continuation.d.ts +4 -0
- package/lib/skills/long-task-continuation.d.ts.map +1 -0
- package/lib/skills/long-task-continuation.js +43 -0
- package/lib/skills/long-task-continuation.js.map +1 -0
- package/lib/skills/service.d.ts.map +1 -1
- package/lib/skills/service.js +8 -3
- package/lib/skills/service.js.map +1 -1
- package/lib/skills/viora-canvas-builtin.d.ts +3 -0
- package/lib/skills/viora-canvas-builtin.d.ts.map +1 -0
- package/lib/skills/viora-canvas-builtin.js +19 -0
- package/lib/skills/viora-canvas-builtin.js.map +1 -0
- package/lib/storage/migrate-layout.d.ts.map +1 -1
- package/lib/storage/migrate-layout.js +13 -4
- package/lib/storage/migrate-layout.js.map +1 -1
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +2 -0
- package/lib/store.js.map +1 -1
- package/lib/tasks/context.js +1 -0
- package/lib/tasks/context.js.map +1 -1
- package/lib/tasks/continuation-yield.d.ts +4 -0
- package/lib/tasks/continuation-yield.d.ts.map +1 -0
- package/lib/tasks/continuation-yield.js +27 -0
- package/lib/tasks/continuation-yield.js.map +1 -0
- package/lib/tasks/continuation.d.ts +13 -0
- package/lib/tasks/continuation.d.ts.map +1 -0
- package/lib/tasks/continuation.js +106 -0
- package/lib/tasks/continuation.js.map +1 -0
- package/lib/tasks/domain.d.ts +2 -0
- package/lib/tasks/domain.d.ts.map +1 -1
- package/lib/tasks/scheduling.d.ts.map +1 -1
- package/lib/tasks/scheduling.js +7 -0
- package/lib/tasks/scheduling.js.map +1 -1
- package/lib/tasks/service.d.ts +2 -1
- package/lib/tasks/service.d.ts.map +1 -1
- package/lib/tasks/service.js +19 -1
- package/lib/tasks/service.js.map +1 -1
- package/lib/ui/attachment-storage.d.ts +2 -0
- package/lib/ui/attachment-storage.d.ts.map +1 -0
- package/lib/ui/attachment-storage.js +59 -0
- package/lib/ui/attachment-storage.js.map +1 -0
- package/lib/ui/capability-editor.js +1 -1
- package/lib/ui/capability-editor.js.map +1 -1
- package/lib/ui/companion-access-panel.js +1 -1
- package/lib/ui/companion-access-panel.js.map +1 -1
- package/lib/ui/companion-create.js +1 -1
- package/lib/ui/companion-create.js.map +1 -1
- package/lib/ui/companion-picker.js +1 -1
- package/lib/ui/companion-picker.js.map +1 -1
- package/lib/ui/identity-editor.js +1 -1
- package/lib/ui/identity-editor.js.map +1 -1
- package/lib/ui/mcp-capabilities.js +1 -1
- package/lib/ui/mcp-capabilities.js.map +1 -1
- package/lib/ui/mcp-panel.js +1 -1
- package/lib/ui/mcp-panel.js.map +1 -1
- package/lib/ui/memory/concern-board.js +2 -2
- package/lib/ui/memory/concern-board.js.map +1 -1
- package/lib/ui/memory/concern-deletion.d.ts +1 -1
- package/lib/ui/memory/concern-deletion.d.ts.map +1 -1
- package/lib/ui/memory/concern-deletion.js +9 -4
- package/lib/ui/memory/concern-deletion.js.map +1 -1
- package/lib/ui/memory/concern-panel.js +1 -1
- package/lib/ui/memory/concern-panel.js.map +1 -1
- package/lib/ui/memory/memory-library.js +1 -1
- package/lib/ui/memory/memory-library.js.map +1 -1
- package/lib/ui/memory/memory-panel.js +1 -1
- package/lib/ui/memory/memory-panel.js.map +1 -1
- package/lib/ui/partner-components.js +1 -1
- package/lib/ui/partner-components.js.map +1 -1
- package/lib/ui/requirement-board.js +1 -1
- package/lib/ui/requirement-board.js.map +1 -1
- package/lib/ui/requirement-dialog.js +1 -1
- package/lib/ui/requirement-dialog.js.map +1 -1
- package/lib/ui/requirement-tasks-panel.js +1 -1
- package/lib/ui/requirement-tasks-panel.js.map +1 -1
- package/lib/ui/schedule-panel.d.ts.map +1 -1
- package/lib/ui/schedule-panel.js +20 -4
- package/lib/ui/schedule-panel.js.map +1 -1
- package/lib/ui/skills-panel.js +1 -1
- package/lib/ui/skills-panel.js.map +1 -1
- package/lib/ui/storage-settings.d.ts.map +1 -1
- package/lib/ui/storage-settings.js +2 -1
- package/lib/ui/storage-settings.js.map +1 -1
- package/lib/ui/task-board-stage.js +1 -1
- package/lib/ui/task-board-stage.js.map +1 -1
- package/lib/ui/workspace-components.js +1 -1
- package/lib/ui/workspace-components.js.map +1 -1
- package/lib/ui/workspace-navigation.d.ts +16 -16
- package/lib/ui/workspace-navigation.js +1 -1
- package/lib/ui/workspace-navigation.js.map +1 -1
- package/package.json +55 -41
- package/resources/skills/cinematic-director/manifest.json +205 -0
- package/resources/skills/cinematic-director/upstream/CHANGELOG.md +213 -0
- package/resources/skills/cinematic-director/upstream/CONTRIBUTING.md +316 -0
- package/resources/skills/cinematic-director/upstream/LICENSE +21 -0
- package/resources/skills/cinematic-director/upstream/README.md +507 -0
- package/resources/skills/cinematic-director/upstream/SKILL.md +420 -0
- package/resources/skills/cinematic-director/upstream/assets/beat-sheet-template.md +97 -0
- package/resources/skills/cinematic-director/upstream/assets/director-book-template.md +254 -0
- package/resources/skills/cinematic-director/upstream/assets/edit-timeline-template.md +147 -0
- package/resources/skills/cinematic-director/upstream/assets/keyframe-prompt-template.md +334 -0
- package/resources/skills/cinematic-director/upstream/assets/qc-checklist.md +153 -0
- package/resources/skills/cinematic-director/upstream/assets/shot-plan-template.md +95 -0
- package/resources/skills/cinematic-director/upstream/assets/sound-plan-template.md +181 -0
- package/resources/skills/cinematic-director/upstream/assets/video-prompt-template.md +305 -0
- package/resources/skills/cinematic-director/upstream/evals/run.md +69 -0
- package/resources/skills/cinematic-director/upstream/references/ai-video-tool-adapters.md +527 -0
- package/resources/skills/cinematic-director/upstream/references/blocking-and-staging.md +424 -0
- package/resources/skills/cinematic-director/upstream/references/cinematic-language.md +595 -0
- package/resources/skills/cinematic-director/upstream/references/continuity-bible.md +410 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/01_spielberg.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/02_hitchcock.md +193 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/03_kubrick.md +196 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/04_kurosawa.md +196 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/05_scorsese.md +195 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/06_fellini.md +197 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/07_bergman.md +197 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/08_tarkovsky.md +184 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/09_wong_kar_wai.md +189 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/10_nolan.md +185 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/11_villeneuve.md +188 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/12_fincher.md +185 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/13_refn.md +186 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/14_bi_gan.md +188 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/15_zhang_yimou.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/16_hou_hsiao_hsien.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/17_park_chan_wook.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/18_malick.md +191 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/19_michael_mann.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/20_coen_brothers.md +194 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/README.md +89 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/example_comparisons.md +140 -0
- package/resources/skills/cinematic-director/upstream/references/editing-and-assembly.md +263 -0
- package/resources/skills/cinematic-director/upstream/references/failure-modes.md +594 -0
- package/resources/skills/cinematic-director/upstream/references/genre-playbooks.md +407 -0
- package/resources/skills/cinematic-director/upstream/references/image-model-adapters.md +290 -0
- package/resources/skills/cinematic-director/upstream/references/lighting-and-color.md +349 -0
- package/resources/skills/cinematic-director/upstream/references/product-and-macro.md +207 -0
- package/resources/skills/cinematic-director/upstream/references/production-workflow.md +238 -0
- package/resources/skills/cinematic-director/upstream/references/prompt-lexicon.md +602 -0
- package/resources/skills/cinematic-director/upstream/references/sound-and-dialogue.md +364 -0
- package/resources/skills/director-skills/manifest.json +541 -0
- package/resources/skills/director-skills/upstream/CHANGELOG.md +32 -0
- package/resources/skills/director-skills/upstream/LICENSE +21 -0
- package/resources/skills/director-skills/upstream/MANIFEST.md +366 -0
- package/resources/skills/director-skills/upstream/README.md +251 -0
- package/resources/skills/director-skills/upstream/RESEARCH_PROVENANCE.md +37 -0
- package/resources/skills/director-skills/upstream/SKILL.md +114 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/SKILL.md +81 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/checklists/continuity_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/examples/character_continuity_update.md +9 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/examples/location_continuity_update.md +9 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/continuity_system.md +21 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/golden_image_workflow.md +29 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/identity_anchors.md +14 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/visual_bible_system.md +15 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/character_profile.md +15 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/continuity_checklist.md +11 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/costume_profile.md +12 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/location_profile.md +14 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/prop_profile.md +13 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/visual_style_bible.md +15 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/tests/continuity_tests.md +6 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/SKILL.md +80 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/checklists/image_prompt_quality_checklist.md +10 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/examples/shot_list_to_image_prompts.md +4 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/image_prompt_components.md +22 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/lighting_and_photorealism.md +19 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/negative_prompt_patterns.md +18 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/prompt_anatomy.md +18 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/character_reference_sheet_prompt.md +5 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/cinematic_still_prompt.md +3 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/keyframe_prompt.md +6 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/location_reference_prompt.md +3 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/prop_prompt.md +3 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/tests/image_prompt_completeness_tests.md +5 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/SKILL.md +84 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/checklists/video_prompt_quality_checklist.md +9 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/examples/image_prompt_to_video_prompt.md +3 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/ai_film_production_pipeline.md +21 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/audio_motion_timing.md +16 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/camera_lens_movement.md +26 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/negative_prompt_patterns.md +18 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/prompt_anatomy.md +18 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/video_prompt_components.md +25 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/image_to_video_prompt.md +5 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/text_to_video_prompt.md +5 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/video_beat_prompt.md +9 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/tests/video_prompt_completeness_tests.md +5 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/SKILL.md +82 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/checklists/model_export_checklist.md +9 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/failed_model_transfer_diagnosis.md +5 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/image_prompt_translation.md +10 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/same_scene_across_models.md +9 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/universal_prompt_to_model_specific_exports.md +14 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/video_prompt_translation.md +9 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/failure_modes_by_model.md +13 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/image_model_profiles.md +226 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/model_capability_matrix.md +24 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/model_update_protocol.md +10 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/parameter_compatibility.md +20 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/prompt_translation_rules.md +18 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/video_model_profiles.md +251 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/model_comparison_table.md +4 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/model_specific_prompt_export.md +21 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/multi_model_export_package.md +18 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/prompt_translation_report.md +13 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/universal_prompt_brief.md +25 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/model_routing_tests.md +8 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/prompt_translation_tests.md +7 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/research_provenance_tests.md +6 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/unknown_capability_tests.md +7 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/SKILL.md +82 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/checklists/diagnostic_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/checklists/release_quality_checklist.md +9 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/examples/failed_output_to_revised_prompt.md +10 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/examples/final_prompt_package_export.md +10 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/failure_modes.md +13 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/iteration_diagnostics.md +17 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/revision_loops.md +17 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/story_voice_release_qc.md +30 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/failed_output_intake.md +13 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/final_production_package.md +11 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/prompt_revision_report.md +17 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/tests/prompt_quality_checklist_tests.md +6 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/SKILL.md +81 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/checklists/scene_quality_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/examples/scene_to_screenplay_excerpt.md +18 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/dialogue_and_subtext.md +15 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/fountain_workflow.md +29 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/scene_construction.md +20 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/screenplay_format.md +18 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/beat_sheet.md +6 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/dialogue_pass.md +9 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/fountain_scene.md +25 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/screenplay_scene.md +19 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/tests/screenplay_scene_tests.md +6 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/SKILL.md +83 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/checklists/concept_quality_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/examples/idea_to_logline.md +13 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/examples/logline_to_outline.md +10 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/references/ai_storytelling_workflow.md +46 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/references/continuity_handoff.md +8 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/references/screenplay_structure.md +19 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/references/story_development_workflow.md +23 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/beat_sheet.md +7 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/idea_intake.md +16 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/logline.md +10 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/short_film_treatment.md +23 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/short_story_plan.md +22 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/story_premise.md +19 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/story_revision_audit.md +22 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/tests/output_format_tests.md +3 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/tests/routing_tests.md +7 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/SKILL.md +77 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/checklists/shotlist_quality_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/examples/screenplay_scene_to_shot_list.md +8 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/camera_plan.md +11 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/production_breakdown.md +11 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/shotlist_schema.md +21 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/asset_list.md +7 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/camera_plan.md +10 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/scene_breakdown.md +16 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/shot_list.md +5 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/tests/screenplay_to_shotlist_tests.md +5 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/SKILL.md +77 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/checklists/style_quality_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/examples/genre_to_visual_direction.md +15 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/camera_lens_movement.md +26 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/cinematic_language.md +32 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/genre_style_tone.md +17 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/lighting_and_photorealism.md +19 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/templates/visual_style_bible.md +33 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/tests/style_translation_tests.md +5 -0
- package/resources/skills/director-skills/upstream/tests/master_router_tests.md +80 -0
- package/resources/skills/drama-production/manifest.json +933 -0
- package/resources/skills/drama-production/upstream/LICENSE +21 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/SKILL.md +153 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/creator-decision.example.jsonl +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/app.js +1263 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/index.html +114 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/styles.css +297 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/production-observation.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/project-template/short-drama.json +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/reference-observation.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/audience-reveal.md +21 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/contract-and-ownership.md +45 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/creator-documents.md +230 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/creator-workflow.md +98 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards/Q/347/211/210/350/241/250/350/276/276.md +73 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//344/272/214/347/273/264/345/212/250/346/200/201/346/274/253.md +74 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//345/233/275/346/274/253/344/272/214/346/254/241/345/205/203.md +79 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//345/256/236/346/213/215.md +75 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//346/260/264/345/242/250/347/254/224/350/247/246.md +85 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//351/243/216/346/240/274/345/214/226/344/270/211/347/273/264.md +72 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/knowhow-index.md +85 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/look-development.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/pickup-and-alternate.md +24 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/production-form-profiles.md +126 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/reference-roles.md +53 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/runtime-preflight.md +24 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/scripts/creator_markdown_check.py +1413 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/scripts/dashboard_server.py +1798 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/scripts/project_tool.py +2454 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/scripts/selftest.py +287 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/SKILL.md +76 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/character-look.example.jsonl +3 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/continuity.example.jsonl +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/decisions.example.jsonl +5 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/location-view.example.jsonl +3 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/occurrences.example.jsonl +5 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/prop-state.example.jsonl +3 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/examples/minimal/characters.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/examples/minimal/looks.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/asset-review-checklist.md +82 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/character-and-look.md +190 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/continuity-delta.md +120 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/continuity-lock.md +122 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/identity-vs-variant.md +140 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/location-and-view.md +84 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/occurrence-extraction.md +108 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/prop-and-state.md +126 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/stage-contract.md +43 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/voice-direction.md +179 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/scripts/asset_check.py +267 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/scripts/selftest.py +89 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/SKILL.md +157 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/creative-brief.md +120 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/episode-map.jsonl +1 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/story-engine.md +181 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/adaptation-craft.md +219 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/creative-reference-intake.md +57 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/director-brief-craft.md +113 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/episode-design.md +509 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-and-hook-playbook.md +240 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//344/272/262/345/255/220/351/232/220/347/247/230.md +112 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//344/273/231/344/276/240/344/277/256/347/234/237.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/212/250/344/275/234/344/273/273/345/212/241.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/217/244/350/243/205/346/235/203/350/260/213.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/256/266/345/272/255/345/205/263/347/263/273.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//346/202/254/347/226/221/350/247/204/345/210/231.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//347/224/237/346/264/273/346/265/201.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//347/240/264/351/225/234/351/207/215/345/234/206.md +109 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/201/214/345/234/272/345/226/234/345/211/247.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/261/252/351/227/250/345/251/232/346/201/213.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/272/253/344/273/275/351/224/231/344/275/215.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards.md +92 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/mechanism-loop.md +282 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/multi-episode-intake.md +128 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/premise-devices.md +211 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/reveal-reversal-payoff.md +99 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/serial-character-and-memory.md +293 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/stage-contract.md +88 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/story-craft.md +359 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/scripts/episode_intake.py +699 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/scripts/selftest.py +47 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/SKILL.md +146 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/README.md +60 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/package.json +15 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/remotion.config.ts +6 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/Root.tsx +26 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +88 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/font.ts +46 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/index.ts +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/schema.ts +32 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/tsconfig.json +13 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +43 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/cut-craft.md +38 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/delivery-verify.md +29 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/generated-footage.md +54 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/sound-and-subtitles.md +60 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/stage-contract.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/scripts/edit_tool.py +1156 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/scripts/selftest.py +520 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/SKILL.md +73 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/image-prompt-spec.jsonl.md +187 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/image-prompts.md +42 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/lookdev-frame-spec.jsonl.md +128 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/lookdev-prompts.md +34 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/examples/minimal-image-prompt-specs.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/character-and-look.md +153 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/common-recipe.md +241 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/edit-and-revision.md +110 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/location-plate.md +151 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/look-and-state-variant.md +97 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/lookdev-frame.md +34 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/production-sheet-recipes.md +177 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/prop-plate.md +137 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/review-and-fixtures.md +92 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/stage-contract.md +32 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/scripts/image_prompt_check.py +443 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/scripts/selftest.py +95 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/SKILL.md +245 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +3 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/adaptation-triage.md +116 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/adaptation-value.md +124 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +155 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/chapter-extraction.md +144 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/stage-contract.md +67 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/scripts/novel_index.py +651 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/scripts/selftest.py +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/SKILL.md +183 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/adapter-contract.md +219 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/gpt-image-2.md +24 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-h3-video.md +86 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-music.md +25 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/seedance.md +64 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/fixture_adapter.py +77 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/production_tool.py +2205 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/provider_adapters.py +1747 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/selftest.py +135 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/SKILL.md +118 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/finding-template.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/supersession-decision.example.json +42 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/verdict-template.json +32 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/examples/minimal-findings.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/examples/minimal-verdict.json +34 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/anti-template-repair.md +109 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/production-quality-gates.md +276 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/project-calibration.md +83 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/review-method.md +81 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-assets-prompts.md +111 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-source-analysis.md +108 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-story-script.md +264 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-visual-motion.md +184 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/stage-contract.md +28 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/scripts/review_check.py +325 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/scripts/selftest.py +87 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/SKILL.md +175 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/coverage-audition.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/coverage-template.json +49 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/keyframe-prompts.md +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/keyframe-template.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/revision-lineage.fragment.json +12 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/scene-visual-plan.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/shot-template.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/blocking-playbooks.md +216 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/coverage-audition.md +34 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/keyframe-craft.md +174 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/production-shot-grammar.md +279 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/review-and-fixtures.md +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/scene-visual-plan.md +30 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +155 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/shot-craft.md +266 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/shot-revision-identity.md +25 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/stage-contract.md +57 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/scripts/selftest.py +191 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/scripts/storyboard_check.py +824 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/SKILL.md +154 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/coverage-scope.fragment.json +21 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/delivery-container.jsonl.md +101 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +217 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/motion-terminal.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/music-spec.jsonl.md +31 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/performance.fragment.json +38 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/video-prompts.md +67 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/examples/minimal-music-specs.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/camera-audio-continuity.md +259 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/delivery-profile.md +273 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/generability.md +93 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/minimax-h3.md +253 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/motion-recipe.md +315 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/performance-action-timing.md +209 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/production-prompt-grammar.md +304 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/review-and-fixtures.md +139 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/seedance-2.0.md +50 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/seedance-2.5.md +122 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/stage-contract.md +60 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/target-model-profile.md +116 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/container_check.py +329 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/motion_timing_check.py +450 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/music_spec_check.py +327 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/selftest.py +82 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/SKILL.md +99 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/beats.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/episode-card-standalone.json +120 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/episode-card.json +55 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/screenplay.md +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/voice-record-sheet.jsonl.md +89 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/dialogue-craft.md +526 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/production-format-dialect.md +273 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/scene-handoff-capsule.md +25 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/scene-sound-dramaturgy.md +43 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/screenplay-format.md +266 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/script-craft.md +745 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/stage-contract.md +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/substitutable-realization.md +107 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/duration_estimate.py +309 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/screenplay_index.py +1091 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/selftest.py +229 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/voice_sheet_check.py +416 -0
- package/resources/skills/viora-canvas-production/manifest.json +23 -0
- package/resources/skills/viora-canvas-production/references/canvas-contract.md +50 -0
- package/resources/skills/viora-canvas-production/references/creative-production.md +50 -0
- package/resources/skills/viora-canvas-production/references/generation-delivery.md +36 -0
- package/resources/skills/viora-canvas-production/references/production-ledger.md +25 -0
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
# Lighting and Color
|
|
2
|
+
|
|
3
|
+
Load this file when a scene needs a lighting design, a time-of-day decision, a palette or color script, grading direction, or when generated shots disagree about where the light is coming from.
|
|
4
|
+
|
|
5
|
+
Framing, lens, angle and move belong to [cinematic-language.md](cinematic-language.md). Exact word choices and their 中文 equivalents belong to [prompt-lexicon.md](prompt-lexicon.md). This file owns the reasoning: which light, why, and how to keep it.
|
|
6
|
+
|
|
7
|
+
## The core rule: name the source, not the mood
|
|
8
|
+
|
|
9
|
+
Mood words are the model's problem to interpret. Source words are physics the model has seen a million examples of. A named source implies direction, quality, color, falloff and era in four words; "moody" implies nothing and gets you the training-set average.
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
BEFORE (mood): Dramatic moody lighting, intense atmosphere, a man at a desk at night, cinematic.
|
|
13
|
+
AFTER (source): A man at a desk at night. Single green-shaded desk lamp camera-left at
|
|
14
|
+
head height, hard, shadow side of his face about two stops under, tungsten warm. The room
|
|
15
|
+
behind him falls to black within a metre. No other light source.
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
The AFTER version also survives being repeated in the next eleven prompts of the scene. The BEFORE version does not, because "moody" resolves differently every generation.
|
|
19
|
+
|
|
20
|
+
## Setup vocabulary
|
|
21
|
+
|
|
22
|
+
| Role | What it does | Drop it and you get |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| Key | Sets direction, ratio and the shape of the face. The only light that must be motivated | No scene. Ambient only; subject flattens into the background |
|
|
25
|
+
| Fill | Controls the ratio, i.e. how much detail lives in the shadow | Ratio jumps to the practical maximum. Shadow side goes black. Reads noir whether or not you wanted noir |
|
|
26
|
+
| Back / rim | Separates subject from background; edge on hair and shoulder | Subject merges into a dark background. Models rarely add this unprompted — this is the single most common cause of "muddy" AI frames |
|
|
27
|
+
| Kicker (three-quarter back, opposite the key, hard) | Sculpted edge along jaw and cheek on the shadow side | Shadow side reads soft and unformed; face loses structure |
|
|
28
|
+
| Eye light | Small source near the lens axis; puts a catchlight in the eye | Dead eyes. The most common reason an AI face reads lifeless even when everything else is right |
|
|
29
|
+
| Background / separation | Sets background value relative to subject | Background sits at the same value as the subject; the frame reads flat and depthless |
|
|
30
|
+
|
|
31
|
+
Three working approaches, in order of usefulness for AI generation:
|
|
32
|
+
|
|
33
|
+
- Single-source naturalism — one motivated source plus whatever bounces. Everything else is falloff. Best default for AI: there is exactly one direction to keep constant across a scene, so continuity has one job instead of three.
|
|
34
|
+
- Available light — take what the location gives; control exposure and where the actor stands, not fixtures. Right for documentary, handheld, contemporary realism. Hardest to hold in AI because the "source" is the whole environment and the model reinvents it every clip.
|
|
35
|
+
- Three-point (key + fill + back) — a teaching diagram, not a location plan. Use it for interview, product, and any face that must stay identical across dozens of generations. Reads slightly artificial by design. The back light is the element most often dropped when it is not named, so write it into every prompt rather than assuming it.
|
|
36
|
+
|
|
37
|
+
## Lighting ratios
|
|
38
|
+
|
|
39
|
+
Ratios below are lit side : shadow side measured on the subject's face — the same convention the `lighting.key_ratio` field in the director style modules uses. Some departments quote key : fill instead, which gives a smaller number for the same face: a 4:1 lit-to-shadow face is 3:1 key-to-fill. The number alone is therefore ambiguous, so always write the ratio in words as well.
|
|
40
|
+
|
|
41
|
+
| Ratio | Stop difference | Emotional read | Home genre | Say it in words |
|
|
42
|
+
|---|---|---|---|---|
|
|
43
|
+
| 1:1 | 0 | Nothing hidden; also nothing interior. Exposure without revelation | Comedy, sitcom, news, corporate, clinical horror | "Even light on both sides of the face, no shadow side" |
|
|
44
|
+
| 2:1 | 1 | Ordinary, warm, unremarkable. The everyday setting | Daytime drama, romance, most TV | "Shadow side one stop under; the shadow reads as tone, not darkness" |
|
|
45
|
+
| 4:1 | 2 | The character has an interior you are not being shown all of | Feature drama, thriller, period | "Shadow side clearly darker but still holds detail" |
|
|
46
|
+
| 8:1 | 3 | The character is withholding something | Noir, horror, interrogation, crime | "Shadow side nearly black, only the edge of the cheek catches light" |
|
|
47
|
+
| 16:1 | 4 | The character is barely present; the frame is a shape, not a person | Expressionist, horror climax, myth | "Only a sliver of the face is lit; everything else falls to black" |
|
|
48
|
+
|
|
49
|
+
Ratio is a continuous dial and the interesting work is moving it inside a scene: open a scene at 2:1 and close it at 8:1 as one character stops telling the truth. Generators tend to drift back toward a mild 2:1 as the shot tightens and the source leaves frame, so restate the ratio in words on every close-up.
|
|
50
|
+
|
|
51
|
+
## Key direction
|
|
52
|
+
|
|
53
|
+
Direction is stated relative to camera, never relative to the room — the model has no model of the room. That is the rule for the per-shot direction sentence; the scene invariant that gets pasted into every prompt is world-space instead, for the reason given under the continuity section below. The same rule governs faces: write "the camera-left cheek", never "his left cheek". For a subject facing camera, anatomical left is screen right, and generators split on which one you meant, so naming the camera side removes a coin flip that costs you a re-roll.
|
|
54
|
+
|
|
55
|
+
| Direction | What it does to a face | What it does to a lie |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| Frontal (on axis) | Erases texture, age, and modeling. Open, flat, unguarded | Undetectable. There is no shadow for the audience to project doubt into. Use when you want the audience deceived alongside the scene partner |
|
|
58
|
+
| 45° three-quarter front | Nose shadow, both eyes lit, a lit triangle on the shadow cheek. The narrative default | Legible. Enough shadow to suggest reserve, enough light to read intent |
|
|
59
|
+
| 90° side | Splits the face into a lit half and a dark half; one eye lit | Divided. Reads as a decision not yet made, or a person being two things |
|
|
60
|
+
| Three-quarter back | Face mostly in shadow with a rim on the far cheek and hair | Withheld. The audience knows something is being kept and cannot see what |
|
|
61
|
+
| Full back (silhouette) | Identity removed, shape retained | Irrelevant — this is no longer a person, it is an arrival or a threat |
|
|
62
|
+
| Top | Eye sockets go to pits, cheekbones catch, mouth in shadow | Judged. Institutional, hollowed, no interiority granted |
|
|
63
|
+
| Under | Inverts the shadow pattern of every face the audience has ever seen | Wrong on sight |
|
|
64
|
+
|
|
65
|
+
The under-light rule: for a lifetime, every face a person has looked at has been lit from above — sun, sky, ceiling, streetlight. Under-lighting flips every shadow, so the audience reads *wrong* before they can say why. That is why it is the campfire-ghost-story light, the monster light, the dashboard light, and the phone-screen light. It is a strong effect and it is one note; use it once per project, on the beat that earns it.
|
|
66
|
+
|
|
67
|
+
## Quality and falloff
|
|
68
|
+
|
|
69
|
+
Hard versus soft is not a fixture type, it is the apparent size of the source seen from the subject. The sun is enormous and casts hard shadows because from here it is half a degree wide. A one-metre frame at half a metre is soft; the same frame at ten metres is hard. Working rule: apparent source width comparable to or larger than the subject reads soft; much smaller reads hard.
|
|
70
|
+
|
|
71
|
+
- To get hard, describe the shadow rather than the light: "single small source", "a sharp shadow line across the wall behind him", "direct unfiltered sun", "bare bulb", "hard-edged shadow of the window frame on the floor". Models render shadows more reliably than they render the abstract phrase "hard light".
|
|
72
|
+
- To get soft, remove the shadow: "overcast", "north-facing window", "light bounced off a white wall", "shadow edges indistinct", "no visible shadow line".
|
|
73
|
+
|
|
74
|
+
Falloff follows the inverse-square law for anything small enough to act as a point source, and the practical consequence is about distance *ratios*, not absolute distance. A face half a metre from a candle loses two stops by stepping back to one metre — doubled distance, quarter the light. A face five metres from a window loses about half a stop stepping back to six. Very large sources (a wall of window, an overcast sky) fall off far more slowly than inverse-square at close range. So:
|
|
75
|
+
|
|
76
|
+
- Near a small source: movement is exposure. A character can hide by taking one step back. The background stays black no matter what.
|
|
77
|
+
- Far from the source, or under a large one (overcast, a wall of window): movement changes nothing. There is no refuge in the frame.
|
|
78
|
+
|
|
79
|
+
Choose falloff by whether the scene should offer somewhere to hide. Then say so: "one candle on the table; her face is bright and the wall two metres behind her is black" produces steep falloff. "Candlelit room" produces an evenly amber room with no falloff at all, because that is the average of everything labeled candlelit.
|
|
80
|
+
|
|
81
|
+
## Two faces in one frame
|
|
82
|
+
|
|
83
|
+
A two-hander is one lighting design, not two. The rule that makes the coverage cut: one key direction in the room, true for both faces; what differs per face is the ratio. Give each actor their own independently placed key and you get two people standing in different weather, and no reverse will reconcile them.
|
|
84
|
+
|
|
85
|
+
Which face carries which ratio is the dramatic decision. Matched ratios say the scene is between equals; a two-stop spread says one of them is being read and the other is doing the reading. When the balance shifts mid-scene, move the spread, never the direction.
|
|
86
|
+
|
|
87
|
+
| Setup | Geometry, in world space | Per-face ratio | What it says | Will a model hold it |
|
|
88
|
+
|---|---|---|---|---|
|
|
89
|
+
| Cross-key | Two sources upstage of the line between them, one past each shoulder; each is a three-quarter front key on the far face and a kicker on the near one | Matched, usually about 3:1 on both | Two people of equal standing; the negotiation, the interview, the argument nobody is winning yet | Only from a keyframe. Text alone collapses it into one frontal source and flattens both faces |
|
|
90
|
+
| One shared key off the end of the line | A single source beyond one of them — window at her back, doorway past his shoulder | Fixed asymmetry: the one facing the source reads near-frontal at about 2:1; the one with their back to it carries a rim and sits about 6:1 on the camera side | Status, and it does not swap on the cut, so it reads as a fact about them rather than as coverage | Medium. Name which body the source sits behind and it usually survives; it drifts on the tighter singles |
|
|
91
|
+
| Source between them | A practical on the axis itself — candle, table lamp, fire, laptop | Both keyed from the inside of the frame, shadow sides falling outward to the frame edges | Conspiracy, intimacy, a shared secret; the light belongs to the pair and not to the room | High. The practical is visible in frame, so the model has an anchor. The most reliable two-hander light in AI |
|
|
92
|
+
| Split pool | One body inside a pooled source, the other at its edge or outside it | 2:1 against 8:1 or steeper | One of them is available and one is withholding; the frame has already picked a side | Medium-high, if you put the boundary on a visible surface — the edge of the light on the table or the floor between them |
|
|
93
|
+
|
|
94
|
+
On the reverse, nothing in the room changes and every camera-relative word does: a key that reads camera-left on her single reads camera-right on his, same lamp, opposite half of frame. Write the invariant world-space and derive the phrasing per shot, as in the continuity section below. Then check one thing on every reverse — whichever face was the darker of the two must still be the darker one. The ratio spread is the identity of the setup; if it swaps, the audience reads a scene change nobody wrote.
|
|
95
|
+
|
|
96
|
+
The AI reality: generators light the frame, not the faces, and their default two-shot is one soft frontal source with both faces at a mild 2:1. What survives from text alone is a named practical visible in frame, and any big graphic contrast — one face in a pool and one outside it, or one face against a lit partner in silhouette. What must be baked into the keyframe is cross-key, any matched pair of ratios, and any rim separating the far face from a dark background. Generate the two-shot first, approve it, and derive both singles from that file rather than writing each from scratch — see [image-model-adapters.md](image-model-adapters.md).
|
|
97
|
+
|
|
98
|
+
Worked, a kitchen at night, split pool, on the beat where one of them decides to answer:
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
Two-shot, 40 mm. One bulb over the sink, nothing else in the room switched on. She stands
|
|
102
|
+
in the pool at frame-left, shadow side about one stop under. He is at the table a metre and
|
|
103
|
+
a half deeper into the room, outside the pool: only the spill off her shoulder and off the
|
|
104
|
+
white fridge door reaches him, his shadow side is three stops under, and his lit edge is a
|
|
105
|
+
thin line down the cheekbone facing her. No fill. Nothing lights him from his own side of
|
|
106
|
+
the room. The edge of the light falls across the table between them.
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Cut to his single and the bulb becomes camera-right; the source, height, quality and color are pasted unchanged. His ratio is the only field allowed to move, and it moves once — from three stops under to one and a half — on the line where he answers.
|
|
110
|
+
|
|
111
|
+
## Motivation: the practicals catalogue
|
|
112
|
+
|
|
113
|
+
Every entry locks an era. Choosing a practical is a production-design decision disguised as a lighting decision — a sodium lamp puts you between roughly 1960 and 2015 in most Western cities whether you meant to go there or not.
|
|
114
|
+
|
|
115
|
+
| Practical | Color character | Quality | Falloff | Era / place it locks | Prompt phrasing |
|
|
116
|
+
|---|---|---|---|---|---|
|
|
117
|
+
| Oil lamp | Deep amber, unstable | Small source, steadier and slightly larger than a candle; a frosted globe softens it | Extreme; usable to about a metre | Pre-electric, rural, power-out | "a single oil lamp on the table, warm amber pool falling to black within a metre" |
|
|
118
|
+
| Candle | Orange, flickering | Small source; crisp on skin up close, soft overall | Steepest of all | Pre-electric, ritual, blackout | "one candle at chest height; the light dies just past her face" |
|
|
119
|
+
| Gas lamp | Warm with a green cast, steadier than open flame | Soft globe with a halo | Moderate, pooled | Roughly 1810s–1930s streets and halls | "gas street lamps, pale warm globes with soft halos in the damp air" |
|
|
120
|
+
| Tungsten bulb | Warm orange, steady | Bare bulb hard; shaded soft | Steep when bare | Any electrified interior, 1900s on | "a bare tungsten bulb overhead, warm and slightly orange, hard shadows below the brow" |
|
|
121
|
+
| Fluorescent tube | Green-cyan, faint flicker | Very soft, wraparound, near-shadowless | Almost flat across a room | Institutional, roughly 1940s on | "overhead fluorescent tubes, even green-tinged light, no visible shadow direction" |
|
|
122
|
+
| Sodium street lamp | Low-pressure sodium is genuinely monochrome and kills every other hue; high-pressure sodium is amber but still renders some color | Soft pool, hard-edged on the ground | Strong pools with black gaps between | Roughly 1960–2015 streets; absent in LED-retrofit cities | "low-pressure sodium street lamps, monochrome amber pools with black gaps between them" |
|
|
123
|
+
| Mercury vapor | Cold blue-green | Hard-ish, from height | Even at distance | Mid-century to 1990s yards, lots, industry | "mercury-vapour yard lights on high poles, cold blue-green, hard shadows" |
|
|
124
|
+
| Neon | One saturated hue per tube; magenta, cyan, red | Weak on faces, strong in reflections | Very steep; decorative, not functional | 1920s on; city night | "red and cyan neon signage across wet asphalt; the light is weak on his face and strong in the puddles" |
|
|
125
|
+
| CRT screen | Blue-white, hue and level jumping with picture content; often pushed cyan-green in the grade | Soft, from low-front; a rolling bar if the shutter is not synced | Steep | Roughly 1950–2005 | "a CRT television lighting his face from below, cool blue-white, the level jumping as the picture cuts" |
|
|
126
|
+
| LCD / phone screen | Blue-white, hue shifts with content | Very soft, small, close | Extremely steep | Contemporary only | "phone screen underlighting her face, cool blue-white; only the face is lit" |
|
|
127
|
+
| Headlight | Warm yellow-white for tungsten and sealed-beam lamps; blue-white only for HID and LED | Hard, near-parallel, long shadows | Moderate, but sweeps | Electric headlights 1910s on; the blue-white read only from roughly 2000 on, so it dates a shot instantly | "car headlights sweeping across, hard warm yellow-white beams throwing long moving shadows on the wall" (swap to "blue-white HID beams" for present day) |
|
|
128
|
+
| Firelight | Orange-red, irregular | Soft-ish, from low, flickering | Steep | Any era | "a low fire lighting them from below, warm orange, irregular flicker" |
|
|
129
|
+
| Lightning | Near-daylight blue-white, instantaneous | Hard, through whatever opening exists | None; fills the room | Any era | "lightning flashes through the window, brief hard blue-white from camera-left" |
|
|
130
|
+
| Moonlight (convention) | Cool blue-grey — a convention, not a measurement; real moonlight is neutral and simply too dim to see color by | Hard and single (the moon is about half a degree wide, like the sun); height varies with the hour, so pick one and hold it across the scene | None | Any era | "moonlight convention: cool blue-grey key from high camera-left, hard shadows, shadows still hold detail" |
|
|
131
|
+
|
|
132
|
+
If a practical is visible in frame, the model has an anchor and the light behaves. If it is off-screen, you must name it anyway plus one visible consequence — see the continuity section.
|
|
133
|
+
|
|
134
|
+
## Time of day
|
|
135
|
+
|
|
136
|
+
| Window | Direction | Quality | Color | Contrast | Real duration | Register | AI note |
|
|
137
|
+
|---|---|---|---|---|---|---|---|
|
|
138
|
+
| Pre-dawn | None; sky dome | Flat, soft | Blue-grey, desaturated | Very low | 30–45 min | Sleeplessness, vigil, aftermath | Say "before sunrise, no sun, sky glow only, no visible source" or you get night-with-blue-filter |
|
|
139
|
+
| Dawn | Very low, from the horizon | Soft with haze | Pale gold into pink; cool shadows | Mid | 20–40 min | Beginning, or exhaustion after a night | State which way the sun is relative to camera; generators default to backlight |
|
|
140
|
+
| Golden hour | 0–10° elevation | Warm, long hard shadows | Amber key, blue sky fill | Mid-high | 30–60 min mid-latitude; ~20 min near the equator; hours near the poles | Romance, memory, endings | The most over-fitted look in current image and video models. Constrain it: "low sun, long hard shadows, warm key and cool sky fill, no orange atmospheric haze" |
|
|
141
|
+
| Mid-morning | 30–50° | Moderately hard | Neutral-warm | Mid | 2–3 h | Work, procedure, the ordinary | The most continuity-safe sunlit condition. Still state a direction |
|
|
142
|
+
| Midday | Steepest of the day: 70–90° in the tropics and at mid-latitude summer, but as low as 20–25° at mid-latitude midwinter — check your story's latitude and month before writing "overhead" | Hard, top | Neutral white | High and unflattering | 1–2 h | Heat, exposure, nowhere to hide | Generators drift back toward golden. Say "sun directly overhead, short hard shadows, dark eye sockets" |
|
|
143
|
+
| Late afternoon | 20–35° | Hard, warm | Warm neutral | Mid-high | 1.5–2 h | Decline, waiting, the day slipping | Good compromise between shape and continuity safety |
|
|
144
|
+
| Dusk (just after sunset) | Warm band low on one horizon, no direct sun | Soft | Orange band, blue everywhere else | Mid | 10–20 min | Parting, curfew, last chance | Name the band's side relative to camera or it lands everywhere |
|
|
145
|
+
| Blue hour (civil twilight) | None; the sky is the source | Very soft, omnidirectional | Deep blue sky; practicals read strong against it | Low in the sky, high between sky and practicals | 15–30 min, immediately after dusk | Threshold, transition, melancholy | Best way to shoot night and keep detail. "After sunset, sky still deep blue, street lights on". Avoid the word "magic hour" in prompts — the trade uses it for both this window and golden hour, so it resolves either way |
|
|
146
|
+
| Night-for-night | Practicals only | Pools with black between | Whatever the practical is | Very high | All night | The real world after dark | Generators tend to lift this into blue daylight. Add "no ambient fill; black between the light pools" |
|
|
147
|
+
| Moonlight | Single, hard; elevation varies with the hour — choose one and hold it | Hard, low level, cool | Blue-grey | High in shape, low in level | All night | Fable, exposure, exteriors without electricity | Always call it a convention in the prompt, or you get daylight with a blue grade laid over it |
|
|
148
|
+
| Overcast | None; the sky is one softbox | Extremely soft, shadowless | Cool neutral blue-grey | Very low, 1:1 to 2:1 | Hours | Grief, realism, procedural bleakness | The safest exterior in AI: direction cannot flip between shots because there is no direction |
|
|
149
|
+
| Storm | Flat base plus hard spikes | Soft base, hard intermittent | Dark blue-grey, white flashes | Momentarily extreme | Variable | Crisis | Write it as two elements: the base condition, and the flash as a discrete event with a direction |
|
|
150
|
+
|
|
151
|
+
## Contrast schemes
|
|
152
|
+
|
|
153
|
+
| Scheme | Definition | When it is the right answer | The cliché it invites |
|
|
154
|
+
|---|---|---|---|
|
|
155
|
+
| High-key | Fill close to key, 1:1–2:1, bright background | Comedy, romance, corporate, and clinical horror where brightness itself is the threat | Reads as advertising by default. Break it with one deliberately dark object in frame |
|
|
156
|
+
| Low-key | 8:1 or steeper, most of the frame below middle grey | Noir, thriller, interrogation, secrecy | "Generic moody." The cure is naming one specific practical and letting the rest be falloff |
|
|
157
|
+
| Chiaroscuro | High ratio with a hard-edged pool and shadows that still hold detail | Period, moral weight, painterly interiors | Baroque candle pastiche. Avoid by keeping the source modern or industrial |
|
|
158
|
+
| Flat / uniform | Even ambient across the whole frame, no modeling | Bureaucracy, institutions, surveillance, deadpan comedy | Reads as accidental unless the space itself is designed to be looked at |
|
|
159
|
+
| Silhouette | Subject four or more stops under a bright background | Arrival, anonymity, myth, reveal-by-withholding | Sunset-with-arms-raised. Use an ugly background — a doorway, a screen, a fog bank |
|
|
160
|
+
| Notan | Two-value graphic design, midtones removed | Animation, graphic thrillers, title sequences | Image models tend to collapse it into flat vector art. Anchor it with a real material and real grain |
|
|
161
|
+
|
|
162
|
+
Worked, taking the hardest one to do without cliché — a silhouette that is not a sunset:
|
|
163
|
+
|
|
164
|
+
```text
|
|
165
|
+
Wide. She stands in an open freight-elevator doorway. The corridor behind her is lit by
|
|
166
|
+
overhead fluorescent tubes and sits about four stops over her; her face and coat carry no
|
|
167
|
+
detail at all, only the outline of her shoulders and the bag hanging at her camera-right side.
|
|
168
|
+
Foreground floor unlit. No rim, no fill, no sky.
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
The scheme is specified by its stop difference and its background material, not by the word "silhouette" — which on its own returns a person on a hill against an orange sky.
|
|
172
|
+
|
|
173
|
+
## Color
|
|
174
|
+
|
|
175
|
+
Palette systems, each with a usable example:
|
|
176
|
+
|
|
177
|
+
| System | Structure | Concrete example |
|
|
178
|
+
|---|---|---|
|
|
179
|
+
| Monochrome | One hue across values and saturations | A submarine interior in graduated greens; skin is the only other hue in frame, which is exactly the point |
|
|
180
|
+
| Analogous | Two or three adjacent hues | Amber, orange and red in a firelit tavern; the shadows carry the red end, the flame the amber |
|
|
181
|
+
| Complementary | Two opposed hues | Sodium-amber street pools against a blue-black sky and blue-black windows |
|
|
182
|
+
| Split-complementary | A base plus the two neighbors of its opposite | Warm skin key against cyan and violet neon; softer than a straight complementary and harder to make look automatic |
|
|
183
|
+
| Triadic | Three evenly spaced hues | A red exit sign, a green fluorescent corridor, a blue monitor, all present in one wide; only works with strong value separation |
|
|
184
|
+
|
|
185
|
+
The teal-and-orange trap: it is a complementary scheme where the warm side is exactly skin tone and the cool side is exactly everything else, so it can be applied to any footage without anyone making a design decision. That is why it is everywhere and why it costs nothing and buys nothing. It also destroys color as an information channel — if every scene is warm-skin-against-cool-world, color can no longer tell the audience where they are or how the character is doing. Four alternatives that keep the warm/cool separation but say something:
|
|
186
|
+
|
|
187
|
+
1. Amber against deep green — sodium light on foliage or painted plaster. Same split, era-locked, and the green side has texture the teal side never has.
|
|
188
|
+
2. Warm-neutral skin against desaturated blue-grey — get it by pulling saturation out of the cool side rather than pushing orange into the warm side. Restrained, contemporary, and it leaves headroom to introduce a saturated color later as an event.
|
|
189
|
+
3. Magenta against cyan — the neon split. Reads as contemporary night rather than as "a film".
|
|
190
|
+
4. Monochrome plus a single reserved accent hue that belongs to one story object. The most information-efficient scheme available: the moment the accent appears, the audience knows what the scene is about.
|
|
191
|
+
|
|
192
|
+
A color script moves the palette with the emotional arc instead of applying one look to everything. Worked five-beat script for a short about someone losing a place they belong:
|
|
193
|
+
|
|
194
|
+
| Beat | Palette | Saturation | Contrast | What the shift says |
|
|
195
|
+
|---|---|---|---|---|
|
|
196
|
+
| 1. Setup — home interior, evening | Tungsten warm, wood browns, one soft blue window | Mid | 2:1 | This is the baseline the audience will measure everything against |
|
|
197
|
+
| 2. Disruption — a caller at the door | Same tungsten, plus one cold blue-white source entering from the doorway | Mid | 4:1 | The outside has a color and it is not this room's color |
|
|
198
|
+
| 3. Escalation — the street at night | Sodium amber, saturation pushed | High | 6:1 | The warm from beat 1 has returned corrupted: same hue family, wrong source, no shelter |
|
|
199
|
+
| 4. Crisis — a lot, a corridor, an office | Mercury-vapour green; skin desaturated; no warm anywhere in frame | Low on skin, mid on environment | 8:1 | The character's own color has been taken out of the palette |
|
|
200
|
+
| 5. Resolution — dawn, outdoors | Overcast blue-grey; one small warm window far in frame | Low overall, one saturated accent | 2:1 | The warm exists again, but small, and at a distance |
|
|
201
|
+
|
|
202
|
+
Two techniques that make color scripts survive AI generation:
|
|
203
|
+
|
|
204
|
+
- Color as character state. Assign each principal one hue and one material (rust-red wool, bottle-green enamel). Track both in the [continuity bible](continuity-bible.md). When the character changes, change what surrounds their hue — do not change the hue itself, because in image and video models a costume color change reads as an identity change and will break face consistency along with it.
|
|
205
|
+
- Saturation strategy. Pick one of three and hold it: global desaturation with a single saturated object per frame; saturation tracking emotional temperature scene by scene; or saturation as a period marker (older stock reads lower-saturation in the cools and higher in the warms). Mixing two of these looks like a grading accident.
|
|
206
|
+
|
|
207
|
+
## Naming color for models
|
|
208
|
+
|
|
209
|
+
Do not use hex. Do not use bare adjectives like "warm" or "cool" alone. Use light-source names and material names — the model has seen labeled photographs of both, and neither drifts between generations the way "moody blue" does.
|
|
210
|
+
|
|
211
|
+
| Phrase | The read it gives | Locks you into |
|
|
212
|
+
|---|---|---|
|
|
213
|
+
| sodium-vapour amber | Monochrome pooled street night, everything else desaturated | Roughly 1960–2015 exteriors |
|
|
214
|
+
| mercury-vapour green | Cold institutional exterior at 2 a.m. | Mid-century to 1990s lots and yards |
|
|
215
|
+
| tungsten warm | Domestic, lived-in, safe | Any electrified interior |
|
|
216
|
+
| candle-orange | Ritual, intimacy, extreme falloff | Pre-electric or blackout |
|
|
217
|
+
| firelight orange, irregular | Camp, hearth, disaster, faces lit from below | Any era |
|
|
218
|
+
| overcast blue-grey | Shadowless realism, grief, procedure | Any era, outdoors |
|
|
219
|
+
| moonlight blue-grey | Hard-shadow night convention | Any era, exteriors without power |
|
|
220
|
+
| CRT cyan-green | Screen-lit room, unstable, slightly sick. This is the graded convention, not the measured color — real CRT light is blue-white | Roughly 1950–2005 |
|
|
221
|
+
| phone-screen blue-white | Isolation, underlit face, present tense | Contemporary only |
|
|
222
|
+
| fluorescent green-white | Office, hospital, waiting, no shadow to hide in | Institutional, 1940s on |
|
|
223
|
+
| neon magenta and cyan | City night, wet reflections, artificial glamour | 1920s on, urban |
|
|
224
|
+
| daylight through a north window | Soft neutral painterly interior, no direct sun | Any era, daytime |
|
|
225
|
+
| golden-hour amber with blue sky fill | Warmth that still has a cool shadow; memory | Any era, exteriors |
|
|
226
|
+
| midday white | Heat, exposure, short hard shadows | Any era, exteriors |
|
|
227
|
+
| bleach-bypass silver | Desaturated with heavy black contrast; industrial, war | Contemporary or period-as-brutal |
|
|
228
|
+
| sepia-brown | Archival past — but flags as "old-timey filter" fast; use once | Period, or a deliberate document |
|
|
229
|
+
| deep teal shadow | A cool shadow without committing the whole frame to a teal grade | Any |
|
|
230
|
+
| warm grey concrete | Neutral environment that leaves skin as the only warm thing | Brutalist, institutional, modern |
|
|
231
|
+
| darkroom safelight red | Enclosure, alarm state, engine room, developing image | Any era with electricity |
|
|
232
|
+
| arc-lamp blue-white | Searchlight, projector, hard theatrical shaft | Carbon arc from roughly the 1870s; xenon arc from the 1950s |
|
|
233
|
+
|
|
234
|
+
## Grading language
|
|
235
|
+
|
|
236
|
+
Lift, gamma and gain are shadows, midtones and highlights. In plain terms: lift moves the black point, gamma moves the middle without moving either end, gain moves the white point. What that buys you:
|
|
237
|
+
|
|
238
|
+
- Lifted (milky) blacks — the darkest part of the frame is grey, not black. Reads photochemical, aged, or nostalgic. Also reduces perceived contrast, so pair with a strong ratio or the image goes limp.
|
|
239
|
+
- Crushed blacks — shadow detail clipped to pure black. Reads contemporary and hard. Costs you everything happening in the shadows, which is often the point.
|
|
240
|
+
- Rolled-off highlights — bright areas compress instead of clipping. Reads photographic; hard clipping reads video.
|
|
241
|
+
- Split tone — the standard is warm highlights with cool shadows. Reverse it (cool highlights, warm shadows) for a look the audience cannot name but reads as unwell.
|
|
242
|
+
|
|
243
|
+
Descriptors that generators generally respond to as of writing — verify against your own tool before committing a scene to one: fine grain, heavy grain, halation around highlights (red bloom at bright edges — reads photochemical), milky lifted blacks, crushed blacks, bleach-bypass, cross-process (shifted hues, cyan shadows, yellow highlights), low-contrast flat log look.
|
|
244
|
+
|
|
245
|
+
The stacking warning: use at most two. Three or more grading descriptors get averaged into an undefined haze — the "filter collapse" where every shot in the batch looks like the same beige soup. Grading words also compete with lighting words for the model's attention. If the shot's key decision is light direction, drop the grading words from that prompt entirely and put them in the scene-level style line instead. Never ship "low-contrast flat log look" in a final-render prompt: generators read it as a washed-out finished image rather than as a starting point for a grade you will apply later.
|
|
246
|
+
|
|
247
|
+
## Lighting continuity for AI video
|
|
248
|
+
|
|
249
|
+
Lighting is lost between shots far more often than inside them. Symptom-first repairs live in [failure-modes.md](failure-modes.md); the preventive discipline is here.
|
|
250
|
+
|
|
251
|
+
Write one lighting invariant clause per scene and paste it verbatim into every prompt in that scene. Do not paraphrase it between shots — paraphrase is how the key drifts. The clause is anchored in world space: the source, where it sits in the room, its height, its quality, its color and its ratio. Every field in it is true of every camera position in the scene, which is what makes it pasteable unedited. The one field you may deliberately move is the stop difference, and only on the shots where the ratio change is itself the beat; source, place, height, quality and color stay word for word.
|
|
252
|
+
|
|
253
|
+
Where that light lands relative to *this* camera is not in the clause. It is derived per shot from the world anchor, recorded in the `Light dir` column of [shot-plan-template.md](../assets/shot-plan-template.md), and added to that shot's prompt as one extra sentence — because the model still needs camera-relative words on the face (see Key direction above), and "camera-left" is true of one setup and false of its reverse. Freeze a camera-relative phrase into the pasted string and every reverse in the scene inherits a flipped key, which is exactly the break the repair list below exists to undo. Shape:
|
|
254
|
+
|
|
255
|
+
```text
|
|
256
|
+
Lighting: [source] [where it sits in the room] at [height], [hard|soft],
|
|
257
|
+
shadow side about [N] stops under, [color phrase], background [level].
|
|
258
|
+
This shot: key [direction relative to this camera], [one visible consequence in frame].
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
```text
|
|
262
|
+
Lighting: single green-shaded desk lamp on the far corner of the desk at head height, hard,
|
|
263
|
+
shadow side about two stops under, tungsten warm, background falling to black.
|
|
264
|
+
This shot: key from camera-left; the nose shadow falls across his camera-right cheek.
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Reverse angles are then a one-line edit rather than a rebuild. The pasted clause does not change — same lamp, same corner, same height, same color, same stop difference; only the per-shot line is rewritten, because camera-relative direction inverts when you cut around the axis: a lamp that reads camera-left on the A-side coverage reads camera-right in the reverse. Store the world-anchored fact once in the continuity bible ("lamp is on the north wall, above head height") and derive each shot's phrase from it rather than remembering it. Get this backwards and the two angles will not intercut — see the axis and screen-direction rules in [cinematic-language.md](cinematic-language.md).
|
|
268
|
+
|
|
269
|
+
Shot size is the other silent breaker. On a wide, the source is usually in frame and the falloff is visible, so the model gets it right for free. Tighten to a close-up and the source leaves frame, and the model reverts to its default: soft frontal key, 2:1, no rim. Fix by naming the off-screen source plus one visible consequence inside the frame — "the lamp is out of frame camera-left; the shadow of his nose falls across his camera-right cheek, and the camera-right side of his face is nearly black." The consequence is what the model can actually draw; the source alone is an instruction it can ignore.
|
|
270
|
+
|
|
271
|
+
When a shot's key has flipped, in order of cost:
|
|
272
|
+
|
|
273
|
+
1. Restate direction with a visible consequence — which cheek is lit (named camera-left or camera-right, never anatomically), which way the nose shadow falls, which wall carries the shadow. Re-roll. Cheapest and usually sufficient.
|
|
274
|
+
2. Mirror the source image (image-to-video only). Instant, but check for text, signage, hair partings, scars, watches, wedding rings, and which hand the character uses. Any of those makes the mirror unusable.
|
|
275
|
+
3. Fix the light in the keyframe rather than the motion prompt, then feed it to the first-frame slot where the tool exposes one. The motion prompt inherits the light instead of arguing with it.
|
|
276
|
+
4. Accept the flip and flip the whole scene. Only viable early, and only after re-checking screen direction across every shot.
|
|
277
|
+
|
|
278
|
+
Flicker deserves its own rule. Prompts containing "flicker", "flashing", "pulsing" typically produce whole-frame exposure pumping rather than a local source flicker. Localize it: "the candle flame wavers and the light on the wall behind her moves slightly; overall exposure stays constant."
|
|
279
|
+
|
|
280
|
+
## Worked example: the doorway scene
|
|
281
|
+
|
|
282
|
+
The control scene the director style modules and [genre-playbooks.md](genre-playbooks.md) share, lit end to end: *a person stands at a closed apartment door holding something they intend to give away, hesitates, and leaves without knocking.*
|
|
283
|
+
|
|
284
|
+
| Decision | Choice | Why this and not the neighbour |
|
|
285
|
+
|---|---|---|
|
|
286
|
+
| Time window | Night-for-night, no daylight anywhere in frame | Daylight would make the visit an errand; she does not want to be seen doing this |
|
|
287
|
+
| Motivation | One caged bulkhead lamp high on the stairwell wall behind her, plus a warm tungsten strip leaking under the door | Two sources with opposed color and opposed meaning: the corridor she is in, and the room she will not enter |
|
|
288
|
+
| Ratio | About 6:1 at the door (two and a half stops), opening to 3:1 as she turns to leave | She is withholding, then stops. The ratio move is the beat |
|
|
289
|
+
| Direction | Lamp on the stairwell wall opposite the door, above head height — three-quarter back on the door-facing setups; the door face itself throws nothing | Her face stays mostly shadow while she faces the door and only fills in on the turn |
|
|
290
|
+
| Quality and falloff | Small caged source, hard, steep — the stairwell behind her goes black inside two metres | She needs somewhere to disappear to, and the falloff supplies it |
|
|
291
|
+
| Grade | Crushed blacks, fine grain. Nothing else | Two descriptors, per the stacking rule above |
|
|
292
|
+
|
|
293
|
+
Scene lighting invariant, pasted verbatim into every prompt in the scene. No camera-relative word appears in it, which is why every angle can paste it:
|
|
294
|
+
|
|
295
|
+
```text
|
|
296
|
+
Lighting: single caged bulkhead lamp high on the stairwell wall opposite the door, well above
|
|
297
|
+
head height, small and hard, cool green-white, shadow side about two and a half stops under,
|
|
298
|
+
plus a thin warm tungsten strip spilling under the door onto the concrete. No fill.
|
|
299
|
+
Stairwell falls to black within two metres.
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Shot 2 — MCU, her face at the door — is the invariant plus its per-shot line, which carries the camera-relative direction and one visible consequence, because the lamp is out of frame here:
|
|
303
|
+
|
|
304
|
+
```text
|
|
305
|
+
Medium close-up. A woman faces a closed apartment door, a brown paper parcel held against her
|
|
306
|
+
chest. Lighting: single caged bulkhead lamp high on the stairwell wall opposite the door, well
|
|
307
|
+
above head height, small and hard, cool green-white, shadow side about two and a half stops
|
|
308
|
+
under, plus a thin warm tungsten strip spilling under the door onto the concrete. No fill.
|
|
309
|
+
Stairwell falls to black within two metres. This shot: the lamp is out of frame behind her
|
|
310
|
+
camera-right shoulder, three-quarter back — a hard edge of light runs down her camera-right
|
|
311
|
+
cheekbone and jaw, the camera-left half of her face holds no detail, the wire cage throws a
|
|
312
|
+
faint grid shadow on the wall beside her, and the warm strip lights only the toes of her
|
|
313
|
+
shoes. She does not knock. Crushed blacks, fine grain.
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
The reverse — camera behind her shoulder, looking at the door — is where this scene would normally break. That same lamp is now behind and to the left of camera, so it is no longer a back light at all: it becomes a near-frontal key from camera-left, the back of her coat and the door face carry it, and her body throws a hard shadow across the door toward camera-right. The pasted clause does not lose a word — same lamp, same wall, same height, same color, same stop difference; only the per-shot line is rewritten. It is derived from the world-anchored fact stored once in the [continuity bible](continuity-bible.md) rather than remembered from the last prompt.
|
|
317
|
+
|
|
318
|
+
## Before and after
|
|
319
|
+
|
|
320
|
+
Each pair isolates exactly one decision. The rest of the prompt is held constant on purpose.
|
|
321
|
+
|
|
322
|
+
Ratio and key direction on a close-up:
|
|
323
|
+
|
|
324
|
+
```text
|
|
325
|
+
BEFORE: Close-up of the woman, tense, dramatic lighting, she looks up slowly.
|
|
326
|
+
AFTER: Close-up. The window is out of frame camera-right; hard daylight strikes the
|
|
327
|
+
camera-right side of her face and the camera-left side sits about three stops under, holding
|
|
328
|
+
only the edge of her cheek. No fill. She looks up slowly into the light. Background dark and
|
|
329
|
+
unlit.
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
Night exterior:
|
|
333
|
+
|
|
334
|
+
```text
|
|
335
|
+
BEFORE: Moody night street, cinematic atmosphere, he walks toward camera in the rain.
|
|
336
|
+
AFTER: Night street, night-for-night. Low-pressure sodium street lamps every thirty metres,
|
|
337
|
+
monochrome amber pools with black gaps between them. No ambient fill. He walks toward camera,
|
|
338
|
+
passing through three pools; his face brightens and goes black three times. Wet asphalt holds
|
|
339
|
+
the amber reflections.
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
Grading restraint:
|
|
343
|
+
|
|
344
|
+
```text
|
|
345
|
+
BEFORE: Bleach bypass, heavy grain, halation, crushed blacks, cross-process, teal and orange
|
|
346
|
+
grade, film emulation, an interrogation room.
|
|
347
|
+
AFTER: Interrogation room. Single fluorescent fixture directly overhead, fluorescent
|
|
348
|
+
green-white, near-shadowless, eye sockets dark. Fine grain, crushed blacks. No other grade.
|
|
349
|
+
```
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# Product and Macro
|
|
2
|
+
|
|
3
|
+
Load this file when the subject of the shot is an object rather than a person — a product spot, a packshot, cosmetics, food, drink, fabric, a texture macro, or any brief where a brand mark or a brand colour has to survive to delivery.
|
|
4
|
+
|
|
5
|
+
The twelve genre defaults live in the Commercial and product block of [genre-playbooks.md](genre-playbooks.md); this file is the depth behind that block. Lighting theory is owned by [lighting-and-color.md](lighting-and-color.md), word-level vocabulary and negative-list discipline by [prompt-lexicon.md](prompt-lexicon.md), optics and depth-of-field arithmetic by [cinematic-language.md](cinematic-language.md), and failure codes by [failure-modes.md](failure-modes.md). This file links to them and extends them for objects; it does not restate them.
|
|
6
|
+
|
|
7
|
+
## The governing principle: the light moves, not the camera and not the product
|
|
8
|
+
|
|
9
|
+
Every other decision in product work is downstream of this one. A product shot needs motion — a static frame reads as a photograph and dies on a feed — and there are exactly three things that can supply it: the camera, the product, or the light. Move the camera and the generator must re-derive the object's geometry from a new angle every frame; move the product and it must re-derive geometry *and* re-render the mark on a turning surface. Both are the two things generators reliably break. Move the light and the object's geometry is a constant for the whole clip: only the specular highlight travels, and a travelling highlight is a gradient, which is the single easiest thing in this medium to get right.
|
|
10
|
+
|
|
11
|
+
So: **the product is static, the camera is locked, and a large soft source travels across it.** State the travel explicitly — direction, and what the highlight does as it passes.
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
Before: A luxury lipstick rotating slowly on a marble plinth, cinematic product shot, 8K, elegant.
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
After: Static camera, 100mm macro. A closed lipstick bullet stands upright at frame centre on matte charcoal. Nothing moves except the light: a single large soft source above and camera-left travels slowly right, so its rectangular reflection walks down the polished barrel from cap to base and the engraved band catches once as it passes. End with the highlight resting at the base.
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The rotation in the "before" is the entire risk of the shot; the "after" has none of it and more motion in the frame. The same trade is worked once more, on a watch, in the Product before/after in [prompt-lexicon.md](prompt-lexicon.md).
|
|
22
|
+
|
|
23
|
+
Corollary for duration: a static product with no legible face in frame sits in the long band of the duration strategy owned by [ai-video-tool-adapters.md](ai-video-tool-adapters.md) — 8–12 s is affordable, because there is no identity to drift. The moment a hand or a face enters, you are back to 3–4 s.
|
|
24
|
+
|
|
25
|
+
## Lighting a surface, not a shape
|
|
26
|
+
|
|
27
|
+
A face is a shape: you light it to describe volume, and the key's direction does that job. A product is a **surface**: what the viewer is buying is how the material behaves under light, and volume is secondary. That is why product work is lit with large soft sources and controlled reflections rather than with a key-and-fill grammar — a hard key gives an object one specular dot and a black side, which describes nothing about the material. A large source gives a broad reflection whose *shape* you can design, and the shape of that reflection is the look.
|
|
28
|
+
|
|
29
|
+
Ratios are still written lit side : shadow side per [lighting-and-color.md](lighting-and-color.md), but on a product they describe the two sides of the object rather than two sides of a face, and the interesting number is usually the background separation instead.
|
|
30
|
+
|
|
31
|
+
Light the three material classes differently. Getting this wrong is the most common reason a generated product shot looks like a render.
|
|
32
|
+
|
|
33
|
+
### Specular — metal, lacquer, gloss, polished plastic, a chrome cap
|
|
34
|
+
|
|
35
|
+
You are not lighting the object. You are lighting **what the object reflects**. A polished surface is a mirror, so its brightness at any point is the brightness of whatever sits at the mirror angle from there. Design the reflected field: a large bright panel positioned so its reflection lands where you want the highlight, and black negative fill where you want the surface to go dark so the silhouette reads against the background.
|
|
36
|
+
|
|
37
|
+
Prompt it by naming the reflection, not the fixture: `a single large soft source above and camera-left, its rectangular reflection visible as a vertical highlight running down the polished barrel; the camera-right edge held dark against a black surround so the silhouette reads`.
|
|
38
|
+
|
|
39
|
+
### Transparent — glass, liquid, gel, a serum bottle
|
|
40
|
+
|
|
41
|
+
Glass is invisible; what you see is the background through it and the edges catching. So you light the background and the edges, never the object. Two schemes, and you must pick one:
|
|
42
|
+
|
|
43
|
+
- **Bright field.** A lit panel behind the subject. The glass reads as clean dark edge lines against a bright ground. Clinical, catalogue, honest about the liquid's colour.
|
|
44
|
+
- **Dark field.** A dark background with narrow bright strips out of frame at left and right raking the edges. The glass reads as bright outlines on black. Premium, dramatic, and the liquid needs its own small source behind it or it goes to black with everything else.
|
|
45
|
+
|
|
46
|
+
Prompt it: `dark-field lighting, two narrow white strips out of frame left and right raking the bottle's edges so the glass reads as two bright vertical lines against black; a small soft source 40 cm behind lifts the liquid to a readable amber`.
|
|
47
|
+
|
|
48
|
+
### Matte — powder, cream, fabric, paper, unglazed ceramic
|
|
49
|
+
|
|
50
|
+
There is no specular to shape, so texture only appears when light **rakes** across the surface at a shallow angle and every grain, ridge and fibre casts a short shadow. Frontal or soft overhead light on a matte surface returns a flat colour patch, which is exactly what a generator produces by default.
|
|
51
|
+
|
|
52
|
+
Prompt it: `a hard source raking in from camera-left at a shallow angle to the card, so the ridges the applicator left cast short shadows to the right and the stroke reads as relief rather than as a flat patch; no fill on the shadow side`.
|
|
53
|
+
|
|
54
|
+
### Reflection management
|
|
55
|
+
|
|
56
|
+
Anything glossy will show the room. On a set that means flagging out the rig and the crew; in generation it means the model *invents* a reflection, and what it invents is a softbox, a window grid, a photographer, or a second copy of the product. Handle it from both directions: say positively what is reflected (`the only thing reflected in the cap is a single soft white rectangle`) and negative the specific instances (`no lighting rig reflected, no photographer reflected, no window grid in the reflection`). Instances, never categories — the category form is the mechanism behind F8.
|
|
57
|
+
|
|
58
|
+
## Macro reality
|
|
59
|
+
|
|
60
|
+
**Working distance.** A 100mm macro at life size sits roughly 15 cm from the subject, and the lens barrel then occupies the space the frontal light was going to come from. This is not a detail: it means a macro shot is lit from the side, from behind, or from a shallow raking angle, and a prompt asking for "macro close-up, softly lit from the front" describes a setup that cannot exist. The model resolves the impossibility by inventing a look, which is where plastic-looking macro comes from.
|
|
61
|
+
|
|
62
|
+
**Depth of field collapses to millimetres.** Using the arithmetic in [cinematic-language.md](cinematic-language.md) — total depth scales as `(distance² × f-number) / focal-length²` — a 100mm at f/2.8 from 0.3 m holds about **1.5 mm**. Stopping down to f/11 buys about 6 mm. A lipstick bullet is 8–10 mm across; a coffee bean is 10 mm; a watch crown is 5 mm. At f/2.8 you cannot hold the whole object, and no amount of prompt language changes that. Distance is the strongest term in the expression, so backing off and cropping in buys depth far faster than stopping down.
|
|
63
|
+
|
|
64
|
+
**Focus stacking, and what substitutes for it.** Stills photography solves this by shooting ten to forty frames at stepped focus and merging them. Video cannot, and generation cannot at all. The substitutes, in order:
|
|
65
|
+
|
|
66
|
+
1. Move back and crop. Doubling the subject distance quadruples the depth.
|
|
67
|
+
2. Lay the product's readable face nearly parallel to the sensor plane, so the whole face lives in one plane and there is nothing behind it that must be sharp.
|
|
68
|
+
3. Accept one sharp plane and design the shot around it — decide which millimetre the viewer must read, and let the rest go.
|
|
69
|
+
4. Composite. Shoot or render the product as a stacked still and drop it into a generated environment.
|
|
70
|
+
|
|
71
|
+
**State which single plane is sharp.** A macro prompt that does not name the sharp plane gets one of two defaults: everything crisp, which looks like a render, or a general blur with spurious circular highlights. Name the plane and the failure of the planes around it — `focus plane on the front face of the barrel; the surface 30 mm behind is unreadably soft; no circular highlights` — following the depth-of-field prompting note in [cinematic-language.md](cinematic-language.md).
|
|
72
|
+
|
|
73
|
+
## Brand and colour fidelity
|
|
74
|
+
|
|
75
|
+
A brand hue is a **discrete** constraint — one hex value, signed off — imposed on a generator that samples from a continuous distribution. It will land near the value, it will never land on it, and it will not land in the same place twice, which means a spot generated shot-by-shot fails at the cut even when every individual clip looks acceptable. The same is true of a mark's proportions. Treat both as things you supply, not things you request.
|
|
76
|
+
|
|
77
|
+
The practical hierarchy, highest stakes first:
|
|
78
|
+
|
|
79
|
+
1. **Generate the environment and the light; composite the real product.** The hero, the packshot, and anything with brand sign-off attached. The product comes from the brand's own asset kit or from a stills shoot; the generator only ever makes the world behind it and the light falling on it.
|
|
80
|
+
2. **Shoot the product; generate the environment.** One soft source, a phone or any camera, and a clean plate is enough for a packshot. Cheaper than it sounds and it removes the whole risk class.
|
|
81
|
+
3. **Generate both — lowest stakes only.** A texture abstraction, a defocused bottle in the background, a mood plate. Legitimate when nothing colour-critical and no legible mark is in frame. Never as the hero.
|
|
82
|
+
|
|
83
|
+
Never accept a generated hue as final; grade the composite to the hex instead of asking the model for it. This is the brand-colour cause under F1 and the hand-plus-branded-product entry in the irreducible list, both in [failure-modes.md](failure-modes.md) — flag the hero asset as composite-only at Step 1 intake, before anything is generated. Where the product recurs across shots, its mark, hue and proportions belong in the continuity bible alongside character identity strings ([continuity-bible.md](continuity-bible.md)).
|
|
84
|
+
|
|
85
|
+
## Text and logo
|
|
86
|
+
|
|
87
|
+
Never ask a generator for readable type. Not the brand name, not the shade number, not the claim, not the ingredient list. Current models produce type-shaped marks that fail on inspection and fail differently in every clip, and the failure is the single most visible tell in the medium. Three workarounds:
|
|
88
|
+
|
|
89
|
+
1. **Keep it out of frame.** Shoot the angle where the mark is not visible, crop past it, or turn it away — `the label is turned away from camera` is a positive instruction the model can execute.
|
|
90
|
+
2. **Composite it.** Generate a plate with a clean, correctly lit blank area at the right perspective and lay the real logo or type over it in the edit. An end card is a graphics job, not a generation job, and it always was.
|
|
91
|
+
3. **Occlude or imply.** A hand, steam, shallow focus or motion blur across the mark. Cheapest, weakest, and only defensible in a non-hero shot.
|
|
92
|
+
|
|
93
|
+
Do not ask for both directions at once: `no text` in the negatives and a legible logo in the positives are the same request twice, and the model will honour whichever it weights higher.
|
|
94
|
+
|
|
95
|
+
## The shot grammar of a product spot
|
|
96
|
+
|
|
97
|
+
Six shots. Most spots use four of them. The durations below are the hold each shot needs to read at a 30 s runtime; at 15 s and 6 s the second-by-second layouts further down govern instead, and every hold compresses to fit them.
|
|
98
|
+
|
|
99
|
+
| Shot | What it must show | Lens and light | Duration | AI risk | Generate it? |
|
|
100
|
+
|---|---|---|---|---|---|
|
|
101
|
+
| Hero | The product whole and unambiguous, in one readable silhouette | 85–100mm at its own eye level; large soft source plus one edge kicker; the light travels | 3–5 s | Proportion and mark drift | Environment yes, product composited |
|
|
102
|
+
| Texture macro | The material fact the claim rests on — the cream's pull, the powder's grain, the brushed metal | 100mm macro; hard raking source; one named sharp plane | 3–4 s | Invented geometry, spurious bokeh balls | Yes — the best generated shot in the category, provided no mark is in frame |
|
|
103
|
+
| Application / use | The product doing its job, on a body or a surface | 50–85mm; soft frontal on skin, raking on the surface | 3–4 s | Highest in this file: fine manipulation, brand mark, and a face all compound | Prefer to shoot. If generated: hand enters already in position, contact under 1.5 s, contact happens on the cut |
|
|
104
|
+
| Before / after | The same frame twice with exactly one variable changed | Locked frame, identical light both sides | 2–3 s per side | The model changes everything else too — angle, exposure, face | Only as a first/last-frame pair or two approved stills. Never as one continuous clip |
|
|
105
|
+
| Packshot | The product with its mark legible, on brand ground | 100mm, product eye level, controlled specular, no travel | 2–3 s hold | Mark and hue, both fatal | No. Shoot or composite |
|
|
106
|
+
| End card | The mark, the claim in type, the call to action | No camera. This is a layout | 2–3 s | Type | No. Graphics in the edit |
|
|
107
|
+
|
|
108
|
+
## Five material families
|
|
109
|
+
|
|
110
|
+
### Food
|
|
111
|
+
|
|
112
|
+
**Breaks:** cut surfaces and steam. A sliced tomato regenerates its seeds every frame, a crumb structure reorganises itself, and models invent steam that rises from nothing and drifts in a direction the frame does not support. **Substitution:** keep the food whole and uncut, put all the motion in the steam, and name the steam's origin point and drift direction. Shoot the food and generate the kitchen behind it if the food is the claim.
|
|
113
|
+
|
|
114
|
+
### Liquid
|
|
115
|
+
|
|
116
|
+
**Breaks:** the pour. A pour is a fluid simulation; generators approximate it with a smear that changes volume, detaches from the bottle mouth, and fills a glass whose level never rises. **Substitution:** cut on the pour — bottle tilting, then the filled glass. If it must be shown, keep it under one second, vertical, at a size where the stream is a few pixels wide, and never show it landing.
|
|
117
|
+
|
|
118
|
+
### Cosmetics
|
|
119
|
+
|
|
120
|
+
**Breaks:** the shade and the bullet. The colour *is* the product, so a drifted hue is a wrong product; and the bullet's geometry — the slant, the chamfer, the cap seam — regenerates every clip. **Substitution:** composite the real bullet, and generate the swatch. A cream stroke on a matte card under raking light is the most reliable generated shot in the whole category, and it carries the shade honestly as long as you grade it to the brand hex afterwards rather than asking the model to hit it.
|
|
121
|
+
|
|
122
|
+
### Fabric
|
|
123
|
+
|
|
124
|
+
**Breaks:** drape and weave. Seam placement, pattern repeat and the way cloth folds are re-derived every clip. **Substitution:** hold the fabric still and travel the light across it. If it must move, use wind or one slow lift, 2–4 s, one garment, and never a fast turn — the Fashion playbook in [genre-playbooks.md](genre-playbooks.md) has the rest.
|
|
125
|
+
|
|
126
|
+
### Hard goods
|
|
127
|
+
|
|
128
|
+
**Breaks:** anything that articulates. A clasp, a screw thread, a sliding lid, a hinge — the model opens it the wrong way, grows an extra part, or passes one solid through another. **Substitution:** show the mechanism as two states on either side of a cut, never as one continuous articulation.
|
|
129
|
+
|
|
130
|
+
## Vertical spot structures
|
|
131
|
+
|
|
132
|
+
Both layouts assume the delivery-format precedence rule at the top of [genre-playbooks.md](genre-playbooks.md): vertical outranks the commercial's 30-second runway, so the hook collapses to the front and the claim moves forward with it. Safe margins per the vertical section of [cinematic-language.md](cinematic-language.md) — nothing load-bearing in the top ~12% or bottom ~20%.
|
|
133
|
+
|
|
134
|
+
**6 seconds (pre-roll, feed):**
|
|
135
|
+
|
|
136
|
+
| Time | Beat | On screen |
|
|
137
|
+
|---|---|---|
|
|
138
|
+
| 0.0–0.8 s | Hook | The product already in frame at the largest size it will ever be, light already travelling. No build-up, no logo yet |
|
|
139
|
+
| 0.8–2.5 s | The one visible fact | Texture macro or a single application stroke. This is the entire demonstration; there is no second one |
|
|
140
|
+
| 2.5–4.5 s | Claim | The claim as a picture, type composited over it; product returns to hero size |
|
|
141
|
+
| 4.5–6.0 s | End card | Mark, claim line, call to action, held still |
|
|
142
|
+
|
|
143
|
+
**15 seconds (feed, 短视频):**
|
|
144
|
+
|
|
145
|
+
| Time | Beat | On screen |
|
|
146
|
+
|---|---|---|
|
|
147
|
+
| 0.0–1.5 s | Hook | The problem or the change, before the viewer decides. Product visible by 1.0 s |
|
|
148
|
+
| 1.5–3.0 s | First visible change | Something is demonstrably different from second zero. This is the retention checkpoint |
|
|
149
|
+
| 3.0–7.0 s | Demonstration | Two or three shots — texture macro, application, result — cutting every 1.2–2 s |
|
|
150
|
+
| 7.0–9.0 s | Second visible change | The before/after, or the result restated at a new size |
|
|
151
|
+
| 9.0–12.0 s | Claim | Said once and shown once, together |
|
|
152
|
+
| 12.0–14.0 s | Packshot | Product with the mark legible, on brand ground |
|
|
153
|
+
| 14.0–15.0 s | End card and loop | A last frame that answers the first, so the loop point gives a reason to stay |
|
|
154
|
+
|
|
155
|
+
## What to shoot instead of generate
|
|
156
|
+
|
|
157
|
+
The honest table. Read the middle column first.
|
|
158
|
+
|
|
159
|
+
| The shot | Generate it? | Do this instead | Why |
|
|
160
|
+
|---|---|---|---|
|
|
161
|
+
| Environment, set, backdrop, surface | Yes | — | No mark, no hue, no geometry that must be held |
|
|
162
|
+
| Steam, smoke, dust, atmosphere, sparkle | Yes | — | Cheap, and models are good at it |
|
|
163
|
+
| Texture macro, no mark in frame | Yes | — | Material behaviour under raking light is what generation does best |
|
|
164
|
+
| Light travelling across a static product | Yes, as the surround | Composite the product into it | Motion with zero geometry risk |
|
|
165
|
+
| A face reacting, product out of frame | Yes | — | An ordinary performance shot; 3–5 s per the duration strategy |
|
|
166
|
+
| Before/after in one frame | As a first/last-frame pair only | Two approved stills | A continuous clip changes the other variables too |
|
|
167
|
+
| Product whole with the mark legible | No | Shoot or composite | Mark proportions are a discrete constraint |
|
|
168
|
+
| Brand hue as the point of the shot | No | Shoot, or grade a composite to the hex | F1, brand-colour cause |
|
|
169
|
+
| Hand applying or operating the product | Avoid | Shoot it | Compounds fine manipulation, mark, and often a face |
|
|
170
|
+
| Pour, splash, articulation, mechanism | Avoid | Shoot it, or cut around it | Physics the model approximates rather than simulates |
|
|
171
|
+
| Readable type of any kind | Never | Graphics in the edit | Type-shaped marks fail on inspection, differently every clip |
|
|
172
|
+
|
|
173
|
+
Budget note: the shots you do generate here are mostly no-face, which puts them in the low retry bands. Plan against the per-band figures in [production-workflow.md](production-workflow.md) — planning guidance, not measurement — and hold every keyframe to the gate before spending a video generation. Handle lengths are owned by [editing-and-assembly.md](editing-and-assembly.md).
|
|
174
|
+
|
|
175
|
+
## Worked prompts
|
|
176
|
+
|
|
177
|
+
Full-description shape (S2) throughout; for the slot order and the shape definitions see [ai-video-tool-adapters.md](ai-video-tool-adapters.md), and for the fillable form [../assets/video-prompt-template.md](../assets/video-prompt-template.md). Negatives name instances only, kept inside the combined ceiling in [prompt-lexicon.md](prompt-lexicon.md).
|
|
178
|
+
|
|
179
|
+
### 1. Lipstick hero, light travelling — English
|
|
180
|
+
|
|
181
|
+
```text
|
|
182
|
+
Static camera, 100mm macro equivalent, product at its own eye level, 9:16. A closed lipstick bullet stands upright at frame centre on a matte charcoal surface, occupying the middle third of frame height. Nothing moves except the light: a single large soft source above and camera-left travels slowly right across the shot, so its rectangular reflection walks down the polished barrel from cap to base, and the engraved band at the base catches once as it passes. The camera-right edge of the barrel stays dark against a black surround so the silhouette reads. Focus plane on the front face of the barrel; the surface 30 mm behind is unreadably soft. End with the highlight resting at the base, the frame otherwise identical to the first frame. No hand in frame, no lighting rig reflected in the barrel, no printed text, no second lipstick, no circular highlights.
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### 2. 同一颗镜头的中文原生写法
|
|
186
|
+
|
|
187
|
+
```text
|
|
188
|
+
固定镜头,100mm 微距,产品与自身视平线齐,9:16 竖幅。一支合盖口红竖立在画面中央的哑光炭灰台面上,占画面高度中间三分之一。全片只有光在动:一盏大面积柔光源从左上方缓慢向右移动,矩形反光沿抛光管身从盖端走到底端,经过底部刻纹时闪一次。管身右缘始终压暗,衬在黑色环境里让轮廓立住。对焦面在管身正面,其后 30mm 处完全虚化。结束时高光停在底端,画面与首帧一致。画面中没有手,管身上不出现灯具倒影,没有文字,没有第二支口红,没有圆形光斑。
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Written native rather than translated word by word, per the Chinese-UI rule in [prompt-lexicon.md](prompt-lexicon.md). The bullet itself is composited in afterwards; what this prompt is really buying is the surface, the travel of the light, and the black surround.
|
|
192
|
+
|
|
193
|
+
### 3. Cream swatch, matte raking light — the texture macro
|
|
194
|
+
|
|
195
|
+
```text
|
|
196
|
+
Static camera, 100mm macro, top-down, 9:16. A single stroke of cream lipstick lies across a matte white card, running from the upper third of frame to the lower third. A hard source rakes in from camera-left at a shallow angle to the card, so the ridges the applicator left cast short shadows to the right and the stroke reads as relief rather than as a flat colour patch. Across the shot the source moves 20 cm further left: the shadows lengthen and the ridged texture becomes more pronounced. Card, stroke and camera do not move. Focus plane on the stroke's near edge. End on the longest shadows. No hand, no applicator, no printed text, no lighting rig reflected, no glitter.
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Grade the stroke to the brand hex in the edit. Do not ask for the shade by name.
|
|
200
|
+
|
|
201
|
+
### 4. Glass serum bottle, dark field
|
|
202
|
+
|
|
203
|
+
```text
|
|
204
|
+
Static camera, 85mm, product at its own eye level, 9:16. A clear glass serum bottle stands centre frame against black. Dark-field lighting: two narrow white strips out of frame at left and right rake the bottle's edges, so the glass reads as two bright vertical lines and the body stays dark and transparent. Behind the bottle and 40 cm back, a small soft source brightens slowly across the shot, so the liquid inside lifts from black to a readable amber and the meniscus becomes visible. Nothing else changes; bottle and camera are locked. Focus plane on the front glass. End with the liquid fully lit and the two edge lines unchanged. No label, no printed text, no hand, no lighting rig reflected in the glass, no bubbles appearing.
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
The label is deliberately absent, not forbidden by accident: this plate is built to have a real label composited onto it.
|