stillmade-sdk 0.1.42 → 0.1.43
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/.stillmade/sdk-baseline.json +6 -8
- package/AGENTS.md +15 -10
- package/FRAME_VIEWS.md +113 -0
- package/INTERFACE_DESIGN.md +62 -22
- package/MOBILE_UI.md +4 -2
- package/MODULES.md +152 -6
- package/PASTE_TO_LLM.md +35 -25
- package/README.md +3 -2
- package/SDK.md +994 -550
- package/UI_AESTHETIC.md +22 -2
- package/blocks/generate/package.js +1 -0
- package/blocks/generate/versions/1.0.0/package.js +463 -0
- package/docs/build/audio-to-editor.md +36 -0
- package/docs/build/block-builder-contract.md +150 -0
- package/docs/build/comfyui.md +227 -0
- package/docs/build/concepts.md +40 -0
- package/docs/build/context.md +159 -0
- package/docs/build/cookbook.md +57 -0
- package/docs/build/custom-interface.md +617 -0
- package/docs/build/data-types.md +83 -0
- package/docs/build/frame-views.md +259 -0
- package/docs/build/generate-media.md +59 -0
- package/docs/build/github-applications.md +314 -0
- package/docs/build/hosted-images.md +214 -0
- package/docs/build/hosted-music.md +39 -0
- package/docs/build/hosted-speech.md +157 -0
- package/docs/build/hosted-text.md +246 -0
- package/docs/build/image-description.md +49 -0
- package/docs/build/interface-design.md +343 -0
- package/docs/build/javascript.md +63 -0
- package/docs/build/local-preview.md +61 -0
- package/docs/build/media-analysis.md +27 -0
- package/docs/build/media.md +400 -0
- package/docs/build/mobile-ui.md +106 -0
- package/docs/build/modules.md +487 -0
- package/docs/build/original-blocks.md +70 -0
- package/docs/build/outside-apis.md +128 -0
- package/docs/build/production-context-templates.md +12 -0
- package/docs/build/project-storage.md +94 -0
- package/docs/build/quickstart.md +48 -0
- package/docs/build/recipes.md +103 -0
- package/docs/build/script-handoff.md +45 -0
- package/docs/build/script-writer.md +34 -0
- package/docs/build/state.md +223 -0
- package/docs/build/testing.md +112 -0
- package/docs/build/timeline-edits.md +116 -0
- package/docs/build/timeline-proposals.md +76 -0
- package/docs/build/transcription.md +59 -0
- package/docs/build/triggers.md +59 -0
- package/docs/build/tutorial.md +52 -0
- package/docs/build/typescript.md +34 -0
- package/docs/build/video-generation.md +61 -0
- package/docs/build/web-reading.md +37 -0
- package/docs/build/with-your-ai.md +27 -0
- package/docs/changelog.md +9 -0
- package/docs/creators.md +21 -0
- package/docs/distribute/discovery.md +43 -0
- package/docs/distribute/imports.md +58 -0
- package/docs/distribute/publishing.md +29 -0
- package/docs/distribute/sdk-versions.md +36 -0
- package/docs/distribute/selling.md +14 -0
- package/docs/distribute/teams.md +60 -0
- package/docs/distribute/versioning.md +28 -0
- package/docs/examples.md +23 -0
- package/docs/gallery.md +26 -0
- package/docs/index.md +50 -0
- package/docs/native-mcp.md +307 -0
- package/docs/project-types/automation.md +43 -0
- package/docs/project-types/batches.md +50 -0
- package/docs/project-types/build.md +42 -0
- package/docs/project-types/completion.md +15 -0
- package/docs/project-types/conditions.md +21 -0
- package/docs/project-types/hosted-review.md +115 -0
- package/docs/project-types/onboarding.md +75 -0
- package/docs/project-types/running.md +309 -0
- package/docs/project-types/testing.md +72 -0
- package/docs/reference/application-artifacts.md +87 -0
- package/docs/reference/authoring-guide.md +134 -0
- package/docs/reference/browser-applications.md +267 -0
- package/docs/reference/capabilities.md +45 -0
- package/docs/reference/cli.md +71 -0
- package/docs/reference/connection-api.md +59 -0
- package/docs/reference/cooperative-jobs.md +13 -0
- package/docs/reference/desktop-capabilities.md +172 -0
- package/docs/reference/desktop-execution.md +77 -0
- package/docs/reference/errors.md +233 -0
- package/docs/reference/execution.md +800 -0
- package/docs/reference/first-party-blocks.md +40 -0
- package/docs/reference/generation-models.md +59 -0
- package/docs/reference/limits.md +306 -0
- package/docs/reference/manifest-kinds-controls.md +36 -0
- package/docs/reference/manifest.md +181 -0
- package/docs/reference/operations.md +36 -0
- package/docs/reference/package-jobs.md +35 -0
- package/docs/reference/parity.md +55 -0
- package/docs/reference/permissions.md +86 -0
- package/docs/reference/ports.md +26 -0
- package/docs/reference/types.md +268 -0
- package/docs/reference/universal-resolver.md +303 -0
- package/docs/reference/view-bridge.md +60 -0
- package/docs/reference/view-rules.md +15 -0
- package/docs/reference/workspace-sync.md +25 -0
- package/docs/sdk.md +34 -0
- package/docs/tools/block-remix.md +211 -0
- package/docs/tools/llm.md +2213 -0
- package/docs/tools/repository-adaptation.md +613 -0
- package/examples/check-clip.stillmade.json +4 -1
- package/examples/generate-video.stillmade.json +6 -2
- package/examples/research-topic.stillmade.json +5 -1
- package/examples/text-workflow.stillmade.json +3 -32
- package/examples/timeline-polish.stillmade.json +11 -3
- package/examples/transcribe-audio.stillmade.json +11 -3
- package/package.json +1 -1
- package/packages/block-cli/cli.js +13 -6
- package/packages/block-cli/dev-host/assets/host.js +76 -38
- package/packages/block-cli/dev-host/assets/index.css +1 -1
- package/packages/block-cli/format.js +1 -1
- package/packages/block-cli/templates.js +31 -13
- package/packages/block-cli/type-packages.js +119 -0
- package/packages/block-platform/block-readiness.js +5 -0
- package/packages/block-platform/canvas.js +2 -1
- package/packages/block-platform/catalog.js +27 -48
- package/packages/block-platform/native-host-inventory.js +0 -226
- package/packages/block-platform/plain-descriptions.js +1 -25
- package/packages/block-platform/project-type-starters.js +13 -53
- package/packages/block-platform/script-handoff.js +2 -4
- package/packages/block-platform/type-workspace.js +2 -0
- package/packages/block-sdk/appearance.js +3 -1
- package/packages/block-sdk/block-tier.js +1 -1
- package/packages/block-sdk/builder-contract.js +10 -8
- package/packages/block-sdk/capabilities.js +1 -1
- package/packages/block-sdk/contracts.js +6 -2
- package/packages/block-sdk/first-party-identities.js +1 -84
- package/packages/block-sdk/first-party-packages.js +3 -85
- package/packages/block-sdk/generation-catalog.js +15 -3
- package/packages/block-sdk/index.d.ts +2 -1
- package/packages/block-sdk/media-analysis-example.js +1 -1
- package/packages/block-sdk/mock-host.js +7 -1
- package/packages/block-sdk/module-host-calls.js +35 -10
- package/packages/block-sdk/module-hosted.js +15 -2
- package/packages/block-sdk/module-media-access.js +71 -0
- package/packages/block-sdk/module-node.js +1 -1
- package/packages/block-sdk/portable-media-actions.js +1 -1
- package/packages/block-sdk/runtime.js +1 -1
- package/packages/block-sdk/timeline-proposal-example.js +1 -1
- package/packages/block-sdk/transcription-example.js +1 -1
- package/packages/block-sdk/video-generation-example.js +1 -1
- package/packages/block-sdk/view-bridge.js +4 -1
- package/packages/block-sdk/view-design.js +17 -14
- package/packages/block-sdk/web-example.js +1 -1
- package/packages/design-system/block-kit.css +48 -12
- package/packages/design-system/block-kit.html +3 -2
- package/blocks/mcp-motion-planner/versions/1.1.0/package.js +0 -97
- package/blocks/motion-designer/versions/1.0.1/package.js +0 -173318
- package/blocks/motion-designer/versions/1.0.2/package.js +0 -173318
- package/blocks/motion-frame-review/versions/1.1.1/package.js +0 -465
- package/blocks/motion-frame-review/versions/1.1.2/package.snapshot.js +0 -572
- package/blocks/narration/package.js +0 -1
- package/blocks/narration/versions/1.0.0/package.js +0 -221
- package/blocks/narration/versions/1.0.1/package.js +0 -221
- package/blocks/native/sm.animated-scene/versions/2.0.0/package.js +0 -475
- package/blocks/native/sm.animated-scene/versions/2.1.0/package.js +0 -498
- package/blocks/native/sm.animated-scene/versions/2.2.0/package.js +0 -524
- package/blocks/native/sm.animated-scene/versions/2.3.0/package.js +0 -618
- package/blocks/native/sm.animated-scene/versions/2.3.1/package.js +0 -618
- package/blocks/native/sm.animated-scene/versions/2.3.2/package.js +0 -723
- package/blocks/native/sm.animated-scene/versions/2.3.3/package.js +0 -723
- package/blocks/native/sm.animated-scene/versions/2.3.4/package.js +0 -676
- package/blocks/native/sm.animated-scene/versions/2.3.5/package.js +0 -693
- package/blocks/native/sm.animated-scene/versions/2.3.6/package.js +0 -700
- package/blocks/native/sm.animated-scene/versions/2.3.7/package.js +0 -747
- package/blocks/native/sm.animated-scene/versions/2.3.8/package.js +0 -769
- package/blocks/native/sm.animated-scene/versions/2.3.9/package.js +0 -769
- package/blocks/native/sm.animated-scene-assistant/versions/1.0.0/package.js +0 -183
- package/blocks/native/sm.blueprint/versions/2.0.0/package.js +0 -358
- package/blocks/native/sm.blueprint/versions/2.1.0/package.js +0 -358
- package/blocks/native/sm.blueprint/versions/2.1.1/package.js +0 -358
- package/blocks/native/sm.blueprint/versions/2.1.2/package.js +0 -358
- package/blocks/native/sm.blueprint/versions/2.1.3/package.js +0 -381
- package/blocks/native/sm.blueprint/versions/2.1.4/package.js +0 -381
- package/blocks/native/sm.blueprint/versions/2.1.5/package.js +0 -339
- package/blocks/native/sm.blueprint/versions/2.1.6/package.js +0 -356
- package/blocks/native/sm.blueprint/versions/2.1.7/package.js +0 -363
- package/blocks/native/sm.blueprint/versions/2.1.8/package.js +0 -410
- package/blocks/native/sm.blueprint/versions/2.1.9/package.js +0 -422
- package/blocks/native/sm.blueprint-assistant/versions/1.0.0/package.js +0 -172
- package/blocks/native/sm.chat/versions/2.0.0/package.js +0 -144
- package/blocks/native/sm.chat/versions/2.0.1/package.js +0 -97
- package/blocks/native/sm.chat/versions/2.0.2/package.js +0 -100
- package/blocks/native/sm.chat/versions/2.0.3/package.js +0 -100
- package/blocks/native/sm.continue-if/versions/1.0.0/package.js +0 -168
- package/blocks/native/sm.describe-media/versions/2.0.0/package.js +0 -153
- package/blocks/native/sm.describe-media/versions/2.0.1/package.js +0 -156
- package/blocks/native/sm.describe-media/versions/2.1.0/package.js +0 -140
- package/blocks/native/sm.image-editor/versions/2.0.0/package.js +0 -183
- package/blocks/native/sm.image-editor/versions/2.0.1/package.js +0 -190
- package/blocks/native/sm.new-items/versions/1.0.0/package.js +0 -191
- package/blocks/native/sm.pick-photos/versions/1.0.0/package.js +0 -334
- package/blocks/native/sm.quality-audit/versions/1.0.0/package.js +0 -192
- package/blocks/native/sm.quality-audit/versions/1.0.1/package.js +0 -192
- package/blocks/native/sm.quality-audit/versions/1.0.2/package.js +0 -195
- package/blocks/native/sm.research/versions/2.0.0/package.js +0 -175
- package/blocks/native/sm.research/versions/2.0.1/package.js +0 -184
- package/blocks/native/sm.research/versions/2.0.2/package.js +0 -187
- package/blocks/native/sm.script/versions/2.0.0/package.js +0 -144
- package/blocks/native/sm.script/versions/2.1.0/package.js +0 -144
- package/blocks/native/sm.script/versions/2.1.1/package.js +0 -144
- package/blocks/native/sm.script/versions/2.1.2/package.js +0 -105
- package/blocks/native/sm.script/versions/2.1.3/package.js +0 -152
- package/blocks/native/sm.script/versions/2.1.4/package.js +0 -156
- package/blocks/native/sm.script/versions/2.1.5/package.js +0 -156
- package/blocks/native/sm.shot-plan/versions/2.0.0/package.js +0 -301
- package/blocks/native/sm.shot-plan/versions/2.1.0/package.js +0 -528
- package/blocks/native/sm.shot-plan/versions/2.1.1/package.js +0 -528
- package/blocks/native/sm.shot-plan/versions/2.1.2/package.js +0 -528
- package/blocks/native/sm.shot-plan/versions/2.1.3/package.js +0 -536
- package/blocks/native/sm.shot-plan/versions/2.2.0/package.js +0 -800
- package/blocks/native/sm.shot-plan/versions/2.2.1/package.js +0 -920
- package/blocks/native/sm.shot-plan-assistant/versions/1.0.0/package.js +0 -173
- package/blocks/native/sm.stock-search/versions/2.0.0/package.js +0 -174
- package/blocks/native/sm.thumbnail/versions/2.0.0/package.js +0 -137
- package/blocks/native/sm.thumbnail/versions/2.0.1/package.js +0 -140
- package/blocks/native/sm.transcribe/versions/2.0.0/package.js +0 -163
- package/blocks/native/sm.transcribe/versions/2.0.1/package.js +0 -168
- package/blocks/native/sm.whiteboard-assistant/versions/1.0.0/package.js +0 -175
- package/blocks/native/sm.youtube/versions/2.0.0/package.js +0 -217
- package/blocks/occasion-story/package.js +0 -1
- package/blocks/occasion-story/versions/1.0.0/package.js +0 -1658
- package/blocks/occasion-story/versions/1.0.1/package.js +0 -1699
- package/blocks/occasion-story/versions/1.0.2/package.js +0 -1682
- package/blocks/photo-reel-composer/versions/1.0.0/package.js +0 -3043
- package/blocks/photo-reel-composer/versions/1.0.1/package.js +0 -3026
- package/blocks/photo-reel-composer/versions/1.0.2/package.js +0 -4149
- package/blocks/product-ad-variants/versions/1.0.0/package.js +0 -2911
- package/blocks/product-launch-director/versions/1.0.0/package.js +0 -103
- package/blocks/release-visuals/package.js +0 -1
- package/blocks/release-visuals/versions/1.0.0/package.js +0 -1492
- package/blocks/release-visuals/versions/1.0.1/package.js +0 -1517
- package/blocks/release-visuals/versions/1.0.2/package.js +0 -1500
- package/blocks/screen-recorder/package.js +0 -1
- package/blocks/screen-recorder/versions/1.0.0/package.js +0 -223
- package/blocks/screen-recorder/versions/1.0.1/package.js +0 -223
- package/blocks/short-form-finish/package.js +0 -1
- package/blocks/short-form-finish/versions/1.0.0/package.js +0 -1043
- package/blocks/short-form-finish/versions/1.0.1/package.js +0 -1043
- package/blocks/short-form-finish/versions/1.0.2/package.js +0 -1043
- package/blocks/short-form-finish/versions/1.0.3/package.js +0 -1026
- package/examples/saas-product-launch-reviewed-source.stillmade.json +0 -383
- package/examples/saas-product-launch.stillmade.json +0 -304
- package/packages/block-platform/dealer-inventory-video-project-type.js +0 -38
- package/packages/block-platform/first-revenue-project-types.js +0 -46
- package/packages/block-platform/fixture-starters.js +0 -13
- package/packages/block-platform/launch-project-source.js +0 -10
- package/packages/block-platform/launch-project.js +0 -30
- package/packages/block-platform/motion-project-types.js +0 -55
- package/packages/block-platform/motion-starters.js +0 -14
- package/packages/block-platform/product-ad-variants-project-type.js +0 -30
- package/packages/block-platform/product-launch-updated.js +0 -90
- package/packages/block-platform/revenue-review-project-types.js +0 -36
- package/packages/block-platform/revenue-review-starters.js +0 -13
- package/packages/block-platform/script-writer.js +0 -29
- package/packages/block-platform/website-source-block.js +0 -14
|
@@ -1,2911 +0,0 @@
|
|
|
1
|
-
// Generated from the independently owned versioned source.
|
|
2
|
-
export default {
|
|
3
|
-
"manifest": {
|
|
4
|
-
"schemaVersion": 1,
|
|
5
|
-
"sdkVersion": "0.1.0",
|
|
6
|
-
"id": "stillmade.product-ad-variants",
|
|
7
|
-
"version": "1.0.0",
|
|
8
|
-
"name": "Product Ad Variants",
|
|
9
|
-
"description": "Create three distinct source-footage previews and approved hooks ahead of the same full product demonstration. No generated scenes or invented claims.",
|
|
10
|
-
"kind": "task",
|
|
11
|
-
"runtime": "javascript",
|
|
12
|
-
"entry": "src/run.js",
|
|
13
|
-
"license": "MIT",
|
|
14
|
-
"inputs": {
|
|
15
|
-
"timeline": {
|
|
16
|
-
"type": "timeline",
|
|
17
|
-
"primary": true,
|
|
18
|
-
"required": true,
|
|
19
|
-
"default": {
|
|
20
|
-
"schemaVersion": 1,
|
|
21
|
-
"clips": [],
|
|
22
|
-
"audioItems": [],
|
|
23
|
-
"captions": [],
|
|
24
|
-
"textOverlays": []
|
|
25
|
-
},
|
|
26
|
-
"semantic": "legacy.timeline.updatededitor",
|
|
27
|
-
"sources": [
|
|
28
|
-
"upstream",
|
|
29
|
-
"user"
|
|
30
|
-
],
|
|
31
|
-
"description": "Reviewed portrait demonstration from one original video. Keep its complete frame, source-speed cuts, approved copy and optional original speech/captions."
|
|
32
|
-
},
|
|
33
|
-
"hookA": {
|
|
34
|
-
"type": "text",
|
|
35
|
-
"default": "",
|
|
36
|
-
"required": true,
|
|
37
|
-
"description": "Exact approved hook A. Up to 64 characters; it must be supported by the real footage and offer.",
|
|
38
|
-
"semantic": "stillmade.product_ad_variants.hooka",
|
|
39
|
-
"sources": [
|
|
40
|
-
"user",
|
|
41
|
-
"default"
|
|
42
|
-
]
|
|
43
|
-
},
|
|
44
|
-
"hookB": {
|
|
45
|
-
"type": "text",
|
|
46
|
-
"default": "",
|
|
47
|
-
"required": true,
|
|
48
|
-
"description": "Exact approved hook B. Use a genuinely different opening angle, without inventing a benefit or claim.",
|
|
49
|
-
"semantic": "stillmade.product_ad_variants.hookb",
|
|
50
|
-
"sources": [
|
|
51
|
-
"user",
|
|
52
|
-
"default"
|
|
53
|
-
]
|
|
54
|
-
},
|
|
55
|
-
"hookC": {
|
|
56
|
-
"type": "text",
|
|
57
|
-
"default": "",
|
|
58
|
-
"required": true,
|
|
59
|
-
"description": "Exact approved hook C. Keep this distinct from A and B and supported by the source.",
|
|
60
|
-
"semantic": "stillmade.product_ad_variants.hookc",
|
|
61
|
-
"sources": [
|
|
62
|
-
"user",
|
|
63
|
-
"default"
|
|
64
|
-
]
|
|
65
|
-
},
|
|
66
|
-
"openingA": {
|
|
67
|
-
"type": "number",
|
|
68
|
-
"min": 0,
|
|
69
|
-
"default": 0,
|
|
70
|
-
"description": "Source-video start in seconds for preview A. Choose a visible product moment.",
|
|
71
|
-
"semantic": "stillmade.product_ad_variants.openinga",
|
|
72
|
-
"sources": [
|
|
73
|
-
"user",
|
|
74
|
-
"default"
|
|
75
|
-
],
|
|
76
|
-
"required": false
|
|
77
|
-
},
|
|
78
|
-
"openingB": {
|
|
79
|
-
"type": "number",
|
|
80
|
-
"min": 0,
|
|
81
|
-
"default": 2,
|
|
82
|
-
"description": "Source-video start in seconds for preview B. It must not overlap the other two previews.",
|
|
83
|
-
"semantic": "stillmade.product_ad_variants.openingb",
|
|
84
|
-
"sources": [
|
|
85
|
-
"user",
|
|
86
|
-
"default"
|
|
87
|
-
],
|
|
88
|
-
"required": false
|
|
89
|
-
},
|
|
90
|
-
"openingC": {
|
|
91
|
-
"type": "number",
|
|
92
|
-
"min": 0,
|
|
93
|
-
"default": 4,
|
|
94
|
-
"description": "Source-video start in seconds for preview C. Choose a different visible source moment.",
|
|
95
|
-
"semantic": "stillmade.product_ad_variants.openingc",
|
|
96
|
-
"sources": [
|
|
97
|
-
"user",
|
|
98
|
-
"default"
|
|
99
|
-
],
|
|
100
|
-
"required": false
|
|
101
|
-
},
|
|
102
|
-
"openingDuration": {
|
|
103
|
-
"type": "number",
|
|
104
|
-
"min": 1,
|
|
105
|
-
"max": 3,
|
|
106
|
-
"default": 2,
|
|
107
|
-
"description": "Length of each source preview, 1–3 seconds. The full unchanged demonstration follows each preview.",
|
|
108
|
-
"semantic": "stillmade.product_ad_variants.openingduration",
|
|
109
|
-
"sources": [
|
|
110
|
-
"user",
|
|
111
|
-
"default"
|
|
112
|
-
],
|
|
113
|
-
"required": false
|
|
114
|
-
},
|
|
115
|
-
"copyApproved": {
|
|
116
|
-
"type": "boolean",
|
|
117
|
-
"default": false,
|
|
118
|
-
"required": true,
|
|
119
|
-
"sources": [
|
|
120
|
-
"user"
|
|
121
|
-
],
|
|
122
|
-
"description": "I have permission to use this footage and have approved all three exact hooks against what it actually shows.",
|
|
123
|
-
"semantic": "stillmade.product_ad_variants.copyapproved"
|
|
124
|
-
}
|
|
125
|
-
},
|
|
126
|
-
"outputs": {
|
|
127
|
-
"variantA": {
|
|
128
|
-
"type": "timeline",
|
|
129
|
-
"primary": true,
|
|
130
|
-
"semantic": "legacy.timeline.updatededitor",
|
|
131
|
-
"description": "Variant A: its selected actual-footage preview and approved hook, followed by the full demonstration. Review and export separately."
|
|
132
|
-
},
|
|
133
|
-
"variantB": {
|
|
134
|
-
"type": "timeline",
|
|
135
|
-
"semantic": "legacy.timeline.updatededitor",
|
|
136
|
-
"description": "Variant B: its selected actual-footage preview and approved hook, followed by the full demonstration. Review and export separately."
|
|
137
|
-
},
|
|
138
|
-
"variantC": {
|
|
139
|
-
"type": "timeline",
|
|
140
|
-
"semantic": "legacy.timeline.updatededitor",
|
|
141
|
-
"description": "Variant C: its selected actual-footage preview and approved hook, followed by the full demonstration. Review and export separately."
|
|
142
|
-
},
|
|
143
|
-
"review": {
|
|
144
|
-
"type": "json",
|
|
145
|
-
"semantic": "stillmade.product_ad_variants.review",
|
|
146
|
-
"description": "Exact source, opening selections, approved hooks and outstanding human review.",
|
|
147
|
-
"schema": {
|
|
148
|
-
"schemaVersion": "integer",
|
|
149
|
-
"state": "string",
|
|
150
|
-
"humanApproved": "boolean",
|
|
151
|
-
"providerCalls": "integer",
|
|
152
|
-
"source": {
|
|
153
|
-
"assetId": "string",
|
|
154
|
-
"versionId": "string"
|
|
155
|
-
},
|
|
156
|
-
"bodyDuration": "number",
|
|
157
|
-
"outputDuration": "number",
|
|
158
|
-
"variants": [
|
|
159
|
-
{
|
|
160
|
-
"id": "string",
|
|
161
|
-
"hook": "string",
|
|
162
|
-
"openingFrom": "number",
|
|
163
|
-
"openingTo": "number"
|
|
164
|
-
}
|
|
165
|
-
],
|
|
166
|
-
"warnings": "string[]"
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
},
|
|
170
|
-
"permissions": {
|
|
171
|
-
"project": [
|
|
172
|
-
"asset.read"
|
|
173
|
-
],
|
|
174
|
-
"network": [],
|
|
175
|
-
"filesystem": [],
|
|
176
|
-
"secrets": []
|
|
177
|
-
},
|
|
178
|
-
"ui": [
|
|
179
|
-
{
|
|
180
|
-
"port": "openingDuration",
|
|
181
|
-
"control": "slider",
|
|
182
|
-
"min": 1,
|
|
183
|
-
"max": 3,
|
|
184
|
-
"step": 0.1
|
|
185
|
-
}
|
|
186
|
-
],
|
|
187
|
-
"provenance": {
|
|
188
|
-
"notice": "Original source (authorship declared by the packager)\nLicense: MIT\nChanges: Original implementation declared by the packager; no reused repository or dependency code.\nFiles: LICENSE, src/run.js\n\nMIT License\n\nCopyright (c) <year> <copyright holders>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and \nassociated documentation files (the \"Software\"), to deal in the Software without restriction, including \nwithout limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell \ncopies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the \nfollowing conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial \nportions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT \nLIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO \nEVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER \nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE \nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n",
|
|
189
|
-
"portableSources": [
|
|
190
|
-
{
|
|
191
|
-
"kind": "original",
|
|
192
|
-
"license": "MIT",
|
|
193
|
-
"paths": [
|
|
194
|
-
"LICENSE",
|
|
195
|
-
"src/run.js"
|
|
196
|
-
],
|
|
197
|
-
"evidence": [
|
|
198
|
-
"upstream/0/LICENSE",
|
|
199
|
-
"upstream/0/src/run.js"
|
|
200
|
-
],
|
|
201
|
-
"changes": "Original implementation declared by the packager; no reused repository or dependency code."
|
|
202
|
-
}
|
|
203
|
-
]
|
|
204
|
-
},
|
|
205
|
-
"semantics": [
|
|
206
|
-
{
|
|
207
|
-
"name": "stillmade.product_ad_variants.hooka",
|
|
208
|
-
"description": "Exact approved hook A. Up to 64 characters; it must be supported by the real footage and offer.",
|
|
209
|
-
"parents": []
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
"name": "stillmade.product_ad_variants.hookb",
|
|
213
|
-
"description": "Exact approved hook B. Use a genuinely different opening angle, without inventing a benefit or claim.",
|
|
214
|
-
"parents": []
|
|
215
|
-
},
|
|
216
|
-
{
|
|
217
|
-
"name": "stillmade.product_ad_variants.hookc",
|
|
218
|
-
"description": "Exact approved hook C. Keep this distinct from A and B and supported by the source.",
|
|
219
|
-
"parents": []
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
"name": "stillmade.product_ad_variants.openinga",
|
|
223
|
-
"description": "Source-video start in seconds for preview A. Choose a visible product moment.",
|
|
224
|
-
"parents": []
|
|
225
|
-
},
|
|
226
|
-
{
|
|
227
|
-
"name": "stillmade.product_ad_variants.openingb",
|
|
228
|
-
"description": "Source-video start in seconds for preview B. It must not overlap the other two previews.",
|
|
229
|
-
"parents": []
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
"name": "stillmade.product_ad_variants.openingc",
|
|
233
|
-
"description": "Source-video start in seconds for preview C. Choose a different visible source moment.",
|
|
234
|
-
"parents": []
|
|
235
|
-
},
|
|
236
|
-
{
|
|
237
|
-
"name": "stillmade.product_ad_variants.openingduration",
|
|
238
|
-
"description": "Length of each source preview, 1–3 seconds. The full unchanged demonstration follows each preview.",
|
|
239
|
-
"parents": []
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
"name": "stillmade.product_ad_variants.copyapproved",
|
|
243
|
-
"description": "I have permission to use this footage and have approved all three exact hooks against what it actually shows.",
|
|
244
|
-
"parents": []
|
|
245
|
-
},
|
|
246
|
-
{
|
|
247
|
-
"name": "stillmade.product_ad_variants.review",
|
|
248
|
-
"description": "Exact source, opening selections, approved hooks and outstanding human review.",
|
|
249
|
-
"parents": []
|
|
250
|
-
}
|
|
251
|
-
]
|
|
252
|
-
},
|
|
253
|
-
"code": "// Block-owned source editing, executed only inside the declared SDK sandbox.\nconst clone = value => JSON.parse(JSON.stringify(value));\nconst check = (condition, message) => { if (!condition) throw Error(message); };\nconst round = value => Math.round(value * 1000000) / 1000000;\nconst base = input.timeline;\ncheck(base && base.schemaVersion === 1 && Array.isArray(base.clips) && base.clips.length > 0 && base.clips.length <= 12, 'Connect the reviewed Product Demonstration timeline.');\ncheck(base.aspect === '9:16', 'Prepare a portrait 9:16 demonstration before making variants.');\ncheck(Number.isFinite(base.targetDuration) && base.targetDuration >= 5 && base.targetDuration <= 60, 'Use a complete 5–60 second product demonstration.');\ncheck(input.copyApproved === true, 'Confirm permission for the source footage and review all three exact hooks against what it actually shows.');\ncheck(!base.stillmadeWatermark && !base.stillmadeEndScreen, 'Use an editable source timeline, before host export branding.');\ncheck(!(base.effects || []).length && !(base.stickers || []).length, 'Use the simple demonstration timeline before adding effects or graphic layers.');\nconst source = base.clips[0].asset;\ncheck(source && source.kind === 'video' && source.assetId && source.versionId && Number.isFinite(source.duration) && source.duration > 0 && Number.isFinite(source.width) && source.width > 0 && Number.isFinite(source.height) && source.height > 0, 'The original video needs its saved asset/version, duration and dimensions.');\ncheck(typeof source.url === 'string' && /^(https:\\/\\/|http:\\/\\/(localhost|127\\.0\\.0\\.1)(:\\d+)?\\/|\\/api\\/media\\/[a-zA-Z0-9_-]+\\/|sm-media:|blob:)/.test(source.url) && !/^https?:\\/\\/[^/?#]*@/.test(source.url), 'Use an authorized saved source video reference.');\nlet end = 0;\nfor (const clip of base.clips) {\n check(clip.kind === 'video' && clip.asset?.assetId === source.assetId && clip.asset?.versionId === source.versionId && clip.url === source.url, 'All demonstration selections must use the same exact original footage.');\n check(Number.isFinite(clip.start) && Math.abs(clip.start - end) < .001 && Number.isFinite(clip.duration) && clip.duration > 0, 'Keep the demonstration selections sequential, without gaps or overlaps.');\n check(clip.speed === 1 && Number.isFinite(clip.trimStart) && clip.trimStart >= 0 && clip.trimStart + clip.duration <= source.duration + .02, 'Use source-speed cuts within the original footage.');\n check(clip.transform?.fit === 'contain' && clip.transform?.rotation === 0 && clip.transform?.scale === 1 && clip.transform?.x === 0 && clip.transform?.y === 0, 'Keep the complete original frame for these evidence-preserving variants.');\n end = round(clip.start + clip.duration);\n}\ncheck(Math.abs(end - base.targetDuration) < .02, 'The demonstration duration must match its actual source selections.');\nconst length = input.openingDuration;\ncheck(Number.isFinite(length) && length >= 1 && length <= 3, 'Choose a 1–3 second opening preview.');\nconst options = ['A', 'B', 'C'].map(id => {\n const hook = input['hook' + id];\n check(typeof hook === 'string' && hook.trim() && hook.length <= 64 && !/[\\u0000-\\u001f<>]/.test(hook) && hook.split(/\\s+/).every(word => word.length <= 28), 'Supply a distinct approved hook of up to 64 plain-text characters for each variant.');\n const from = input['opening' + id];\n check(Number.isFinite(from) && from >= 0 && from + length <= source.duration + .001, 'Every opening preview must fit inside the original source video.');\n return {id, hook: hook.trim(), from, to: round(from + length)};\n});\ncheck(new Set(options.map(option => option.hook.toLowerCase())).size === 3, 'Use three distinct approved hooks.');\nfor (let i = 0; i < options.length; i++) for (let j = i + 1; j < options.length; j++) check(Math.abs(options[i].from - options[j].from) >= length - .001, 'Choose three non-overlapping source moments so the openings genuinely differ.');\nconst duration = round(base.targetDuration + length);\nconst shift = row => ({...clone(row), start: round((row.start || 0) + length), ...(Number.isFinite(row.end) ? {end: round(row.end + length)} : {})});\nconst rows = key => { check(base[key] === undefined || Array.isArray(base[key]), 'The demonstration contains unsupported editing data.'); return base[key] || []; };\nconst originalAudio = rows('audioItems'), originalCaptions = rows('captions'), originalCopy = rows('textOverlays');\ncheck(originalCaptions.length <= 500 && originalCopy.length <= 20 && originalAudio.length <= 20, 'Use a bounded demonstration timeline.');\nconst openingText = (id, text, y, size) => ({id,trackId:'variant-hook',type:'text',text,start:0,end:length,font:'Hanken Grotesk',size,color:'#F7F0DB',background:'#0A0A0A',backgroundOpacity:85,backgroundPadding:5,width:.82,x:50,y,position:'center',animation:'fade',animIn:.12,animOut:.1});\nconst outputs = {};\nfor (const option of options) {\n const timeline = clone(base);\n timeline.name = 'Variant ' + option.id + ' · ' + option.hook;\n timeline.targetDuration = duration;\n timeline.clips = [{...clone(base.clips[0]), id:'opening-preview-' + option.id, title:'Source preview ' + option.id, start:0, duration:length, trimStart:option.from, volume:0, transition:{type:'Cut',duration:0}, motion:{type:'none'}}, ...base.clips.map(shift)];\n timeline.audioItems = originalAudio.map(row => {\n // Only the existing explicitly named music bed may continue across the new\n // preview. Original speech stays attached to the untouched demonstration.\n if (row.id !== 'music-bed' || row.asset?.kind !== 'audio' || row.start !== 0) return shift(row);\n const offset = row.sourceOffset || row.trimStart || 0;\n check(Number.isFinite(row.asset.duration) && row.asset.duration >= offset + duration, 'The licensed music is too short for the opening plus full demonstration. Choose a longer soundtrack or omit it.');\n return {...clone(row), duration};\n });\n timeline.captions = originalCaptions.map(shift);\n const hookSize = Math.min(16, (369 * 9 / 16 * .82 - 12) / Math.max(18, ...option.hook.split(/\\s+/).map(word => word.length)));\n timeline.textOverlays = originalCopy.filter(row => row.id !== 'opening').map(row => row.id === 'disclosure' ? {...clone(row),start:0,end:duration} : shift(row));\n timeline.textOverlays.push(openingText('preview-label', 'Preview · actual footage', 8, 7), openingText('approved-hook-' + option.id, option.hook, 18, hookSize));\n timeline.tracks = [...(timeline.tracks || []), {id:'variant-hook',type:'text',label:'Approved opening hook'}];\n timeline.trackOrder = [...(timeline.trackOrder || []), 'variant-hook'];\n timeline.audio = clone(timeline.audioItems);\n timeline.overlays = clone([...timeline.captions, ...timeline.textOverlays]);\n timeline.productAdVariant = {schemaVersion:1,block:{id:'stillmade.product-ad-variants',version:'1.0.0'},variant:option.id,opening:{from:option.from,to:option.to,silent:true},bodyOffset:length,source:{assetId:source.assetId,versionId:source.versionId},hook:option.hook};\n outputs['variant' + option.id] = timeline;\n}\noutputs.review = {schemaVersion:1,state:'needs-human-review',humanApproved:false,providerCalls:0,source:{assetId:source.assetId,versionId:source.versionId},bodyDuration:base.targetDuration,outputDuration:duration,variants:options.map(option => ({id:option.id,hook:option.hook,openingFrom:option.from,openingTo:option.to})),warnings:['The three previews use different supplied source moments, followed by the same complete demonstration. They are not generated product scenes.','Preview sound is muted to avoid presenting partial speech as a quote. Original body speech and captions retain their timing and exact words.','Watch and listen to all three exports at phone size. Verify each hook against the actual footage and approved offer.','No conversion performance, customer endorsement or independent rights verification is claimed.']};\nreturn outputs;\n",
|
|
254
|
-
"tests": [
|
|
255
|
-
{
|
|
256
|
-
"name": "Make three exact source previews and preserve the complete demonstration",
|
|
257
|
-
"input": {
|
|
258
|
-
"timeline": {
|
|
259
|
-
"schemaVersion": 1,
|
|
260
|
-
"activeTimelineId": "short-form",
|
|
261
|
-
"name": "Approved demonstration",
|
|
262
|
-
"aspect": "9:16",
|
|
263
|
-
"aspectRatio": "9:16",
|
|
264
|
-
"previewH": 369,
|
|
265
|
-
"backgroundColor": "#0A0A0A",
|
|
266
|
-
"tracks": [
|
|
267
|
-
{
|
|
268
|
-
"id": "video",
|
|
269
|
-
"type": "video",
|
|
270
|
-
"label": "Source selections"
|
|
271
|
-
},
|
|
272
|
-
{
|
|
273
|
-
"id": "speech",
|
|
274
|
-
"type": "audio",
|
|
275
|
-
"label": "Original speech"
|
|
276
|
-
},
|
|
277
|
-
{
|
|
278
|
-
"id": "music",
|
|
279
|
-
"type": "audio",
|
|
280
|
-
"label": "Music"
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
"id": "captions",
|
|
284
|
-
"type": "caption",
|
|
285
|
-
"label": "Reviewed subtitles"
|
|
286
|
-
},
|
|
287
|
-
{
|
|
288
|
-
"id": "copy",
|
|
289
|
-
"type": "text",
|
|
290
|
-
"label": "Approved copy"
|
|
291
|
-
}
|
|
292
|
-
],
|
|
293
|
-
"trackOrder": [
|
|
294
|
-
"video",
|
|
295
|
-
"speech",
|
|
296
|
-
"music",
|
|
297
|
-
"captions",
|
|
298
|
-
"copy"
|
|
299
|
-
],
|
|
300
|
-
"clips": [
|
|
301
|
-
{
|
|
302
|
-
"id": "selection-1",
|
|
303
|
-
"kind": "video",
|
|
304
|
-
"trackId": "video",
|
|
305
|
-
"asset": {
|
|
306
|
-
"kind": "video",
|
|
307
|
-
"assetId": "approved-video",
|
|
308
|
-
"versionId": "v1",
|
|
309
|
-
"url": "https://media.example/approved.mp4",
|
|
310
|
-
"width": 1080,
|
|
311
|
-
"height": 1920,
|
|
312
|
-
"duration": 12
|
|
313
|
-
},
|
|
314
|
-
"assetId": "approved-video",
|
|
315
|
-
"versionId": "v1",
|
|
316
|
-
"url": "https://media.example/approved.mp4",
|
|
317
|
-
"title": "Original video",
|
|
318
|
-
"start": 0,
|
|
319
|
-
"duration": 12,
|
|
320
|
-
"trimStart": 0,
|
|
321
|
-
"speed": 1,
|
|
322
|
-
"volume": 0,
|
|
323
|
-
"transform": {
|
|
324
|
-
"fit": "contain",
|
|
325
|
-
"scale": 1,
|
|
326
|
-
"x": 0,
|
|
327
|
-
"y": 0,
|
|
328
|
-
"rotation": 0,
|
|
329
|
-
"opacity": 1
|
|
330
|
-
},
|
|
331
|
-
"motion": {
|
|
332
|
-
"type": "none"
|
|
333
|
-
},
|
|
334
|
-
"transition": {
|
|
335
|
-
"type": "Cut",
|
|
336
|
-
"duration": 0
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
],
|
|
340
|
-
"audioItems": [
|
|
341
|
-
{
|
|
342
|
-
"id": "selection-1-sound",
|
|
343
|
-
"trackId": "speech",
|
|
344
|
-
"asset": {
|
|
345
|
-
"kind": "video",
|
|
346
|
-
"assetId": "approved-video",
|
|
347
|
-
"versionId": "v1",
|
|
348
|
-
"url": "https://media.example/approved.mp4",
|
|
349
|
-
"width": 1080,
|
|
350
|
-
"height": 1920,
|
|
351
|
-
"duration": 12
|
|
352
|
-
},
|
|
353
|
-
"assetId": "approved-video",
|
|
354
|
-
"versionId": "v1",
|
|
355
|
-
"url": "https://media.example/approved.mp4",
|
|
356
|
-
"title": "Original speech",
|
|
357
|
-
"start": 0,
|
|
358
|
-
"duration": 12,
|
|
359
|
-
"sourceOffset": 0,
|
|
360
|
-
"trimStart": 0,
|
|
361
|
-
"volume": 100,
|
|
362
|
-
"rate": 1,
|
|
363
|
-
"fadeIn": 0,
|
|
364
|
-
"fadeOut": 0
|
|
365
|
-
}
|
|
366
|
-
],
|
|
367
|
-
"captions": [],
|
|
368
|
-
"textOverlays": [
|
|
369
|
-
{
|
|
370
|
-
"id": "opening",
|
|
371
|
-
"trackId": "copy",
|
|
372
|
-
"type": "text",
|
|
373
|
-
"text": "Approved demonstration",
|
|
374
|
-
"start": 0,
|
|
375
|
-
"end": 3,
|
|
376
|
-
"font": "Hanken Grotesk",
|
|
377
|
-
"size": 16,
|
|
378
|
-
"color": "#F7F0DB",
|
|
379
|
-
"background": "#0A0A0A",
|
|
380
|
-
"backgroundOpacity": 80,
|
|
381
|
-
"backgroundPadding": 5,
|
|
382
|
-
"width": 0.82,
|
|
383
|
-
"x": 50,
|
|
384
|
-
"y": 16,
|
|
385
|
-
"position": "center",
|
|
386
|
-
"animation": "fade",
|
|
387
|
-
"animIn": 0.2,
|
|
388
|
-
"animOut": 0.15
|
|
389
|
-
},
|
|
390
|
-
{
|
|
391
|
-
"id": "cta",
|
|
392
|
-
"trackId": "copy",
|
|
393
|
-
"type": "text",
|
|
394
|
-
"text": "See the details",
|
|
395
|
-
"start": 9,
|
|
396
|
-
"end": 12,
|
|
397
|
-
"font": "Hanken Grotesk",
|
|
398
|
-
"size": 14,
|
|
399
|
-
"color": "#F7F0DB",
|
|
400
|
-
"background": "#0A0A0A",
|
|
401
|
-
"backgroundOpacity": 80,
|
|
402
|
-
"backgroundPadding": 5,
|
|
403
|
-
"width": 0.82,
|
|
404
|
-
"x": 50,
|
|
405
|
-
"y": 17,
|
|
406
|
-
"position": "center",
|
|
407
|
-
"animation": "fade",
|
|
408
|
-
"animIn": 0.2,
|
|
409
|
-
"animOut": 0.15
|
|
410
|
-
}
|
|
411
|
-
],
|
|
412
|
-
"stickers": [],
|
|
413
|
-
"effects": [],
|
|
414
|
-
"audio": [
|
|
415
|
-
{
|
|
416
|
-
"id": "selection-1-sound",
|
|
417
|
-
"trackId": "speech",
|
|
418
|
-
"asset": {
|
|
419
|
-
"kind": "video",
|
|
420
|
-
"assetId": "approved-video",
|
|
421
|
-
"versionId": "v1",
|
|
422
|
-
"url": "https://media.example/approved.mp4",
|
|
423
|
-
"width": 1080,
|
|
424
|
-
"height": 1920,
|
|
425
|
-
"duration": 12
|
|
426
|
-
},
|
|
427
|
-
"assetId": "approved-video",
|
|
428
|
-
"versionId": "v1",
|
|
429
|
-
"url": "https://media.example/approved.mp4",
|
|
430
|
-
"title": "Original speech",
|
|
431
|
-
"start": 0,
|
|
432
|
-
"duration": 12,
|
|
433
|
-
"sourceOffset": 0,
|
|
434
|
-
"trimStart": 0,
|
|
435
|
-
"volume": 100,
|
|
436
|
-
"rate": 1,
|
|
437
|
-
"fadeIn": 0,
|
|
438
|
-
"fadeOut": 0
|
|
439
|
-
}
|
|
440
|
-
],
|
|
441
|
-
"overlays": [
|
|
442
|
-
{
|
|
443
|
-
"id": "opening",
|
|
444
|
-
"trackId": "copy",
|
|
445
|
-
"type": "text",
|
|
446
|
-
"text": "Approved demonstration",
|
|
447
|
-
"start": 0,
|
|
448
|
-
"end": 3,
|
|
449
|
-
"font": "Hanken Grotesk",
|
|
450
|
-
"size": 16,
|
|
451
|
-
"color": "#F7F0DB",
|
|
452
|
-
"background": "#0A0A0A",
|
|
453
|
-
"backgroundOpacity": 80,
|
|
454
|
-
"backgroundPadding": 5,
|
|
455
|
-
"width": 0.82,
|
|
456
|
-
"x": 50,
|
|
457
|
-
"y": 16,
|
|
458
|
-
"position": "center",
|
|
459
|
-
"animation": "fade",
|
|
460
|
-
"animIn": 0.2,
|
|
461
|
-
"animOut": 0.15
|
|
462
|
-
},
|
|
463
|
-
{
|
|
464
|
-
"id": "cta",
|
|
465
|
-
"trackId": "copy",
|
|
466
|
-
"type": "text",
|
|
467
|
-
"text": "See the details",
|
|
468
|
-
"start": 9,
|
|
469
|
-
"end": 12,
|
|
470
|
-
"font": "Hanken Grotesk",
|
|
471
|
-
"size": 14,
|
|
472
|
-
"color": "#F7F0DB",
|
|
473
|
-
"background": "#0A0A0A",
|
|
474
|
-
"backgroundOpacity": 80,
|
|
475
|
-
"backgroundPadding": 5,
|
|
476
|
-
"width": 0.82,
|
|
477
|
-
"x": 50,
|
|
478
|
-
"y": 17,
|
|
479
|
-
"position": "center",
|
|
480
|
-
"animation": "fade",
|
|
481
|
-
"animIn": 0.2,
|
|
482
|
-
"animOut": 0.15
|
|
483
|
-
}
|
|
484
|
-
],
|
|
485
|
-
"targetDuration": 12,
|
|
486
|
-
"exportSettings": {
|
|
487
|
-
"aspect": "9:16",
|
|
488
|
-
"fps": 30,
|
|
489
|
-
"resolution": "1080p",
|
|
490
|
-
"quality": "high"
|
|
491
|
-
}
|
|
492
|
-
},
|
|
493
|
-
"hookA": "Watch the preparation",
|
|
494
|
-
"hookB": "Look at the process",
|
|
495
|
-
"hookC": "See the finished pour",
|
|
496
|
-
"openingA": 0,
|
|
497
|
-
"openingB": 2,
|
|
498
|
-
"openingC": 4,
|
|
499
|
-
"openingDuration": 2,
|
|
500
|
-
"copyApproved": true
|
|
501
|
-
},
|
|
502
|
-
"expected": {
|
|
503
|
-
"variantA": {
|
|
504
|
-
"schemaVersion": 1,
|
|
505
|
-
"activeTimelineId": "short-form",
|
|
506
|
-
"name": "Variant A · Watch the preparation",
|
|
507
|
-
"aspect": "9:16",
|
|
508
|
-
"aspectRatio": "9:16",
|
|
509
|
-
"previewH": 369,
|
|
510
|
-
"backgroundColor": "#0A0A0A",
|
|
511
|
-
"tracks": [
|
|
512
|
-
{
|
|
513
|
-
"id": "video",
|
|
514
|
-
"type": "video",
|
|
515
|
-
"label": "Source selections"
|
|
516
|
-
},
|
|
517
|
-
{
|
|
518
|
-
"id": "speech",
|
|
519
|
-
"type": "audio",
|
|
520
|
-
"label": "Original speech"
|
|
521
|
-
},
|
|
522
|
-
{
|
|
523
|
-
"id": "music",
|
|
524
|
-
"type": "audio",
|
|
525
|
-
"label": "Music"
|
|
526
|
-
},
|
|
527
|
-
{
|
|
528
|
-
"id": "captions",
|
|
529
|
-
"type": "caption",
|
|
530
|
-
"label": "Reviewed subtitles"
|
|
531
|
-
},
|
|
532
|
-
{
|
|
533
|
-
"id": "copy",
|
|
534
|
-
"type": "text",
|
|
535
|
-
"label": "Approved copy"
|
|
536
|
-
},
|
|
537
|
-
{
|
|
538
|
-
"id": "variant-hook",
|
|
539
|
-
"type": "text",
|
|
540
|
-
"label": "Approved opening hook"
|
|
541
|
-
}
|
|
542
|
-
],
|
|
543
|
-
"trackOrder": [
|
|
544
|
-
"video",
|
|
545
|
-
"speech",
|
|
546
|
-
"music",
|
|
547
|
-
"captions",
|
|
548
|
-
"copy",
|
|
549
|
-
"variant-hook"
|
|
550
|
-
],
|
|
551
|
-
"clips": [
|
|
552
|
-
{
|
|
553
|
-
"id": "opening-preview-A",
|
|
554
|
-
"kind": "video",
|
|
555
|
-
"trackId": "video",
|
|
556
|
-
"asset": {
|
|
557
|
-
"kind": "video",
|
|
558
|
-
"assetId": "approved-video",
|
|
559
|
-
"versionId": "v1",
|
|
560
|
-
"url": "https://media.example/approved.mp4",
|
|
561
|
-
"width": 1080,
|
|
562
|
-
"height": 1920,
|
|
563
|
-
"duration": 12
|
|
564
|
-
},
|
|
565
|
-
"assetId": "approved-video",
|
|
566
|
-
"versionId": "v1",
|
|
567
|
-
"url": "https://media.example/approved.mp4",
|
|
568
|
-
"title": "Source preview A",
|
|
569
|
-
"start": 0,
|
|
570
|
-
"duration": 2,
|
|
571
|
-
"trimStart": 0,
|
|
572
|
-
"speed": 1,
|
|
573
|
-
"volume": 0,
|
|
574
|
-
"transform": {
|
|
575
|
-
"fit": "contain",
|
|
576
|
-
"scale": 1,
|
|
577
|
-
"x": 0,
|
|
578
|
-
"y": 0,
|
|
579
|
-
"rotation": 0,
|
|
580
|
-
"opacity": 1
|
|
581
|
-
},
|
|
582
|
-
"motion": {
|
|
583
|
-
"type": "none"
|
|
584
|
-
},
|
|
585
|
-
"transition": {
|
|
586
|
-
"type": "Cut",
|
|
587
|
-
"duration": 0
|
|
588
|
-
}
|
|
589
|
-
},
|
|
590
|
-
{
|
|
591
|
-
"id": "selection-1",
|
|
592
|
-
"kind": "video",
|
|
593
|
-
"trackId": "video",
|
|
594
|
-
"asset": {
|
|
595
|
-
"kind": "video",
|
|
596
|
-
"assetId": "approved-video",
|
|
597
|
-
"versionId": "v1",
|
|
598
|
-
"url": "https://media.example/approved.mp4",
|
|
599
|
-
"width": 1080,
|
|
600
|
-
"height": 1920,
|
|
601
|
-
"duration": 12
|
|
602
|
-
},
|
|
603
|
-
"assetId": "approved-video",
|
|
604
|
-
"versionId": "v1",
|
|
605
|
-
"url": "https://media.example/approved.mp4",
|
|
606
|
-
"title": "Original video",
|
|
607
|
-
"start": 2,
|
|
608
|
-
"duration": 12,
|
|
609
|
-
"trimStart": 0,
|
|
610
|
-
"speed": 1,
|
|
611
|
-
"volume": 0,
|
|
612
|
-
"transform": {
|
|
613
|
-
"fit": "contain",
|
|
614
|
-
"scale": 1,
|
|
615
|
-
"x": 0,
|
|
616
|
-
"y": 0,
|
|
617
|
-
"rotation": 0,
|
|
618
|
-
"opacity": 1
|
|
619
|
-
},
|
|
620
|
-
"motion": {
|
|
621
|
-
"type": "none"
|
|
622
|
-
},
|
|
623
|
-
"transition": {
|
|
624
|
-
"type": "Cut",
|
|
625
|
-
"duration": 0
|
|
626
|
-
}
|
|
627
|
-
}
|
|
628
|
-
],
|
|
629
|
-
"audioItems": [
|
|
630
|
-
{
|
|
631
|
-
"id": "selection-1-sound",
|
|
632
|
-
"trackId": "speech",
|
|
633
|
-
"asset": {
|
|
634
|
-
"kind": "video",
|
|
635
|
-
"assetId": "approved-video",
|
|
636
|
-
"versionId": "v1",
|
|
637
|
-
"url": "https://media.example/approved.mp4",
|
|
638
|
-
"width": 1080,
|
|
639
|
-
"height": 1920,
|
|
640
|
-
"duration": 12
|
|
641
|
-
},
|
|
642
|
-
"assetId": "approved-video",
|
|
643
|
-
"versionId": "v1",
|
|
644
|
-
"url": "https://media.example/approved.mp4",
|
|
645
|
-
"title": "Original speech",
|
|
646
|
-
"start": 2,
|
|
647
|
-
"duration": 12,
|
|
648
|
-
"sourceOffset": 0,
|
|
649
|
-
"trimStart": 0,
|
|
650
|
-
"volume": 100,
|
|
651
|
-
"rate": 1,
|
|
652
|
-
"fadeIn": 0,
|
|
653
|
-
"fadeOut": 0
|
|
654
|
-
}
|
|
655
|
-
],
|
|
656
|
-
"captions": [],
|
|
657
|
-
"textOverlays": [
|
|
658
|
-
{
|
|
659
|
-
"id": "cta",
|
|
660
|
-
"trackId": "copy",
|
|
661
|
-
"type": "text",
|
|
662
|
-
"text": "See the details",
|
|
663
|
-
"start": 11,
|
|
664
|
-
"end": 14,
|
|
665
|
-
"font": "Hanken Grotesk",
|
|
666
|
-
"size": 14,
|
|
667
|
-
"color": "#F7F0DB",
|
|
668
|
-
"background": "#0A0A0A",
|
|
669
|
-
"backgroundOpacity": 80,
|
|
670
|
-
"backgroundPadding": 5,
|
|
671
|
-
"width": 0.82,
|
|
672
|
-
"x": 50,
|
|
673
|
-
"y": 17,
|
|
674
|
-
"position": "center",
|
|
675
|
-
"animation": "fade",
|
|
676
|
-
"animIn": 0.2,
|
|
677
|
-
"animOut": 0.15
|
|
678
|
-
},
|
|
679
|
-
{
|
|
680
|
-
"id": "preview-label",
|
|
681
|
-
"trackId": "variant-hook",
|
|
682
|
-
"type": "text",
|
|
683
|
-
"text": "Preview · actual footage",
|
|
684
|
-
"start": 0,
|
|
685
|
-
"end": 2,
|
|
686
|
-
"font": "Hanken Grotesk",
|
|
687
|
-
"size": 7,
|
|
688
|
-
"color": "#F7F0DB",
|
|
689
|
-
"background": "#0A0A0A",
|
|
690
|
-
"backgroundOpacity": 85,
|
|
691
|
-
"backgroundPadding": 5,
|
|
692
|
-
"width": 0.82,
|
|
693
|
-
"x": 50,
|
|
694
|
-
"y": 8,
|
|
695
|
-
"position": "center",
|
|
696
|
-
"animation": "fade",
|
|
697
|
-
"animIn": 0.12,
|
|
698
|
-
"animOut": 0.1
|
|
699
|
-
},
|
|
700
|
-
{
|
|
701
|
-
"id": "approved-hook-A",
|
|
702
|
-
"trackId": "variant-hook",
|
|
703
|
-
"type": "text",
|
|
704
|
-
"text": "Watch the preparation",
|
|
705
|
-
"start": 0,
|
|
706
|
-
"end": 2,
|
|
707
|
-
"font": "Hanken Grotesk",
|
|
708
|
-
"size": 8.788958333333333,
|
|
709
|
-
"color": "#F7F0DB",
|
|
710
|
-
"background": "#0A0A0A",
|
|
711
|
-
"backgroundOpacity": 85,
|
|
712
|
-
"backgroundPadding": 5,
|
|
713
|
-
"width": 0.82,
|
|
714
|
-
"x": 50,
|
|
715
|
-
"y": 18,
|
|
716
|
-
"position": "center",
|
|
717
|
-
"animation": "fade",
|
|
718
|
-
"animIn": 0.12,
|
|
719
|
-
"animOut": 0.1
|
|
720
|
-
}
|
|
721
|
-
],
|
|
722
|
-
"stickers": [],
|
|
723
|
-
"effects": [],
|
|
724
|
-
"audio": [
|
|
725
|
-
{
|
|
726
|
-
"id": "selection-1-sound",
|
|
727
|
-
"trackId": "speech",
|
|
728
|
-
"asset": {
|
|
729
|
-
"kind": "video",
|
|
730
|
-
"assetId": "approved-video",
|
|
731
|
-
"versionId": "v1",
|
|
732
|
-
"url": "https://media.example/approved.mp4",
|
|
733
|
-
"width": 1080,
|
|
734
|
-
"height": 1920,
|
|
735
|
-
"duration": 12
|
|
736
|
-
},
|
|
737
|
-
"assetId": "approved-video",
|
|
738
|
-
"versionId": "v1",
|
|
739
|
-
"url": "https://media.example/approved.mp4",
|
|
740
|
-
"title": "Original speech",
|
|
741
|
-
"start": 2,
|
|
742
|
-
"duration": 12,
|
|
743
|
-
"sourceOffset": 0,
|
|
744
|
-
"trimStart": 0,
|
|
745
|
-
"volume": 100,
|
|
746
|
-
"rate": 1,
|
|
747
|
-
"fadeIn": 0,
|
|
748
|
-
"fadeOut": 0
|
|
749
|
-
}
|
|
750
|
-
],
|
|
751
|
-
"overlays": [
|
|
752
|
-
{
|
|
753
|
-
"id": "cta",
|
|
754
|
-
"trackId": "copy",
|
|
755
|
-
"type": "text",
|
|
756
|
-
"text": "See the details",
|
|
757
|
-
"start": 11,
|
|
758
|
-
"end": 14,
|
|
759
|
-
"font": "Hanken Grotesk",
|
|
760
|
-
"size": 14,
|
|
761
|
-
"color": "#F7F0DB",
|
|
762
|
-
"background": "#0A0A0A",
|
|
763
|
-
"backgroundOpacity": 80,
|
|
764
|
-
"backgroundPadding": 5,
|
|
765
|
-
"width": 0.82,
|
|
766
|
-
"x": 50,
|
|
767
|
-
"y": 17,
|
|
768
|
-
"position": "center",
|
|
769
|
-
"animation": "fade",
|
|
770
|
-
"animIn": 0.2,
|
|
771
|
-
"animOut": 0.15
|
|
772
|
-
},
|
|
773
|
-
{
|
|
774
|
-
"id": "preview-label",
|
|
775
|
-
"trackId": "variant-hook",
|
|
776
|
-
"type": "text",
|
|
777
|
-
"text": "Preview · actual footage",
|
|
778
|
-
"start": 0,
|
|
779
|
-
"end": 2,
|
|
780
|
-
"font": "Hanken Grotesk",
|
|
781
|
-
"size": 7,
|
|
782
|
-
"color": "#F7F0DB",
|
|
783
|
-
"background": "#0A0A0A",
|
|
784
|
-
"backgroundOpacity": 85,
|
|
785
|
-
"backgroundPadding": 5,
|
|
786
|
-
"width": 0.82,
|
|
787
|
-
"x": 50,
|
|
788
|
-
"y": 8,
|
|
789
|
-
"position": "center",
|
|
790
|
-
"animation": "fade",
|
|
791
|
-
"animIn": 0.12,
|
|
792
|
-
"animOut": 0.1
|
|
793
|
-
},
|
|
794
|
-
{
|
|
795
|
-
"id": "approved-hook-A",
|
|
796
|
-
"trackId": "variant-hook",
|
|
797
|
-
"type": "text",
|
|
798
|
-
"text": "Watch the preparation",
|
|
799
|
-
"start": 0,
|
|
800
|
-
"end": 2,
|
|
801
|
-
"font": "Hanken Grotesk",
|
|
802
|
-
"size": 8.788958333333333,
|
|
803
|
-
"color": "#F7F0DB",
|
|
804
|
-
"background": "#0A0A0A",
|
|
805
|
-
"backgroundOpacity": 85,
|
|
806
|
-
"backgroundPadding": 5,
|
|
807
|
-
"width": 0.82,
|
|
808
|
-
"x": 50,
|
|
809
|
-
"y": 18,
|
|
810
|
-
"position": "center",
|
|
811
|
-
"animation": "fade",
|
|
812
|
-
"animIn": 0.12,
|
|
813
|
-
"animOut": 0.1
|
|
814
|
-
}
|
|
815
|
-
],
|
|
816
|
-
"targetDuration": 14,
|
|
817
|
-
"exportSettings": {
|
|
818
|
-
"aspect": "9:16",
|
|
819
|
-
"fps": 30,
|
|
820
|
-
"resolution": "1080p",
|
|
821
|
-
"quality": "high"
|
|
822
|
-
},
|
|
823
|
-
"productAdVariant": {
|
|
824
|
-
"schemaVersion": 1,
|
|
825
|
-
"block": {
|
|
826
|
-
"id": "stillmade.product-ad-variants",
|
|
827
|
-
"version": "1.0.0"
|
|
828
|
-
},
|
|
829
|
-
"variant": "A",
|
|
830
|
-
"opening": {
|
|
831
|
-
"from": 0,
|
|
832
|
-
"to": 2,
|
|
833
|
-
"silent": true
|
|
834
|
-
},
|
|
835
|
-
"bodyOffset": 2,
|
|
836
|
-
"source": {
|
|
837
|
-
"assetId": "approved-video",
|
|
838
|
-
"versionId": "v1"
|
|
839
|
-
},
|
|
840
|
-
"hook": "Watch the preparation"
|
|
841
|
-
}
|
|
842
|
-
},
|
|
843
|
-
"variantB": {
|
|
844
|
-
"schemaVersion": 1,
|
|
845
|
-
"activeTimelineId": "short-form",
|
|
846
|
-
"name": "Variant B · Look at the process",
|
|
847
|
-
"aspect": "9:16",
|
|
848
|
-
"aspectRatio": "9:16",
|
|
849
|
-
"previewH": 369,
|
|
850
|
-
"backgroundColor": "#0A0A0A",
|
|
851
|
-
"tracks": [
|
|
852
|
-
{
|
|
853
|
-
"id": "video",
|
|
854
|
-
"type": "video",
|
|
855
|
-
"label": "Source selections"
|
|
856
|
-
},
|
|
857
|
-
{
|
|
858
|
-
"id": "speech",
|
|
859
|
-
"type": "audio",
|
|
860
|
-
"label": "Original speech"
|
|
861
|
-
},
|
|
862
|
-
{
|
|
863
|
-
"id": "music",
|
|
864
|
-
"type": "audio",
|
|
865
|
-
"label": "Music"
|
|
866
|
-
},
|
|
867
|
-
{
|
|
868
|
-
"id": "captions",
|
|
869
|
-
"type": "caption",
|
|
870
|
-
"label": "Reviewed subtitles"
|
|
871
|
-
},
|
|
872
|
-
{
|
|
873
|
-
"id": "copy",
|
|
874
|
-
"type": "text",
|
|
875
|
-
"label": "Approved copy"
|
|
876
|
-
},
|
|
877
|
-
{
|
|
878
|
-
"id": "variant-hook",
|
|
879
|
-
"type": "text",
|
|
880
|
-
"label": "Approved opening hook"
|
|
881
|
-
}
|
|
882
|
-
],
|
|
883
|
-
"trackOrder": [
|
|
884
|
-
"video",
|
|
885
|
-
"speech",
|
|
886
|
-
"music",
|
|
887
|
-
"captions",
|
|
888
|
-
"copy",
|
|
889
|
-
"variant-hook"
|
|
890
|
-
],
|
|
891
|
-
"clips": [
|
|
892
|
-
{
|
|
893
|
-
"id": "opening-preview-B",
|
|
894
|
-
"kind": "video",
|
|
895
|
-
"trackId": "video",
|
|
896
|
-
"asset": {
|
|
897
|
-
"kind": "video",
|
|
898
|
-
"assetId": "approved-video",
|
|
899
|
-
"versionId": "v1",
|
|
900
|
-
"url": "https://media.example/approved.mp4",
|
|
901
|
-
"width": 1080,
|
|
902
|
-
"height": 1920,
|
|
903
|
-
"duration": 12
|
|
904
|
-
},
|
|
905
|
-
"assetId": "approved-video",
|
|
906
|
-
"versionId": "v1",
|
|
907
|
-
"url": "https://media.example/approved.mp4",
|
|
908
|
-
"title": "Source preview B",
|
|
909
|
-
"start": 0,
|
|
910
|
-
"duration": 2,
|
|
911
|
-
"trimStart": 2,
|
|
912
|
-
"speed": 1,
|
|
913
|
-
"volume": 0,
|
|
914
|
-
"transform": {
|
|
915
|
-
"fit": "contain",
|
|
916
|
-
"scale": 1,
|
|
917
|
-
"x": 0,
|
|
918
|
-
"y": 0,
|
|
919
|
-
"rotation": 0,
|
|
920
|
-
"opacity": 1
|
|
921
|
-
},
|
|
922
|
-
"motion": {
|
|
923
|
-
"type": "none"
|
|
924
|
-
},
|
|
925
|
-
"transition": {
|
|
926
|
-
"type": "Cut",
|
|
927
|
-
"duration": 0
|
|
928
|
-
}
|
|
929
|
-
},
|
|
930
|
-
{
|
|
931
|
-
"id": "selection-1",
|
|
932
|
-
"kind": "video",
|
|
933
|
-
"trackId": "video",
|
|
934
|
-
"asset": {
|
|
935
|
-
"kind": "video",
|
|
936
|
-
"assetId": "approved-video",
|
|
937
|
-
"versionId": "v1",
|
|
938
|
-
"url": "https://media.example/approved.mp4",
|
|
939
|
-
"width": 1080,
|
|
940
|
-
"height": 1920,
|
|
941
|
-
"duration": 12
|
|
942
|
-
},
|
|
943
|
-
"assetId": "approved-video",
|
|
944
|
-
"versionId": "v1",
|
|
945
|
-
"url": "https://media.example/approved.mp4",
|
|
946
|
-
"title": "Original video",
|
|
947
|
-
"start": 2,
|
|
948
|
-
"duration": 12,
|
|
949
|
-
"trimStart": 0,
|
|
950
|
-
"speed": 1,
|
|
951
|
-
"volume": 0,
|
|
952
|
-
"transform": {
|
|
953
|
-
"fit": "contain",
|
|
954
|
-
"scale": 1,
|
|
955
|
-
"x": 0,
|
|
956
|
-
"y": 0,
|
|
957
|
-
"rotation": 0,
|
|
958
|
-
"opacity": 1
|
|
959
|
-
},
|
|
960
|
-
"motion": {
|
|
961
|
-
"type": "none"
|
|
962
|
-
},
|
|
963
|
-
"transition": {
|
|
964
|
-
"type": "Cut",
|
|
965
|
-
"duration": 0
|
|
966
|
-
}
|
|
967
|
-
}
|
|
968
|
-
],
|
|
969
|
-
"audioItems": [
|
|
970
|
-
{
|
|
971
|
-
"id": "selection-1-sound",
|
|
972
|
-
"trackId": "speech",
|
|
973
|
-
"asset": {
|
|
974
|
-
"kind": "video",
|
|
975
|
-
"assetId": "approved-video",
|
|
976
|
-
"versionId": "v1",
|
|
977
|
-
"url": "https://media.example/approved.mp4",
|
|
978
|
-
"width": 1080,
|
|
979
|
-
"height": 1920,
|
|
980
|
-
"duration": 12
|
|
981
|
-
},
|
|
982
|
-
"assetId": "approved-video",
|
|
983
|
-
"versionId": "v1",
|
|
984
|
-
"url": "https://media.example/approved.mp4",
|
|
985
|
-
"title": "Original speech",
|
|
986
|
-
"start": 2,
|
|
987
|
-
"duration": 12,
|
|
988
|
-
"sourceOffset": 0,
|
|
989
|
-
"trimStart": 0,
|
|
990
|
-
"volume": 100,
|
|
991
|
-
"rate": 1,
|
|
992
|
-
"fadeIn": 0,
|
|
993
|
-
"fadeOut": 0
|
|
994
|
-
}
|
|
995
|
-
],
|
|
996
|
-
"captions": [],
|
|
997
|
-
"textOverlays": [
|
|
998
|
-
{
|
|
999
|
-
"id": "cta",
|
|
1000
|
-
"trackId": "copy",
|
|
1001
|
-
"type": "text",
|
|
1002
|
-
"text": "See the details",
|
|
1003
|
-
"start": 11,
|
|
1004
|
-
"end": 14,
|
|
1005
|
-
"font": "Hanken Grotesk",
|
|
1006
|
-
"size": 14,
|
|
1007
|
-
"color": "#F7F0DB",
|
|
1008
|
-
"background": "#0A0A0A",
|
|
1009
|
-
"backgroundOpacity": 80,
|
|
1010
|
-
"backgroundPadding": 5,
|
|
1011
|
-
"width": 0.82,
|
|
1012
|
-
"x": 50,
|
|
1013
|
-
"y": 17,
|
|
1014
|
-
"position": "center",
|
|
1015
|
-
"animation": "fade",
|
|
1016
|
-
"animIn": 0.2,
|
|
1017
|
-
"animOut": 0.15
|
|
1018
|
-
},
|
|
1019
|
-
{
|
|
1020
|
-
"id": "preview-label",
|
|
1021
|
-
"trackId": "variant-hook",
|
|
1022
|
-
"type": "text",
|
|
1023
|
-
"text": "Preview · actual footage",
|
|
1024
|
-
"start": 0,
|
|
1025
|
-
"end": 2,
|
|
1026
|
-
"font": "Hanken Grotesk",
|
|
1027
|
-
"size": 7,
|
|
1028
|
-
"color": "#F7F0DB",
|
|
1029
|
-
"background": "#0A0A0A",
|
|
1030
|
-
"backgroundOpacity": 85,
|
|
1031
|
-
"backgroundPadding": 5,
|
|
1032
|
-
"width": 0.82,
|
|
1033
|
-
"x": 50,
|
|
1034
|
-
"y": 8,
|
|
1035
|
-
"position": "center",
|
|
1036
|
-
"animation": "fade",
|
|
1037
|
-
"animIn": 0.12,
|
|
1038
|
-
"animOut": 0.1
|
|
1039
|
-
},
|
|
1040
|
-
{
|
|
1041
|
-
"id": "approved-hook-B",
|
|
1042
|
-
"trackId": "variant-hook",
|
|
1043
|
-
"type": "text",
|
|
1044
|
-
"text": "Look at the process",
|
|
1045
|
-
"start": 0,
|
|
1046
|
-
"end": 2,
|
|
1047
|
-
"font": "Hanken Grotesk",
|
|
1048
|
-
"size": 8.788958333333333,
|
|
1049
|
-
"color": "#F7F0DB",
|
|
1050
|
-
"background": "#0A0A0A",
|
|
1051
|
-
"backgroundOpacity": 85,
|
|
1052
|
-
"backgroundPadding": 5,
|
|
1053
|
-
"width": 0.82,
|
|
1054
|
-
"x": 50,
|
|
1055
|
-
"y": 18,
|
|
1056
|
-
"position": "center",
|
|
1057
|
-
"animation": "fade",
|
|
1058
|
-
"animIn": 0.12,
|
|
1059
|
-
"animOut": 0.1
|
|
1060
|
-
}
|
|
1061
|
-
],
|
|
1062
|
-
"stickers": [],
|
|
1063
|
-
"effects": [],
|
|
1064
|
-
"audio": [
|
|
1065
|
-
{
|
|
1066
|
-
"id": "selection-1-sound",
|
|
1067
|
-
"trackId": "speech",
|
|
1068
|
-
"asset": {
|
|
1069
|
-
"kind": "video",
|
|
1070
|
-
"assetId": "approved-video",
|
|
1071
|
-
"versionId": "v1",
|
|
1072
|
-
"url": "https://media.example/approved.mp4",
|
|
1073
|
-
"width": 1080,
|
|
1074
|
-
"height": 1920,
|
|
1075
|
-
"duration": 12
|
|
1076
|
-
},
|
|
1077
|
-
"assetId": "approved-video",
|
|
1078
|
-
"versionId": "v1",
|
|
1079
|
-
"url": "https://media.example/approved.mp4",
|
|
1080
|
-
"title": "Original speech",
|
|
1081
|
-
"start": 2,
|
|
1082
|
-
"duration": 12,
|
|
1083
|
-
"sourceOffset": 0,
|
|
1084
|
-
"trimStart": 0,
|
|
1085
|
-
"volume": 100,
|
|
1086
|
-
"rate": 1,
|
|
1087
|
-
"fadeIn": 0,
|
|
1088
|
-
"fadeOut": 0
|
|
1089
|
-
}
|
|
1090
|
-
],
|
|
1091
|
-
"overlays": [
|
|
1092
|
-
{
|
|
1093
|
-
"id": "cta",
|
|
1094
|
-
"trackId": "copy",
|
|
1095
|
-
"type": "text",
|
|
1096
|
-
"text": "See the details",
|
|
1097
|
-
"start": 11,
|
|
1098
|
-
"end": 14,
|
|
1099
|
-
"font": "Hanken Grotesk",
|
|
1100
|
-
"size": 14,
|
|
1101
|
-
"color": "#F7F0DB",
|
|
1102
|
-
"background": "#0A0A0A",
|
|
1103
|
-
"backgroundOpacity": 80,
|
|
1104
|
-
"backgroundPadding": 5,
|
|
1105
|
-
"width": 0.82,
|
|
1106
|
-
"x": 50,
|
|
1107
|
-
"y": 17,
|
|
1108
|
-
"position": "center",
|
|
1109
|
-
"animation": "fade",
|
|
1110
|
-
"animIn": 0.2,
|
|
1111
|
-
"animOut": 0.15
|
|
1112
|
-
},
|
|
1113
|
-
{
|
|
1114
|
-
"id": "preview-label",
|
|
1115
|
-
"trackId": "variant-hook",
|
|
1116
|
-
"type": "text",
|
|
1117
|
-
"text": "Preview · actual footage",
|
|
1118
|
-
"start": 0,
|
|
1119
|
-
"end": 2,
|
|
1120
|
-
"font": "Hanken Grotesk",
|
|
1121
|
-
"size": 7,
|
|
1122
|
-
"color": "#F7F0DB",
|
|
1123
|
-
"background": "#0A0A0A",
|
|
1124
|
-
"backgroundOpacity": 85,
|
|
1125
|
-
"backgroundPadding": 5,
|
|
1126
|
-
"width": 0.82,
|
|
1127
|
-
"x": 50,
|
|
1128
|
-
"y": 8,
|
|
1129
|
-
"position": "center",
|
|
1130
|
-
"animation": "fade",
|
|
1131
|
-
"animIn": 0.12,
|
|
1132
|
-
"animOut": 0.1
|
|
1133
|
-
},
|
|
1134
|
-
{
|
|
1135
|
-
"id": "approved-hook-B",
|
|
1136
|
-
"trackId": "variant-hook",
|
|
1137
|
-
"type": "text",
|
|
1138
|
-
"text": "Look at the process",
|
|
1139
|
-
"start": 0,
|
|
1140
|
-
"end": 2,
|
|
1141
|
-
"font": "Hanken Grotesk",
|
|
1142
|
-
"size": 8.788958333333333,
|
|
1143
|
-
"color": "#F7F0DB",
|
|
1144
|
-
"background": "#0A0A0A",
|
|
1145
|
-
"backgroundOpacity": 85,
|
|
1146
|
-
"backgroundPadding": 5,
|
|
1147
|
-
"width": 0.82,
|
|
1148
|
-
"x": 50,
|
|
1149
|
-
"y": 18,
|
|
1150
|
-
"position": "center",
|
|
1151
|
-
"animation": "fade",
|
|
1152
|
-
"animIn": 0.12,
|
|
1153
|
-
"animOut": 0.1
|
|
1154
|
-
}
|
|
1155
|
-
],
|
|
1156
|
-
"targetDuration": 14,
|
|
1157
|
-
"exportSettings": {
|
|
1158
|
-
"aspect": "9:16",
|
|
1159
|
-
"fps": 30,
|
|
1160
|
-
"resolution": "1080p",
|
|
1161
|
-
"quality": "high"
|
|
1162
|
-
},
|
|
1163
|
-
"productAdVariant": {
|
|
1164
|
-
"schemaVersion": 1,
|
|
1165
|
-
"block": {
|
|
1166
|
-
"id": "stillmade.product-ad-variants",
|
|
1167
|
-
"version": "1.0.0"
|
|
1168
|
-
},
|
|
1169
|
-
"variant": "B",
|
|
1170
|
-
"opening": {
|
|
1171
|
-
"from": 2,
|
|
1172
|
-
"to": 4,
|
|
1173
|
-
"silent": true
|
|
1174
|
-
},
|
|
1175
|
-
"bodyOffset": 2,
|
|
1176
|
-
"source": {
|
|
1177
|
-
"assetId": "approved-video",
|
|
1178
|
-
"versionId": "v1"
|
|
1179
|
-
},
|
|
1180
|
-
"hook": "Look at the process"
|
|
1181
|
-
}
|
|
1182
|
-
},
|
|
1183
|
-
"variantC": {
|
|
1184
|
-
"schemaVersion": 1,
|
|
1185
|
-
"activeTimelineId": "short-form",
|
|
1186
|
-
"name": "Variant C · See the finished pour",
|
|
1187
|
-
"aspect": "9:16",
|
|
1188
|
-
"aspectRatio": "9:16",
|
|
1189
|
-
"previewH": 369,
|
|
1190
|
-
"backgroundColor": "#0A0A0A",
|
|
1191
|
-
"tracks": [
|
|
1192
|
-
{
|
|
1193
|
-
"id": "video",
|
|
1194
|
-
"type": "video",
|
|
1195
|
-
"label": "Source selections"
|
|
1196
|
-
},
|
|
1197
|
-
{
|
|
1198
|
-
"id": "speech",
|
|
1199
|
-
"type": "audio",
|
|
1200
|
-
"label": "Original speech"
|
|
1201
|
-
},
|
|
1202
|
-
{
|
|
1203
|
-
"id": "music",
|
|
1204
|
-
"type": "audio",
|
|
1205
|
-
"label": "Music"
|
|
1206
|
-
},
|
|
1207
|
-
{
|
|
1208
|
-
"id": "captions",
|
|
1209
|
-
"type": "caption",
|
|
1210
|
-
"label": "Reviewed subtitles"
|
|
1211
|
-
},
|
|
1212
|
-
{
|
|
1213
|
-
"id": "copy",
|
|
1214
|
-
"type": "text",
|
|
1215
|
-
"label": "Approved copy"
|
|
1216
|
-
},
|
|
1217
|
-
{
|
|
1218
|
-
"id": "variant-hook",
|
|
1219
|
-
"type": "text",
|
|
1220
|
-
"label": "Approved opening hook"
|
|
1221
|
-
}
|
|
1222
|
-
],
|
|
1223
|
-
"trackOrder": [
|
|
1224
|
-
"video",
|
|
1225
|
-
"speech",
|
|
1226
|
-
"music",
|
|
1227
|
-
"captions",
|
|
1228
|
-
"copy",
|
|
1229
|
-
"variant-hook"
|
|
1230
|
-
],
|
|
1231
|
-
"clips": [
|
|
1232
|
-
{
|
|
1233
|
-
"id": "opening-preview-C",
|
|
1234
|
-
"kind": "video",
|
|
1235
|
-
"trackId": "video",
|
|
1236
|
-
"asset": {
|
|
1237
|
-
"kind": "video",
|
|
1238
|
-
"assetId": "approved-video",
|
|
1239
|
-
"versionId": "v1",
|
|
1240
|
-
"url": "https://media.example/approved.mp4",
|
|
1241
|
-
"width": 1080,
|
|
1242
|
-
"height": 1920,
|
|
1243
|
-
"duration": 12
|
|
1244
|
-
},
|
|
1245
|
-
"assetId": "approved-video",
|
|
1246
|
-
"versionId": "v1",
|
|
1247
|
-
"url": "https://media.example/approved.mp4",
|
|
1248
|
-
"title": "Source preview C",
|
|
1249
|
-
"start": 0,
|
|
1250
|
-
"duration": 2,
|
|
1251
|
-
"trimStart": 4,
|
|
1252
|
-
"speed": 1,
|
|
1253
|
-
"volume": 0,
|
|
1254
|
-
"transform": {
|
|
1255
|
-
"fit": "contain",
|
|
1256
|
-
"scale": 1,
|
|
1257
|
-
"x": 0,
|
|
1258
|
-
"y": 0,
|
|
1259
|
-
"rotation": 0,
|
|
1260
|
-
"opacity": 1
|
|
1261
|
-
},
|
|
1262
|
-
"motion": {
|
|
1263
|
-
"type": "none"
|
|
1264
|
-
},
|
|
1265
|
-
"transition": {
|
|
1266
|
-
"type": "Cut",
|
|
1267
|
-
"duration": 0
|
|
1268
|
-
}
|
|
1269
|
-
},
|
|
1270
|
-
{
|
|
1271
|
-
"id": "selection-1",
|
|
1272
|
-
"kind": "video",
|
|
1273
|
-
"trackId": "video",
|
|
1274
|
-
"asset": {
|
|
1275
|
-
"kind": "video",
|
|
1276
|
-
"assetId": "approved-video",
|
|
1277
|
-
"versionId": "v1",
|
|
1278
|
-
"url": "https://media.example/approved.mp4",
|
|
1279
|
-
"width": 1080,
|
|
1280
|
-
"height": 1920,
|
|
1281
|
-
"duration": 12
|
|
1282
|
-
},
|
|
1283
|
-
"assetId": "approved-video",
|
|
1284
|
-
"versionId": "v1",
|
|
1285
|
-
"url": "https://media.example/approved.mp4",
|
|
1286
|
-
"title": "Original video",
|
|
1287
|
-
"start": 2,
|
|
1288
|
-
"duration": 12,
|
|
1289
|
-
"trimStart": 0,
|
|
1290
|
-
"speed": 1,
|
|
1291
|
-
"volume": 0,
|
|
1292
|
-
"transform": {
|
|
1293
|
-
"fit": "contain",
|
|
1294
|
-
"scale": 1,
|
|
1295
|
-
"x": 0,
|
|
1296
|
-
"y": 0,
|
|
1297
|
-
"rotation": 0,
|
|
1298
|
-
"opacity": 1
|
|
1299
|
-
},
|
|
1300
|
-
"motion": {
|
|
1301
|
-
"type": "none"
|
|
1302
|
-
},
|
|
1303
|
-
"transition": {
|
|
1304
|
-
"type": "Cut",
|
|
1305
|
-
"duration": 0
|
|
1306
|
-
}
|
|
1307
|
-
}
|
|
1308
|
-
],
|
|
1309
|
-
"audioItems": [
|
|
1310
|
-
{
|
|
1311
|
-
"id": "selection-1-sound",
|
|
1312
|
-
"trackId": "speech",
|
|
1313
|
-
"asset": {
|
|
1314
|
-
"kind": "video",
|
|
1315
|
-
"assetId": "approved-video",
|
|
1316
|
-
"versionId": "v1",
|
|
1317
|
-
"url": "https://media.example/approved.mp4",
|
|
1318
|
-
"width": 1080,
|
|
1319
|
-
"height": 1920,
|
|
1320
|
-
"duration": 12
|
|
1321
|
-
},
|
|
1322
|
-
"assetId": "approved-video",
|
|
1323
|
-
"versionId": "v1",
|
|
1324
|
-
"url": "https://media.example/approved.mp4",
|
|
1325
|
-
"title": "Original speech",
|
|
1326
|
-
"start": 2,
|
|
1327
|
-
"duration": 12,
|
|
1328
|
-
"sourceOffset": 0,
|
|
1329
|
-
"trimStart": 0,
|
|
1330
|
-
"volume": 100,
|
|
1331
|
-
"rate": 1,
|
|
1332
|
-
"fadeIn": 0,
|
|
1333
|
-
"fadeOut": 0
|
|
1334
|
-
}
|
|
1335
|
-
],
|
|
1336
|
-
"captions": [],
|
|
1337
|
-
"textOverlays": [
|
|
1338
|
-
{
|
|
1339
|
-
"id": "cta",
|
|
1340
|
-
"trackId": "copy",
|
|
1341
|
-
"type": "text",
|
|
1342
|
-
"text": "See the details",
|
|
1343
|
-
"start": 11,
|
|
1344
|
-
"end": 14,
|
|
1345
|
-
"font": "Hanken Grotesk",
|
|
1346
|
-
"size": 14,
|
|
1347
|
-
"color": "#F7F0DB",
|
|
1348
|
-
"background": "#0A0A0A",
|
|
1349
|
-
"backgroundOpacity": 80,
|
|
1350
|
-
"backgroundPadding": 5,
|
|
1351
|
-
"width": 0.82,
|
|
1352
|
-
"x": 50,
|
|
1353
|
-
"y": 17,
|
|
1354
|
-
"position": "center",
|
|
1355
|
-
"animation": "fade",
|
|
1356
|
-
"animIn": 0.2,
|
|
1357
|
-
"animOut": 0.15
|
|
1358
|
-
},
|
|
1359
|
-
{
|
|
1360
|
-
"id": "preview-label",
|
|
1361
|
-
"trackId": "variant-hook",
|
|
1362
|
-
"type": "text",
|
|
1363
|
-
"text": "Preview · actual footage",
|
|
1364
|
-
"start": 0,
|
|
1365
|
-
"end": 2,
|
|
1366
|
-
"font": "Hanken Grotesk",
|
|
1367
|
-
"size": 7,
|
|
1368
|
-
"color": "#F7F0DB",
|
|
1369
|
-
"background": "#0A0A0A",
|
|
1370
|
-
"backgroundOpacity": 85,
|
|
1371
|
-
"backgroundPadding": 5,
|
|
1372
|
-
"width": 0.82,
|
|
1373
|
-
"x": 50,
|
|
1374
|
-
"y": 8,
|
|
1375
|
-
"position": "center",
|
|
1376
|
-
"animation": "fade",
|
|
1377
|
-
"animIn": 0.12,
|
|
1378
|
-
"animOut": 0.1
|
|
1379
|
-
},
|
|
1380
|
-
{
|
|
1381
|
-
"id": "approved-hook-C",
|
|
1382
|
-
"trackId": "variant-hook",
|
|
1383
|
-
"type": "text",
|
|
1384
|
-
"text": "See the finished pour",
|
|
1385
|
-
"start": 0,
|
|
1386
|
-
"end": 2,
|
|
1387
|
-
"font": "Hanken Grotesk",
|
|
1388
|
-
"size": 8.788958333333333,
|
|
1389
|
-
"color": "#F7F0DB",
|
|
1390
|
-
"background": "#0A0A0A",
|
|
1391
|
-
"backgroundOpacity": 85,
|
|
1392
|
-
"backgroundPadding": 5,
|
|
1393
|
-
"width": 0.82,
|
|
1394
|
-
"x": 50,
|
|
1395
|
-
"y": 18,
|
|
1396
|
-
"position": "center",
|
|
1397
|
-
"animation": "fade",
|
|
1398
|
-
"animIn": 0.12,
|
|
1399
|
-
"animOut": 0.1
|
|
1400
|
-
}
|
|
1401
|
-
],
|
|
1402
|
-
"stickers": [],
|
|
1403
|
-
"effects": [],
|
|
1404
|
-
"audio": [
|
|
1405
|
-
{
|
|
1406
|
-
"id": "selection-1-sound",
|
|
1407
|
-
"trackId": "speech",
|
|
1408
|
-
"asset": {
|
|
1409
|
-
"kind": "video",
|
|
1410
|
-
"assetId": "approved-video",
|
|
1411
|
-
"versionId": "v1",
|
|
1412
|
-
"url": "https://media.example/approved.mp4",
|
|
1413
|
-
"width": 1080,
|
|
1414
|
-
"height": 1920,
|
|
1415
|
-
"duration": 12
|
|
1416
|
-
},
|
|
1417
|
-
"assetId": "approved-video",
|
|
1418
|
-
"versionId": "v1",
|
|
1419
|
-
"url": "https://media.example/approved.mp4",
|
|
1420
|
-
"title": "Original speech",
|
|
1421
|
-
"start": 2,
|
|
1422
|
-
"duration": 12,
|
|
1423
|
-
"sourceOffset": 0,
|
|
1424
|
-
"trimStart": 0,
|
|
1425
|
-
"volume": 100,
|
|
1426
|
-
"rate": 1,
|
|
1427
|
-
"fadeIn": 0,
|
|
1428
|
-
"fadeOut": 0
|
|
1429
|
-
}
|
|
1430
|
-
],
|
|
1431
|
-
"overlays": [
|
|
1432
|
-
{
|
|
1433
|
-
"id": "cta",
|
|
1434
|
-
"trackId": "copy",
|
|
1435
|
-
"type": "text",
|
|
1436
|
-
"text": "See the details",
|
|
1437
|
-
"start": 11,
|
|
1438
|
-
"end": 14,
|
|
1439
|
-
"font": "Hanken Grotesk",
|
|
1440
|
-
"size": 14,
|
|
1441
|
-
"color": "#F7F0DB",
|
|
1442
|
-
"background": "#0A0A0A",
|
|
1443
|
-
"backgroundOpacity": 80,
|
|
1444
|
-
"backgroundPadding": 5,
|
|
1445
|
-
"width": 0.82,
|
|
1446
|
-
"x": 50,
|
|
1447
|
-
"y": 17,
|
|
1448
|
-
"position": "center",
|
|
1449
|
-
"animation": "fade",
|
|
1450
|
-
"animIn": 0.2,
|
|
1451
|
-
"animOut": 0.15
|
|
1452
|
-
},
|
|
1453
|
-
{
|
|
1454
|
-
"id": "preview-label",
|
|
1455
|
-
"trackId": "variant-hook",
|
|
1456
|
-
"type": "text",
|
|
1457
|
-
"text": "Preview · actual footage",
|
|
1458
|
-
"start": 0,
|
|
1459
|
-
"end": 2,
|
|
1460
|
-
"font": "Hanken Grotesk",
|
|
1461
|
-
"size": 7,
|
|
1462
|
-
"color": "#F7F0DB",
|
|
1463
|
-
"background": "#0A0A0A",
|
|
1464
|
-
"backgroundOpacity": 85,
|
|
1465
|
-
"backgroundPadding": 5,
|
|
1466
|
-
"width": 0.82,
|
|
1467
|
-
"x": 50,
|
|
1468
|
-
"y": 8,
|
|
1469
|
-
"position": "center",
|
|
1470
|
-
"animation": "fade",
|
|
1471
|
-
"animIn": 0.12,
|
|
1472
|
-
"animOut": 0.1
|
|
1473
|
-
},
|
|
1474
|
-
{
|
|
1475
|
-
"id": "approved-hook-C",
|
|
1476
|
-
"trackId": "variant-hook",
|
|
1477
|
-
"type": "text",
|
|
1478
|
-
"text": "See the finished pour",
|
|
1479
|
-
"start": 0,
|
|
1480
|
-
"end": 2,
|
|
1481
|
-
"font": "Hanken Grotesk",
|
|
1482
|
-
"size": 8.788958333333333,
|
|
1483
|
-
"color": "#F7F0DB",
|
|
1484
|
-
"background": "#0A0A0A",
|
|
1485
|
-
"backgroundOpacity": 85,
|
|
1486
|
-
"backgroundPadding": 5,
|
|
1487
|
-
"width": 0.82,
|
|
1488
|
-
"x": 50,
|
|
1489
|
-
"y": 18,
|
|
1490
|
-
"position": "center",
|
|
1491
|
-
"animation": "fade",
|
|
1492
|
-
"animIn": 0.12,
|
|
1493
|
-
"animOut": 0.1
|
|
1494
|
-
}
|
|
1495
|
-
],
|
|
1496
|
-
"targetDuration": 14,
|
|
1497
|
-
"exportSettings": {
|
|
1498
|
-
"aspect": "9:16",
|
|
1499
|
-
"fps": 30,
|
|
1500
|
-
"resolution": "1080p",
|
|
1501
|
-
"quality": "high"
|
|
1502
|
-
},
|
|
1503
|
-
"productAdVariant": {
|
|
1504
|
-
"schemaVersion": 1,
|
|
1505
|
-
"block": {
|
|
1506
|
-
"id": "stillmade.product-ad-variants",
|
|
1507
|
-
"version": "1.0.0"
|
|
1508
|
-
},
|
|
1509
|
-
"variant": "C",
|
|
1510
|
-
"opening": {
|
|
1511
|
-
"from": 4,
|
|
1512
|
-
"to": 6,
|
|
1513
|
-
"silent": true
|
|
1514
|
-
},
|
|
1515
|
-
"bodyOffset": 2,
|
|
1516
|
-
"source": {
|
|
1517
|
-
"assetId": "approved-video",
|
|
1518
|
-
"versionId": "v1"
|
|
1519
|
-
},
|
|
1520
|
-
"hook": "See the finished pour"
|
|
1521
|
-
}
|
|
1522
|
-
},
|
|
1523
|
-
"review": {
|
|
1524
|
-
"schemaVersion": 1,
|
|
1525
|
-
"state": "needs-human-review",
|
|
1526
|
-
"humanApproved": false,
|
|
1527
|
-
"providerCalls": 0,
|
|
1528
|
-
"source": {
|
|
1529
|
-
"assetId": "approved-video",
|
|
1530
|
-
"versionId": "v1"
|
|
1531
|
-
},
|
|
1532
|
-
"bodyDuration": 12,
|
|
1533
|
-
"outputDuration": 14,
|
|
1534
|
-
"variants": [
|
|
1535
|
-
{
|
|
1536
|
-
"id": "A",
|
|
1537
|
-
"hook": "Watch the preparation",
|
|
1538
|
-
"openingFrom": 0,
|
|
1539
|
-
"openingTo": 2
|
|
1540
|
-
},
|
|
1541
|
-
{
|
|
1542
|
-
"id": "B",
|
|
1543
|
-
"hook": "Look at the process",
|
|
1544
|
-
"openingFrom": 2,
|
|
1545
|
-
"openingTo": 4
|
|
1546
|
-
},
|
|
1547
|
-
{
|
|
1548
|
-
"id": "C",
|
|
1549
|
-
"hook": "See the finished pour",
|
|
1550
|
-
"openingFrom": 4,
|
|
1551
|
-
"openingTo": 6
|
|
1552
|
-
}
|
|
1553
|
-
],
|
|
1554
|
-
"warnings": [
|
|
1555
|
-
"The three previews use different supplied source moments, followed by the same complete demonstration. They are not generated product scenes.",
|
|
1556
|
-
"Preview sound is muted to avoid presenting partial speech as a quote. Original body speech and captions retain their timing and exact words.",
|
|
1557
|
-
"Watch and listen to all three exports at phone size. Verify each hook against the actual footage and approved offer.",
|
|
1558
|
-
"No conversion performance, customer endorsement or independent rights verification is claimed."
|
|
1559
|
-
]
|
|
1560
|
-
}
|
|
1561
|
-
}
|
|
1562
|
-
},
|
|
1563
|
-
{
|
|
1564
|
-
"name": "Keep trimmed original speech and captions together after short previews",
|
|
1565
|
-
"input": {
|
|
1566
|
-
"timeline": {
|
|
1567
|
-
"schemaVersion": 1,
|
|
1568
|
-
"activeTimelineId": "short-form",
|
|
1569
|
-
"name": "An approved hook",
|
|
1570
|
-
"aspect": "9:16",
|
|
1571
|
-
"aspectRatio": "9:16",
|
|
1572
|
-
"previewH": 369,
|
|
1573
|
-
"backgroundColor": "#0A0A0A",
|
|
1574
|
-
"tracks": [
|
|
1575
|
-
{
|
|
1576
|
-
"id": "video",
|
|
1577
|
-
"type": "video",
|
|
1578
|
-
"label": "Source selections"
|
|
1579
|
-
},
|
|
1580
|
-
{
|
|
1581
|
-
"id": "speech",
|
|
1582
|
-
"type": "audio",
|
|
1583
|
-
"label": "Original speech"
|
|
1584
|
-
},
|
|
1585
|
-
{
|
|
1586
|
-
"id": "music",
|
|
1587
|
-
"type": "audio",
|
|
1588
|
-
"label": "Music"
|
|
1589
|
-
},
|
|
1590
|
-
{
|
|
1591
|
-
"id": "captions",
|
|
1592
|
-
"type": "caption",
|
|
1593
|
-
"label": "Reviewed subtitles"
|
|
1594
|
-
},
|
|
1595
|
-
{
|
|
1596
|
-
"id": "copy",
|
|
1597
|
-
"type": "text",
|
|
1598
|
-
"label": "Approved copy"
|
|
1599
|
-
}
|
|
1600
|
-
],
|
|
1601
|
-
"trackOrder": [
|
|
1602
|
-
"video",
|
|
1603
|
-
"speech",
|
|
1604
|
-
"music",
|
|
1605
|
-
"captions",
|
|
1606
|
-
"copy"
|
|
1607
|
-
],
|
|
1608
|
-
"clips": [
|
|
1609
|
-
{
|
|
1610
|
-
"id": "selection-1",
|
|
1611
|
-
"kind": "video",
|
|
1612
|
-
"trackId": "video",
|
|
1613
|
-
"asset": {
|
|
1614
|
-
"kind": "video",
|
|
1615
|
-
"assetId": "approved-video",
|
|
1616
|
-
"versionId": "v1",
|
|
1617
|
-
"url": "https://media.example/approved.mp4",
|
|
1618
|
-
"width": 1080,
|
|
1619
|
-
"height": 1920,
|
|
1620
|
-
"duration": 12
|
|
1621
|
-
},
|
|
1622
|
-
"assetId": "approved-video",
|
|
1623
|
-
"versionId": "v1",
|
|
1624
|
-
"url": "https://media.example/approved.mp4",
|
|
1625
|
-
"title": "Original video",
|
|
1626
|
-
"start": 0,
|
|
1627
|
-
"duration": 8,
|
|
1628
|
-
"trimStart": 4,
|
|
1629
|
-
"speed": 1,
|
|
1630
|
-
"volume": 0,
|
|
1631
|
-
"transform": {
|
|
1632
|
-
"fit": "contain",
|
|
1633
|
-
"scale": 1,
|
|
1634
|
-
"x": 0,
|
|
1635
|
-
"y": 0,
|
|
1636
|
-
"rotation": 0,
|
|
1637
|
-
"opacity": 1
|
|
1638
|
-
},
|
|
1639
|
-
"motion": {
|
|
1640
|
-
"type": "none"
|
|
1641
|
-
},
|
|
1642
|
-
"transition": {
|
|
1643
|
-
"type": "Cut",
|
|
1644
|
-
"duration": 0
|
|
1645
|
-
}
|
|
1646
|
-
}
|
|
1647
|
-
],
|
|
1648
|
-
"audioItems": [
|
|
1649
|
-
{
|
|
1650
|
-
"id": "selection-1-sound",
|
|
1651
|
-
"trackId": "speech",
|
|
1652
|
-
"asset": {
|
|
1653
|
-
"kind": "video",
|
|
1654
|
-
"assetId": "approved-video",
|
|
1655
|
-
"versionId": "v1",
|
|
1656
|
-
"url": "https://media.example/approved.mp4",
|
|
1657
|
-
"width": 1080,
|
|
1658
|
-
"height": 1920,
|
|
1659
|
-
"duration": 12
|
|
1660
|
-
},
|
|
1661
|
-
"assetId": "approved-video",
|
|
1662
|
-
"versionId": "v1",
|
|
1663
|
-
"url": "https://media.example/approved.mp4",
|
|
1664
|
-
"title": "Original speech",
|
|
1665
|
-
"start": 0,
|
|
1666
|
-
"duration": 8,
|
|
1667
|
-
"sourceOffset": 4,
|
|
1668
|
-
"trimStart": 4,
|
|
1669
|
-
"volume": 100,
|
|
1670
|
-
"rate": 1,
|
|
1671
|
-
"fadeIn": 0,
|
|
1672
|
-
"fadeOut": 0
|
|
1673
|
-
}
|
|
1674
|
-
],
|
|
1675
|
-
"captions": [
|
|
1676
|
-
{
|
|
1677
|
-
"id": "caption-0",
|
|
1678
|
-
"trackId": "captions",
|
|
1679
|
-
"type": "text",
|
|
1680
|
-
"text": "Keep the complete thought in the clip.",
|
|
1681
|
-
"start": 0,
|
|
1682
|
-
"end": 8,
|
|
1683
|
-
"font": "Hanken Grotesk",
|
|
1684
|
-
"size": 15,
|
|
1685
|
-
"color": "#FFFFFF",
|
|
1686
|
-
"background": "#0A0A0A",
|
|
1687
|
-
"backgroundOpacity": 75,
|
|
1688
|
-
"backgroundPadding": 5,
|
|
1689
|
-
"backgroundRadius": 3,
|
|
1690
|
-
"width": 0.82,
|
|
1691
|
-
"x": 50,
|
|
1692
|
-
"y": 76,
|
|
1693
|
-
"position": "center",
|
|
1694
|
-
"animation": "none",
|
|
1695
|
-
"animIn": 0.12,
|
|
1696
|
-
"animOut": 0
|
|
1697
|
-
}
|
|
1698
|
-
],
|
|
1699
|
-
"textOverlays": [
|
|
1700
|
-
{
|
|
1701
|
-
"id": "opening",
|
|
1702
|
-
"trackId": "copy",
|
|
1703
|
-
"type": "text",
|
|
1704
|
-
"text": "An approved hook",
|
|
1705
|
-
"start": 0,
|
|
1706
|
-
"end": 3,
|
|
1707
|
-
"font": "Hanken Grotesk",
|
|
1708
|
-
"size": 16,
|
|
1709
|
-
"color": "#F7F0DB",
|
|
1710
|
-
"background": "#0A0A0A",
|
|
1711
|
-
"backgroundOpacity": 80,
|
|
1712
|
-
"backgroundPadding": 5,
|
|
1713
|
-
"width": 0.82,
|
|
1714
|
-
"x": 50,
|
|
1715
|
-
"y": 16,
|
|
1716
|
-
"position": "center",
|
|
1717
|
-
"animation": "fade",
|
|
1718
|
-
"animIn": 0.2,
|
|
1719
|
-
"animOut": 0.15
|
|
1720
|
-
}
|
|
1721
|
-
],
|
|
1722
|
-
"stickers": [],
|
|
1723
|
-
"effects": [],
|
|
1724
|
-
"audio": [
|
|
1725
|
-
{
|
|
1726
|
-
"id": "selection-1-sound",
|
|
1727
|
-
"trackId": "speech",
|
|
1728
|
-
"asset": {
|
|
1729
|
-
"kind": "video",
|
|
1730
|
-
"assetId": "approved-video",
|
|
1731
|
-
"versionId": "v1",
|
|
1732
|
-
"url": "https://media.example/approved.mp4",
|
|
1733
|
-
"width": 1080,
|
|
1734
|
-
"height": 1920,
|
|
1735
|
-
"duration": 12
|
|
1736
|
-
},
|
|
1737
|
-
"assetId": "approved-video",
|
|
1738
|
-
"versionId": "v1",
|
|
1739
|
-
"url": "https://media.example/approved.mp4",
|
|
1740
|
-
"title": "Original speech",
|
|
1741
|
-
"start": 0,
|
|
1742
|
-
"duration": 8,
|
|
1743
|
-
"sourceOffset": 4,
|
|
1744
|
-
"trimStart": 4,
|
|
1745
|
-
"volume": 100,
|
|
1746
|
-
"rate": 1,
|
|
1747
|
-
"fadeIn": 0,
|
|
1748
|
-
"fadeOut": 0
|
|
1749
|
-
}
|
|
1750
|
-
],
|
|
1751
|
-
"overlays": [
|
|
1752
|
-
{
|
|
1753
|
-
"id": "caption-0",
|
|
1754
|
-
"trackId": "captions",
|
|
1755
|
-
"type": "text",
|
|
1756
|
-
"text": "Keep the complete thought in the clip.",
|
|
1757
|
-
"start": 0,
|
|
1758
|
-
"end": 8,
|
|
1759
|
-
"font": "Hanken Grotesk",
|
|
1760
|
-
"size": 15,
|
|
1761
|
-
"color": "#FFFFFF",
|
|
1762
|
-
"background": "#0A0A0A",
|
|
1763
|
-
"backgroundOpacity": 75,
|
|
1764
|
-
"backgroundPadding": 5,
|
|
1765
|
-
"backgroundRadius": 3,
|
|
1766
|
-
"width": 0.82,
|
|
1767
|
-
"x": 50,
|
|
1768
|
-
"y": 76,
|
|
1769
|
-
"position": "center",
|
|
1770
|
-
"animation": "none",
|
|
1771
|
-
"animIn": 0.12,
|
|
1772
|
-
"animOut": 0
|
|
1773
|
-
},
|
|
1774
|
-
{
|
|
1775
|
-
"id": "opening",
|
|
1776
|
-
"trackId": "copy",
|
|
1777
|
-
"type": "text",
|
|
1778
|
-
"text": "An approved hook",
|
|
1779
|
-
"start": 0,
|
|
1780
|
-
"end": 3,
|
|
1781
|
-
"font": "Hanken Grotesk",
|
|
1782
|
-
"size": 16,
|
|
1783
|
-
"color": "#F7F0DB",
|
|
1784
|
-
"background": "#0A0A0A",
|
|
1785
|
-
"backgroundOpacity": 80,
|
|
1786
|
-
"backgroundPadding": 5,
|
|
1787
|
-
"width": 0.82,
|
|
1788
|
-
"x": 50,
|
|
1789
|
-
"y": 16,
|
|
1790
|
-
"position": "center",
|
|
1791
|
-
"animation": "fade",
|
|
1792
|
-
"animIn": 0.2,
|
|
1793
|
-
"animOut": 0.15
|
|
1794
|
-
}
|
|
1795
|
-
],
|
|
1796
|
-
"targetDuration": 8,
|
|
1797
|
-
"exportSettings": {
|
|
1798
|
-
"aspect": "9:16",
|
|
1799
|
-
"fps": 30,
|
|
1800
|
-
"resolution": "1080p",
|
|
1801
|
-
"quality": "high"
|
|
1802
|
-
}
|
|
1803
|
-
},
|
|
1804
|
-
"hookA": "Watch the preparation",
|
|
1805
|
-
"hookB": "Look at the process",
|
|
1806
|
-
"hookC": "See the finished pour",
|
|
1807
|
-
"openingA": 0,
|
|
1808
|
-
"openingB": 2,
|
|
1809
|
-
"openingC": 4,
|
|
1810
|
-
"openingDuration": 1,
|
|
1811
|
-
"copyApproved": true
|
|
1812
|
-
},
|
|
1813
|
-
"expected": {
|
|
1814
|
-
"variantA": {
|
|
1815
|
-
"schemaVersion": 1,
|
|
1816
|
-
"activeTimelineId": "short-form",
|
|
1817
|
-
"name": "Variant A · Watch the preparation",
|
|
1818
|
-
"aspect": "9:16",
|
|
1819
|
-
"aspectRatio": "9:16",
|
|
1820
|
-
"previewH": 369,
|
|
1821
|
-
"backgroundColor": "#0A0A0A",
|
|
1822
|
-
"tracks": [
|
|
1823
|
-
{
|
|
1824
|
-
"id": "video",
|
|
1825
|
-
"type": "video",
|
|
1826
|
-
"label": "Source selections"
|
|
1827
|
-
},
|
|
1828
|
-
{
|
|
1829
|
-
"id": "speech",
|
|
1830
|
-
"type": "audio",
|
|
1831
|
-
"label": "Original speech"
|
|
1832
|
-
},
|
|
1833
|
-
{
|
|
1834
|
-
"id": "music",
|
|
1835
|
-
"type": "audio",
|
|
1836
|
-
"label": "Music"
|
|
1837
|
-
},
|
|
1838
|
-
{
|
|
1839
|
-
"id": "captions",
|
|
1840
|
-
"type": "caption",
|
|
1841
|
-
"label": "Reviewed subtitles"
|
|
1842
|
-
},
|
|
1843
|
-
{
|
|
1844
|
-
"id": "copy",
|
|
1845
|
-
"type": "text",
|
|
1846
|
-
"label": "Approved copy"
|
|
1847
|
-
},
|
|
1848
|
-
{
|
|
1849
|
-
"id": "variant-hook",
|
|
1850
|
-
"type": "text",
|
|
1851
|
-
"label": "Approved opening hook"
|
|
1852
|
-
}
|
|
1853
|
-
],
|
|
1854
|
-
"trackOrder": [
|
|
1855
|
-
"video",
|
|
1856
|
-
"speech",
|
|
1857
|
-
"music",
|
|
1858
|
-
"captions",
|
|
1859
|
-
"copy",
|
|
1860
|
-
"variant-hook"
|
|
1861
|
-
],
|
|
1862
|
-
"clips": [
|
|
1863
|
-
{
|
|
1864
|
-
"id": "opening-preview-A",
|
|
1865
|
-
"kind": "video",
|
|
1866
|
-
"trackId": "video",
|
|
1867
|
-
"asset": {
|
|
1868
|
-
"kind": "video",
|
|
1869
|
-
"assetId": "approved-video",
|
|
1870
|
-
"versionId": "v1",
|
|
1871
|
-
"url": "https://media.example/approved.mp4",
|
|
1872
|
-
"width": 1080,
|
|
1873
|
-
"height": 1920,
|
|
1874
|
-
"duration": 12
|
|
1875
|
-
},
|
|
1876
|
-
"assetId": "approved-video",
|
|
1877
|
-
"versionId": "v1",
|
|
1878
|
-
"url": "https://media.example/approved.mp4",
|
|
1879
|
-
"title": "Source preview A",
|
|
1880
|
-
"start": 0,
|
|
1881
|
-
"duration": 1,
|
|
1882
|
-
"trimStart": 0,
|
|
1883
|
-
"speed": 1,
|
|
1884
|
-
"volume": 0,
|
|
1885
|
-
"transform": {
|
|
1886
|
-
"fit": "contain",
|
|
1887
|
-
"scale": 1,
|
|
1888
|
-
"x": 0,
|
|
1889
|
-
"y": 0,
|
|
1890
|
-
"rotation": 0,
|
|
1891
|
-
"opacity": 1
|
|
1892
|
-
},
|
|
1893
|
-
"motion": {
|
|
1894
|
-
"type": "none"
|
|
1895
|
-
},
|
|
1896
|
-
"transition": {
|
|
1897
|
-
"type": "Cut",
|
|
1898
|
-
"duration": 0
|
|
1899
|
-
}
|
|
1900
|
-
},
|
|
1901
|
-
{
|
|
1902
|
-
"id": "selection-1",
|
|
1903
|
-
"kind": "video",
|
|
1904
|
-
"trackId": "video",
|
|
1905
|
-
"asset": {
|
|
1906
|
-
"kind": "video",
|
|
1907
|
-
"assetId": "approved-video",
|
|
1908
|
-
"versionId": "v1",
|
|
1909
|
-
"url": "https://media.example/approved.mp4",
|
|
1910
|
-
"width": 1080,
|
|
1911
|
-
"height": 1920,
|
|
1912
|
-
"duration": 12
|
|
1913
|
-
},
|
|
1914
|
-
"assetId": "approved-video",
|
|
1915
|
-
"versionId": "v1",
|
|
1916
|
-
"url": "https://media.example/approved.mp4",
|
|
1917
|
-
"title": "Original video",
|
|
1918
|
-
"start": 1,
|
|
1919
|
-
"duration": 8,
|
|
1920
|
-
"trimStart": 4,
|
|
1921
|
-
"speed": 1,
|
|
1922
|
-
"volume": 0,
|
|
1923
|
-
"transform": {
|
|
1924
|
-
"fit": "contain",
|
|
1925
|
-
"scale": 1,
|
|
1926
|
-
"x": 0,
|
|
1927
|
-
"y": 0,
|
|
1928
|
-
"rotation": 0,
|
|
1929
|
-
"opacity": 1
|
|
1930
|
-
},
|
|
1931
|
-
"motion": {
|
|
1932
|
-
"type": "none"
|
|
1933
|
-
},
|
|
1934
|
-
"transition": {
|
|
1935
|
-
"type": "Cut",
|
|
1936
|
-
"duration": 0
|
|
1937
|
-
}
|
|
1938
|
-
}
|
|
1939
|
-
],
|
|
1940
|
-
"audioItems": [
|
|
1941
|
-
{
|
|
1942
|
-
"id": "selection-1-sound",
|
|
1943
|
-
"trackId": "speech",
|
|
1944
|
-
"asset": {
|
|
1945
|
-
"kind": "video",
|
|
1946
|
-
"assetId": "approved-video",
|
|
1947
|
-
"versionId": "v1",
|
|
1948
|
-
"url": "https://media.example/approved.mp4",
|
|
1949
|
-
"width": 1080,
|
|
1950
|
-
"height": 1920,
|
|
1951
|
-
"duration": 12
|
|
1952
|
-
},
|
|
1953
|
-
"assetId": "approved-video",
|
|
1954
|
-
"versionId": "v1",
|
|
1955
|
-
"url": "https://media.example/approved.mp4",
|
|
1956
|
-
"title": "Original speech",
|
|
1957
|
-
"start": 1,
|
|
1958
|
-
"duration": 8,
|
|
1959
|
-
"sourceOffset": 4,
|
|
1960
|
-
"trimStart": 4,
|
|
1961
|
-
"volume": 100,
|
|
1962
|
-
"rate": 1,
|
|
1963
|
-
"fadeIn": 0,
|
|
1964
|
-
"fadeOut": 0
|
|
1965
|
-
}
|
|
1966
|
-
],
|
|
1967
|
-
"captions": [
|
|
1968
|
-
{
|
|
1969
|
-
"id": "caption-0",
|
|
1970
|
-
"trackId": "captions",
|
|
1971
|
-
"type": "text",
|
|
1972
|
-
"text": "Keep the complete thought in the clip.",
|
|
1973
|
-
"start": 1,
|
|
1974
|
-
"end": 9,
|
|
1975
|
-
"font": "Hanken Grotesk",
|
|
1976
|
-
"size": 15,
|
|
1977
|
-
"color": "#FFFFFF",
|
|
1978
|
-
"background": "#0A0A0A",
|
|
1979
|
-
"backgroundOpacity": 75,
|
|
1980
|
-
"backgroundPadding": 5,
|
|
1981
|
-
"backgroundRadius": 3,
|
|
1982
|
-
"width": 0.82,
|
|
1983
|
-
"x": 50,
|
|
1984
|
-
"y": 76,
|
|
1985
|
-
"position": "center",
|
|
1986
|
-
"animation": "none",
|
|
1987
|
-
"animIn": 0.12,
|
|
1988
|
-
"animOut": 0
|
|
1989
|
-
}
|
|
1990
|
-
],
|
|
1991
|
-
"textOverlays": [
|
|
1992
|
-
{
|
|
1993
|
-
"id": "preview-label",
|
|
1994
|
-
"trackId": "variant-hook",
|
|
1995
|
-
"type": "text",
|
|
1996
|
-
"text": "Preview · actual footage",
|
|
1997
|
-
"start": 0,
|
|
1998
|
-
"end": 1,
|
|
1999
|
-
"font": "Hanken Grotesk",
|
|
2000
|
-
"size": 7,
|
|
2001
|
-
"color": "#F7F0DB",
|
|
2002
|
-
"background": "#0A0A0A",
|
|
2003
|
-
"backgroundOpacity": 85,
|
|
2004
|
-
"backgroundPadding": 5,
|
|
2005
|
-
"width": 0.82,
|
|
2006
|
-
"x": 50,
|
|
2007
|
-
"y": 8,
|
|
2008
|
-
"position": "center",
|
|
2009
|
-
"animation": "fade",
|
|
2010
|
-
"animIn": 0.12,
|
|
2011
|
-
"animOut": 0.1
|
|
2012
|
-
},
|
|
2013
|
-
{
|
|
2014
|
-
"id": "approved-hook-A",
|
|
2015
|
-
"trackId": "variant-hook",
|
|
2016
|
-
"type": "text",
|
|
2017
|
-
"text": "Watch the preparation",
|
|
2018
|
-
"start": 0,
|
|
2019
|
-
"end": 1,
|
|
2020
|
-
"font": "Hanken Grotesk",
|
|
2021
|
-
"size": 8.788958333333333,
|
|
2022
|
-
"color": "#F7F0DB",
|
|
2023
|
-
"background": "#0A0A0A",
|
|
2024
|
-
"backgroundOpacity": 85,
|
|
2025
|
-
"backgroundPadding": 5,
|
|
2026
|
-
"width": 0.82,
|
|
2027
|
-
"x": 50,
|
|
2028
|
-
"y": 18,
|
|
2029
|
-
"position": "center",
|
|
2030
|
-
"animation": "fade",
|
|
2031
|
-
"animIn": 0.12,
|
|
2032
|
-
"animOut": 0.1
|
|
2033
|
-
}
|
|
2034
|
-
],
|
|
2035
|
-
"stickers": [],
|
|
2036
|
-
"effects": [],
|
|
2037
|
-
"audio": [
|
|
2038
|
-
{
|
|
2039
|
-
"id": "selection-1-sound",
|
|
2040
|
-
"trackId": "speech",
|
|
2041
|
-
"asset": {
|
|
2042
|
-
"kind": "video",
|
|
2043
|
-
"assetId": "approved-video",
|
|
2044
|
-
"versionId": "v1",
|
|
2045
|
-
"url": "https://media.example/approved.mp4",
|
|
2046
|
-
"width": 1080,
|
|
2047
|
-
"height": 1920,
|
|
2048
|
-
"duration": 12
|
|
2049
|
-
},
|
|
2050
|
-
"assetId": "approved-video",
|
|
2051
|
-
"versionId": "v1",
|
|
2052
|
-
"url": "https://media.example/approved.mp4",
|
|
2053
|
-
"title": "Original speech",
|
|
2054
|
-
"start": 1,
|
|
2055
|
-
"duration": 8,
|
|
2056
|
-
"sourceOffset": 4,
|
|
2057
|
-
"trimStart": 4,
|
|
2058
|
-
"volume": 100,
|
|
2059
|
-
"rate": 1,
|
|
2060
|
-
"fadeIn": 0,
|
|
2061
|
-
"fadeOut": 0
|
|
2062
|
-
}
|
|
2063
|
-
],
|
|
2064
|
-
"overlays": [
|
|
2065
|
-
{
|
|
2066
|
-
"id": "caption-0",
|
|
2067
|
-
"trackId": "captions",
|
|
2068
|
-
"type": "text",
|
|
2069
|
-
"text": "Keep the complete thought in the clip.",
|
|
2070
|
-
"start": 1,
|
|
2071
|
-
"end": 9,
|
|
2072
|
-
"font": "Hanken Grotesk",
|
|
2073
|
-
"size": 15,
|
|
2074
|
-
"color": "#FFFFFF",
|
|
2075
|
-
"background": "#0A0A0A",
|
|
2076
|
-
"backgroundOpacity": 75,
|
|
2077
|
-
"backgroundPadding": 5,
|
|
2078
|
-
"backgroundRadius": 3,
|
|
2079
|
-
"width": 0.82,
|
|
2080
|
-
"x": 50,
|
|
2081
|
-
"y": 76,
|
|
2082
|
-
"position": "center",
|
|
2083
|
-
"animation": "none",
|
|
2084
|
-
"animIn": 0.12,
|
|
2085
|
-
"animOut": 0
|
|
2086
|
-
},
|
|
2087
|
-
{
|
|
2088
|
-
"id": "preview-label",
|
|
2089
|
-
"trackId": "variant-hook",
|
|
2090
|
-
"type": "text",
|
|
2091
|
-
"text": "Preview · actual footage",
|
|
2092
|
-
"start": 0,
|
|
2093
|
-
"end": 1,
|
|
2094
|
-
"font": "Hanken Grotesk",
|
|
2095
|
-
"size": 7,
|
|
2096
|
-
"color": "#F7F0DB",
|
|
2097
|
-
"background": "#0A0A0A",
|
|
2098
|
-
"backgroundOpacity": 85,
|
|
2099
|
-
"backgroundPadding": 5,
|
|
2100
|
-
"width": 0.82,
|
|
2101
|
-
"x": 50,
|
|
2102
|
-
"y": 8,
|
|
2103
|
-
"position": "center",
|
|
2104
|
-
"animation": "fade",
|
|
2105
|
-
"animIn": 0.12,
|
|
2106
|
-
"animOut": 0.1
|
|
2107
|
-
},
|
|
2108
|
-
{
|
|
2109
|
-
"id": "approved-hook-A",
|
|
2110
|
-
"trackId": "variant-hook",
|
|
2111
|
-
"type": "text",
|
|
2112
|
-
"text": "Watch the preparation",
|
|
2113
|
-
"start": 0,
|
|
2114
|
-
"end": 1,
|
|
2115
|
-
"font": "Hanken Grotesk",
|
|
2116
|
-
"size": 8.788958333333333,
|
|
2117
|
-
"color": "#F7F0DB",
|
|
2118
|
-
"background": "#0A0A0A",
|
|
2119
|
-
"backgroundOpacity": 85,
|
|
2120
|
-
"backgroundPadding": 5,
|
|
2121
|
-
"width": 0.82,
|
|
2122
|
-
"x": 50,
|
|
2123
|
-
"y": 18,
|
|
2124
|
-
"position": "center",
|
|
2125
|
-
"animation": "fade",
|
|
2126
|
-
"animIn": 0.12,
|
|
2127
|
-
"animOut": 0.1
|
|
2128
|
-
}
|
|
2129
|
-
],
|
|
2130
|
-
"targetDuration": 9,
|
|
2131
|
-
"exportSettings": {
|
|
2132
|
-
"aspect": "9:16",
|
|
2133
|
-
"fps": 30,
|
|
2134
|
-
"resolution": "1080p",
|
|
2135
|
-
"quality": "high"
|
|
2136
|
-
},
|
|
2137
|
-
"productAdVariant": {
|
|
2138
|
-
"schemaVersion": 1,
|
|
2139
|
-
"block": {
|
|
2140
|
-
"id": "stillmade.product-ad-variants",
|
|
2141
|
-
"version": "1.0.0"
|
|
2142
|
-
},
|
|
2143
|
-
"variant": "A",
|
|
2144
|
-
"opening": {
|
|
2145
|
-
"from": 0,
|
|
2146
|
-
"to": 1,
|
|
2147
|
-
"silent": true
|
|
2148
|
-
},
|
|
2149
|
-
"bodyOffset": 1,
|
|
2150
|
-
"source": {
|
|
2151
|
-
"assetId": "approved-video",
|
|
2152
|
-
"versionId": "v1"
|
|
2153
|
-
},
|
|
2154
|
-
"hook": "Watch the preparation"
|
|
2155
|
-
}
|
|
2156
|
-
},
|
|
2157
|
-
"variantB": {
|
|
2158
|
-
"schemaVersion": 1,
|
|
2159
|
-
"activeTimelineId": "short-form",
|
|
2160
|
-
"name": "Variant B · Look at the process",
|
|
2161
|
-
"aspect": "9:16",
|
|
2162
|
-
"aspectRatio": "9:16",
|
|
2163
|
-
"previewH": 369,
|
|
2164
|
-
"backgroundColor": "#0A0A0A",
|
|
2165
|
-
"tracks": [
|
|
2166
|
-
{
|
|
2167
|
-
"id": "video",
|
|
2168
|
-
"type": "video",
|
|
2169
|
-
"label": "Source selections"
|
|
2170
|
-
},
|
|
2171
|
-
{
|
|
2172
|
-
"id": "speech",
|
|
2173
|
-
"type": "audio",
|
|
2174
|
-
"label": "Original speech"
|
|
2175
|
-
},
|
|
2176
|
-
{
|
|
2177
|
-
"id": "music",
|
|
2178
|
-
"type": "audio",
|
|
2179
|
-
"label": "Music"
|
|
2180
|
-
},
|
|
2181
|
-
{
|
|
2182
|
-
"id": "captions",
|
|
2183
|
-
"type": "caption",
|
|
2184
|
-
"label": "Reviewed subtitles"
|
|
2185
|
-
},
|
|
2186
|
-
{
|
|
2187
|
-
"id": "copy",
|
|
2188
|
-
"type": "text",
|
|
2189
|
-
"label": "Approved copy"
|
|
2190
|
-
},
|
|
2191
|
-
{
|
|
2192
|
-
"id": "variant-hook",
|
|
2193
|
-
"type": "text",
|
|
2194
|
-
"label": "Approved opening hook"
|
|
2195
|
-
}
|
|
2196
|
-
],
|
|
2197
|
-
"trackOrder": [
|
|
2198
|
-
"video",
|
|
2199
|
-
"speech",
|
|
2200
|
-
"music",
|
|
2201
|
-
"captions",
|
|
2202
|
-
"copy",
|
|
2203
|
-
"variant-hook"
|
|
2204
|
-
],
|
|
2205
|
-
"clips": [
|
|
2206
|
-
{
|
|
2207
|
-
"id": "opening-preview-B",
|
|
2208
|
-
"kind": "video",
|
|
2209
|
-
"trackId": "video",
|
|
2210
|
-
"asset": {
|
|
2211
|
-
"kind": "video",
|
|
2212
|
-
"assetId": "approved-video",
|
|
2213
|
-
"versionId": "v1",
|
|
2214
|
-
"url": "https://media.example/approved.mp4",
|
|
2215
|
-
"width": 1080,
|
|
2216
|
-
"height": 1920,
|
|
2217
|
-
"duration": 12
|
|
2218
|
-
},
|
|
2219
|
-
"assetId": "approved-video",
|
|
2220
|
-
"versionId": "v1",
|
|
2221
|
-
"url": "https://media.example/approved.mp4",
|
|
2222
|
-
"title": "Source preview B",
|
|
2223
|
-
"start": 0,
|
|
2224
|
-
"duration": 1,
|
|
2225
|
-
"trimStart": 2,
|
|
2226
|
-
"speed": 1,
|
|
2227
|
-
"volume": 0,
|
|
2228
|
-
"transform": {
|
|
2229
|
-
"fit": "contain",
|
|
2230
|
-
"scale": 1,
|
|
2231
|
-
"x": 0,
|
|
2232
|
-
"y": 0,
|
|
2233
|
-
"rotation": 0,
|
|
2234
|
-
"opacity": 1
|
|
2235
|
-
},
|
|
2236
|
-
"motion": {
|
|
2237
|
-
"type": "none"
|
|
2238
|
-
},
|
|
2239
|
-
"transition": {
|
|
2240
|
-
"type": "Cut",
|
|
2241
|
-
"duration": 0
|
|
2242
|
-
}
|
|
2243
|
-
},
|
|
2244
|
-
{
|
|
2245
|
-
"id": "selection-1",
|
|
2246
|
-
"kind": "video",
|
|
2247
|
-
"trackId": "video",
|
|
2248
|
-
"asset": {
|
|
2249
|
-
"kind": "video",
|
|
2250
|
-
"assetId": "approved-video",
|
|
2251
|
-
"versionId": "v1",
|
|
2252
|
-
"url": "https://media.example/approved.mp4",
|
|
2253
|
-
"width": 1080,
|
|
2254
|
-
"height": 1920,
|
|
2255
|
-
"duration": 12
|
|
2256
|
-
},
|
|
2257
|
-
"assetId": "approved-video",
|
|
2258
|
-
"versionId": "v1",
|
|
2259
|
-
"url": "https://media.example/approved.mp4",
|
|
2260
|
-
"title": "Original video",
|
|
2261
|
-
"start": 1,
|
|
2262
|
-
"duration": 8,
|
|
2263
|
-
"trimStart": 4,
|
|
2264
|
-
"speed": 1,
|
|
2265
|
-
"volume": 0,
|
|
2266
|
-
"transform": {
|
|
2267
|
-
"fit": "contain",
|
|
2268
|
-
"scale": 1,
|
|
2269
|
-
"x": 0,
|
|
2270
|
-
"y": 0,
|
|
2271
|
-
"rotation": 0,
|
|
2272
|
-
"opacity": 1
|
|
2273
|
-
},
|
|
2274
|
-
"motion": {
|
|
2275
|
-
"type": "none"
|
|
2276
|
-
},
|
|
2277
|
-
"transition": {
|
|
2278
|
-
"type": "Cut",
|
|
2279
|
-
"duration": 0
|
|
2280
|
-
}
|
|
2281
|
-
}
|
|
2282
|
-
],
|
|
2283
|
-
"audioItems": [
|
|
2284
|
-
{
|
|
2285
|
-
"id": "selection-1-sound",
|
|
2286
|
-
"trackId": "speech",
|
|
2287
|
-
"asset": {
|
|
2288
|
-
"kind": "video",
|
|
2289
|
-
"assetId": "approved-video",
|
|
2290
|
-
"versionId": "v1",
|
|
2291
|
-
"url": "https://media.example/approved.mp4",
|
|
2292
|
-
"width": 1080,
|
|
2293
|
-
"height": 1920,
|
|
2294
|
-
"duration": 12
|
|
2295
|
-
},
|
|
2296
|
-
"assetId": "approved-video",
|
|
2297
|
-
"versionId": "v1",
|
|
2298
|
-
"url": "https://media.example/approved.mp4",
|
|
2299
|
-
"title": "Original speech",
|
|
2300
|
-
"start": 1,
|
|
2301
|
-
"duration": 8,
|
|
2302
|
-
"sourceOffset": 4,
|
|
2303
|
-
"trimStart": 4,
|
|
2304
|
-
"volume": 100,
|
|
2305
|
-
"rate": 1,
|
|
2306
|
-
"fadeIn": 0,
|
|
2307
|
-
"fadeOut": 0
|
|
2308
|
-
}
|
|
2309
|
-
],
|
|
2310
|
-
"captions": [
|
|
2311
|
-
{
|
|
2312
|
-
"id": "caption-0",
|
|
2313
|
-
"trackId": "captions",
|
|
2314
|
-
"type": "text",
|
|
2315
|
-
"text": "Keep the complete thought in the clip.",
|
|
2316
|
-
"start": 1,
|
|
2317
|
-
"end": 9,
|
|
2318
|
-
"font": "Hanken Grotesk",
|
|
2319
|
-
"size": 15,
|
|
2320
|
-
"color": "#FFFFFF",
|
|
2321
|
-
"background": "#0A0A0A",
|
|
2322
|
-
"backgroundOpacity": 75,
|
|
2323
|
-
"backgroundPadding": 5,
|
|
2324
|
-
"backgroundRadius": 3,
|
|
2325
|
-
"width": 0.82,
|
|
2326
|
-
"x": 50,
|
|
2327
|
-
"y": 76,
|
|
2328
|
-
"position": "center",
|
|
2329
|
-
"animation": "none",
|
|
2330
|
-
"animIn": 0.12,
|
|
2331
|
-
"animOut": 0
|
|
2332
|
-
}
|
|
2333
|
-
],
|
|
2334
|
-
"textOverlays": [
|
|
2335
|
-
{
|
|
2336
|
-
"id": "preview-label",
|
|
2337
|
-
"trackId": "variant-hook",
|
|
2338
|
-
"type": "text",
|
|
2339
|
-
"text": "Preview · actual footage",
|
|
2340
|
-
"start": 0,
|
|
2341
|
-
"end": 1,
|
|
2342
|
-
"font": "Hanken Grotesk",
|
|
2343
|
-
"size": 7,
|
|
2344
|
-
"color": "#F7F0DB",
|
|
2345
|
-
"background": "#0A0A0A",
|
|
2346
|
-
"backgroundOpacity": 85,
|
|
2347
|
-
"backgroundPadding": 5,
|
|
2348
|
-
"width": 0.82,
|
|
2349
|
-
"x": 50,
|
|
2350
|
-
"y": 8,
|
|
2351
|
-
"position": "center",
|
|
2352
|
-
"animation": "fade",
|
|
2353
|
-
"animIn": 0.12,
|
|
2354
|
-
"animOut": 0.1
|
|
2355
|
-
},
|
|
2356
|
-
{
|
|
2357
|
-
"id": "approved-hook-B",
|
|
2358
|
-
"trackId": "variant-hook",
|
|
2359
|
-
"type": "text",
|
|
2360
|
-
"text": "Look at the process",
|
|
2361
|
-
"start": 0,
|
|
2362
|
-
"end": 1,
|
|
2363
|
-
"font": "Hanken Grotesk",
|
|
2364
|
-
"size": 8.788958333333333,
|
|
2365
|
-
"color": "#F7F0DB",
|
|
2366
|
-
"background": "#0A0A0A",
|
|
2367
|
-
"backgroundOpacity": 85,
|
|
2368
|
-
"backgroundPadding": 5,
|
|
2369
|
-
"width": 0.82,
|
|
2370
|
-
"x": 50,
|
|
2371
|
-
"y": 18,
|
|
2372
|
-
"position": "center",
|
|
2373
|
-
"animation": "fade",
|
|
2374
|
-
"animIn": 0.12,
|
|
2375
|
-
"animOut": 0.1
|
|
2376
|
-
}
|
|
2377
|
-
],
|
|
2378
|
-
"stickers": [],
|
|
2379
|
-
"effects": [],
|
|
2380
|
-
"audio": [
|
|
2381
|
-
{
|
|
2382
|
-
"id": "selection-1-sound",
|
|
2383
|
-
"trackId": "speech",
|
|
2384
|
-
"asset": {
|
|
2385
|
-
"kind": "video",
|
|
2386
|
-
"assetId": "approved-video",
|
|
2387
|
-
"versionId": "v1",
|
|
2388
|
-
"url": "https://media.example/approved.mp4",
|
|
2389
|
-
"width": 1080,
|
|
2390
|
-
"height": 1920,
|
|
2391
|
-
"duration": 12
|
|
2392
|
-
},
|
|
2393
|
-
"assetId": "approved-video",
|
|
2394
|
-
"versionId": "v1",
|
|
2395
|
-
"url": "https://media.example/approved.mp4",
|
|
2396
|
-
"title": "Original speech",
|
|
2397
|
-
"start": 1,
|
|
2398
|
-
"duration": 8,
|
|
2399
|
-
"sourceOffset": 4,
|
|
2400
|
-
"trimStart": 4,
|
|
2401
|
-
"volume": 100,
|
|
2402
|
-
"rate": 1,
|
|
2403
|
-
"fadeIn": 0,
|
|
2404
|
-
"fadeOut": 0
|
|
2405
|
-
}
|
|
2406
|
-
],
|
|
2407
|
-
"overlays": [
|
|
2408
|
-
{
|
|
2409
|
-
"id": "caption-0",
|
|
2410
|
-
"trackId": "captions",
|
|
2411
|
-
"type": "text",
|
|
2412
|
-
"text": "Keep the complete thought in the clip.",
|
|
2413
|
-
"start": 1,
|
|
2414
|
-
"end": 9,
|
|
2415
|
-
"font": "Hanken Grotesk",
|
|
2416
|
-
"size": 15,
|
|
2417
|
-
"color": "#FFFFFF",
|
|
2418
|
-
"background": "#0A0A0A",
|
|
2419
|
-
"backgroundOpacity": 75,
|
|
2420
|
-
"backgroundPadding": 5,
|
|
2421
|
-
"backgroundRadius": 3,
|
|
2422
|
-
"width": 0.82,
|
|
2423
|
-
"x": 50,
|
|
2424
|
-
"y": 76,
|
|
2425
|
-
"position": "center",
|
|
2426
|
-
"animation": "none",
|
|
2427
|
-
"animIn": 0.12,
|
|
2428
|
-
"animOut": 0
|
|
2429
|
-
},
|
|
2430
|
-
{
|
|
2431
|
-
"id": "preview-label",
|
|
2432
|
-
"trackId": "variant-hook",
|
|
2433
|
-
"type": "text",
|
|
2434
|
-
"text": "Preview · actual footage",
|
|
2435
|
-
"start": 0,
|
|
2436
|
-
"end": 1,
|
|
2437
|
-
"font": "Hanken Grotesk",
|
|
2438
|
-
"size": 7,
|
|
2439
|
-
"color": "#F7F0DB",
|
|
2440
|
-
"background": "#0A0A0A",
|
|
2441
|
-
"backgroundOpacity": 85,
|
|
2442
|
-
"backgroundPadding": 5,
|
|
2443
|
-
"width": 0.82,
|
|
2444
|
-
"x": 50,
|
|
2445
|
-
"y": 8,
|
|
2446
|
-
"position": "center",
|
|
2447
|
-
"animation": "fade",
|
|
2448
|
-
"animIn": 0.12,
|
|
2449
|
-
"animOut": 0.1
|
|
2450
|
-
},
|
|
2451
|
-
{
|
|
2452
|
-
"id": "approved-hook-B",
|
|
2453
|
-
"trackId": "variant-hook",
|
|
2454
|
-
"type": "text",
|
|
2455
|
-
"text": "Look at the process",
|
|
2456
|
-
"start": 0,
|
|
2457
|
-
"end": 1,
|
|
2458
|
-
"font": "Hanken Grotesk",
|
|
2459
|
-
"size": 8.788958333333333,
|
|
2460
|
-
"color": "#F7F0DB",
|
|
2461
|
-
"background": "#0A0A0A",
|
|
2462
|
-
"backgroundOpacity": 85,
|
|
2463
|
-
"backgroundPadding": 5,
|
|
2464
|
-
"width": 0.82,
|
|
2465
|
-
"x": 50,
|
|
2466
|
-
"y": 18,
|
|
2467
|
-
"position": "center",
|
|
2468
|
-
"animation": "fade",
|
|
2469
|
-
"animIn": 0.12,
|
|
2470
|
-
"animOut": 0.1
|
|
2471
|
-
}
|
|
2472
|
-
],
|
|
2473
|
-
"targetDuration": 9,
|
|
2474
|
-
"exportSettings": {
|
|
2475
|
-
"aspect": "9:16",
|
|
2476
|
-
"fps": 30,
|
|
2477
|
-
"resolution": "1080p",
|
|
2478
|
-
"quality": "high"
|
|
2479
|
-
},
|
|
2480
|
-
"productAdVariant": {
|
|
2481
|
-
"schemaVersion": 1,
|
|
2482
|
-
"block": {
|
|
2483
|
-
"id": "stillmade.product-ad-variants",
|
|
2484
|
-
"version": "1.0.0"
|
|
2485
|
-
},
|
|
2486
|
-
"variant": "B",
|
|
2487
|
-
"opening": {
|
|
2488
|
-
"from": 2,
|
|
2489
|
-
"to": 3,
|
|
2490
|
-
"silent": true
|
|
2491
|
-
},
|
|
2492
|
-
"bodyOffset": 1,
|
|
2493
|
-
"source": {
|
|
2494
|
-
"assetId": "approved-video",
|
|
2495
|
-
"versionId": "v1"
|
|
2496
|
-
},
|
|
2497
|
-
"hook": "Look at the process"
|
|
2498
|
-
}
|
|
2499
|
-
},
|
|
2500
|
-
"variantC": {
|
|
2501
|
-
"schemaVersion": 1,
|
|
2502
|
-
"activeTimelineId": "short-form",
|
|
2503
|
-
"name": "Variant C · See the finished pour",
|
|
2504
|
-
"aspect": "9:16",
|
|
2505
|
-
"aspectRatio": "9:16",
|
|
2506
|
-
"previewH": 369,
|
|
2507
|
-
"backgroundColor": "#0A0A0A",
|
|
2508
|
-
"tracks": [
|
|
2509
|
-
{
|
|
2510
|
-
"id": "video",
|
|
2511
|
-
"type": "video",
|
|
2512
|
-
"label": "Source selections"
|
|
2513
|
-
},
|
|
2514
|
-
{
|
|
2515
|
-
"id": "speech",
|
|
2516
|
-
"type": "audio",
|
|
2517
|
-
"label": "Original speech"
|
|
2518
|
-
},
|
|
2519
|
-
{
|
|
2520
|
-
"id": "music",
|
|
2521
|
-
"type": "audio",
|
|
2522
|
-
"label": "Music"
|
|
2523
|
-
},
|
|
2524
|
-
{
|
|
2525
|
-
"id": "captions",
|
|
2526
|
-
"type": "caption",
|
|
2527
|
-
"label": "Reviewed subtitles"
|
|
2528
|
-
},
|
|
2529
|
-
{
|
|
2530
|
-
"id": "copy",
|
|
2531
|
-
"type": "text",
|
|
2532
|
-
"label": "Approved copy"
|
|
2533
|
-
},
|
|
2534
|
-
{
|
|
2535
|
-
"id": "variant-hook",
|
|
2536
|
-
"type": "text",
|
|
2537
|
-
"label": "Approved opening hook"
|
|
2538
|
-
}
|
|
2539
|
-
],
|
|
2540
|
-
"trackOrder": [
|
|
2541
|
-
"video",
|
|
2542
|
-
"speech",
|
|
2543
|
-
"music",
|
|
2544
|
-
"captions",
|
|
2545
|
-
"copy",
|
|
2546
|
-
"variant-hook"
|
|
2547
|
-
],
|
|
2548
|
-
"clips": [
|
|
2549
|
-
{
|
|
2550
|
-
"id": "opening-preview-C",
|
|
2551
|
-
"kind": "video",
|
|
2552
|
-
"trackId": "video",
|
|
2553
|
-
"asset": {
|
|
2554
|
-
"kind": "video",
|
|
2555
|
-
"assetId": "approved-video",
|
|
2556
|
-
"versionId": "v1",
|
|
2557
|
-
"url": "https://media.example/approved.mp4",
|
|
2558
|
-
"width": 1080,
|
|
2559
|
-
"height": 1920,
|
|
2560
|
-
"duration": 12
|
|
2561
|
-
},
|
|
2562
|
-
"assetId": "approved-video",
|
|
2563
|
-
"versionId": "v1",
|
|
2564
|
-
"url": "https://media.example/approved.mp4",
|
|
2565
|
-
"title": "Source preview C",
|
|
2566
|
-
"start": 0,
|
|
2567
|
-
"duration": 1,
|
|
2568
|
-
"trimStart": 4,
|
|
2569
|
-
"speed": 1,
|
|
2570
|
-
"volume": 0,
|
|
2571
|
-
"transform": {
|
|
2572
|
-
"fit": "contain",
|
|
2573
|
-
"scale": 1,
|
|
2574
|
-
"x": 0,
|
|
2575
|
-
"y": 0,
|
|
2576
|
-
"rotation": 0,
|
|
2577
|
-
"opacity": 1
|
|
2578
|
-
},
|
|
2579
|
-
"motion": {
|
|
2580
|
-
"type": "none"
|
|
2581
|
-
},
|
|
2582
|
-
"transition": {
|
|
2583
|
-
"type": "Cut",
|
|
2584
|
-
"duration": 0
|
|
2585
|
-
}
|
|
2586
|
-
},
|
|
2587
|
-
{
|
|
2588
|
-
"id": "selection-1",
|
|
2589
|
-
"kind": "video",
|
|
2590
|
-
"trackId": "video",
|
|
2591
|
-
"asset": {
|
|
2592
|
-
"kind": "video",
|
|
2593
|
-
"assetId": "approved-video",
|
|
2594
|
-
"versionId": "v1",
|
|
2595
|
-
"url": "https://media.example/approved.mp4",
|
|
2596
|
-
"width": 1080,
|
|
2597
|
-
"height": 1920,
|
|
2598
|
-
"duration": 12
|
|
2599
|
-
},
|
|
2600
|
-
"assetId": "approved-video",
|
|
2601
|
-
"versionId": "v1",
|
|
2602
|
-
"url": "https://media.example/approved.mp4",
|
|
2603
|
-
"title": "Original video",
|
|
2604
|
-
"start": 1,
|
|
2605
|
-
"duration": 8,
|
|
2606
|
-
"trimStart": 4,
|
|
2607
|
-
"speed": 1,
|
|
2608
|
-
"volume": 0,
|
|
2609
|
-
"transform": {
|
|
2610
|
-
"fit": "contain",
|
|
2611
|
-
"scale": 1,
|
|
2612
|
-
"x": 0,
|
|
2613
|
-
"y": 0,
|
|
2614
|
-
"rotation": 0,
|
|
2615
|
-
"opacity": 1
|
|
2616
|
-
},
|
|
2617
|
-
"motion": {
|
|
2618
|
-
"type": "none"
|
|
2619
|
-
},
|
|
2620
|
-
"transition": {
|
|
2621
|
-
"type": "Cut",
|
|
2622
|
-
"duration": 0
|
|
2623
|
-
}
|
|
2624
|
-
}
|
|
2625
|
-
],
|
|
2626
|
-
"audioItems": [
|
|
2627
|
-
{
|
|
2628
|
-
"id": "selection-1-sound",
|
|
2629
|
-
"trackId": "speech",
|
|
2630
|
-
"asset": {
|
|
2631
|
-
"kind": "video",
|
|
2632
|
-
"assetId": "approved-video",
|
|
2633
|
-
"versionId": "v1",
|
|
2634
|
-
"url": "https://media.example/approved.mp4",
|
|
2635
|
-
"width": 1080,
|
|
2636
|
-
"height": 1920,
|
|
2637
|
-
"duration": 12
|
|
2638
|
-
},
|
|
2639
|
-
"assetId": "approved-video",
|
|
2640
|
-
"versionId": "v1",
|
|
2641
|
-
"url": "https://media.example/approved.mp4",
|
|
2642
|
-
"title": "Original speech",
|
|
2643
|
-
"start": 1,
|
|
2644
|
-
"duration": 8,
|
|
2645
|
-
"sourceOffset": 4,
|
|
2646
|
-
"trimStart": 4,
|
|
2647
|
-
"volume": 100,
|
|
2648
|
-
"rate": 1,
|
|
2649
|
-
"fadeIn": 0,
|
|
2650
|
-
"fadeOut": 0
|
|
2651
|
-
}
|
|
2652
|
-
],
|
|
2653
|
-
"captions": [
|
|
2654
|
-
{
|
|
2655
|
-
"id": "caption-0",
|
|
2656
|
-
"trackId": "captions",
|
|
2657
|
-
"type": "text",
|
|
2658
|
-
"text": "Keep the complete thought in the clip.",
|
|
2659
|
-
"start": 1,
|
|
2660
|
-
"end": 9,
|
|
2661
|
-
"font": "Hanken Grotesk",
|
|
2662
|
-
"size": 15,
|
|
2663
|
-
"color": "#FFFFFF",
|
|
2664
|
-
"background": "#0A0A0A",
|
|
2665
|
-
"backgroundOpacity": 75,
|
|
2666
|
-
"backgroundPadding": 5,
|
|
2667
|
-
"backgroundRadius": 3,
|
|
2668
|
-
"width": 0.82,
|
|
2669
|
-
"x": 50,
|
|
2670
|
-
"y": 76,
|
|
2671
|
-
"position": "center",
|
|
2672
|
-
"animation": "none",
|
|
2673
|
-
"animIn": 0.12,
|
|
2674
|
-
"animOut": 0
|
|
2675
|
-
}
|
|
2676
|
-
],
|
|
2677
|
-
"textOverlays": [
|
|
2678
|
-
{
|
|
2679
|
-
"id": "preview-label",
|
|
2680
|
-
"trackId": "variant-hook",
|
|
2681
|
-
"type": "text",
|
|
2682
|
-
"text": "Preview · actual footage",
|
|
2683
|
-
"start": 0,
|
|
2684
|
-
"end": 1,
|
|
2685
|
-
"font": "Hanken Grotesk",
|
|
2686
|
-
"size": 7,
|
|
2687
|
-
"color": "#F7F0DB",
|
|
2688
|
-
"background": "#0A0A0A",
|
|
2689
|
-
"backgroundOpacity": 85,
|
|
2690
|
-
"backgroundPadding": 5,
|
|
2691
|
-
"width": 0.82,
|
|
2692
|
-
"x": 50,
|
|
2693
|
-
"y": 8,
|
|
2694
|
-
"position": "center",
|
|
2695
|
-
"animation": "fade",
|
|
2696
|
-
"animIn": 0.12,
|
|
2697
|
-
"animOut": 0.1
|
|
2698
|
-
},
|
|
2699
|
-
{
|
|
2700
|
-
"id": "approved-hook-C",
|
|
2701
|
-
"trackId": "variant-hook",
|
|
2702
|
-
"type": "text",
|
|
2703
|
-
"text": "See the finished pour",
|
|
2704
|
-
"start": 0,
|
|
2705
|
-
"end": 1,
|
|
2706
|
-
"font": "Hanken Grotesk",
|
|
2707
|
-
"size": 8.788958333333333,
|
|
2708
|
-
"color": "#F7F0DB",
|
|
2709
|
-
"background": "#0A0A0A",
|
|
2710
|
-
"backgroundOpacity": 85,
|
|
2711
|
-
"backgroundPadding": 5,
|
|
2712
|
-
"width": 0.82,
|
|
2713
|
-
"x": 50,
|
|
2714
|
-
"y": 18,
|
|
2715
|
-
"position": "center",
|
|
2716
|
-
"animation": "fade",
|
|
2717
|
-
"animIn": 0.12,
|
|
2718
|
-
"animOut": 0.1
|
|
2719
|
-
}
|
|
2720
|
-
],
|
|
2721
|
-
"stickers": [],
|
|
2722
|
-
"effects": [],
|
|
2723
|
-
"audio": [
|
|
2724
|
-
{
|
|
2725
|
-
"id": "selection-1-sound",
|
|
2726
|
-
"trackId": "speech",
|
|
2727
|
-
"asset": {
|
|
2728
|
-
"kind": "video",
|
|
2729
|
-
"assetId": "approved-video",
|
|
2730
|
-
"versionId": "v1",
|
|
2731
|
-
"url": "https://media.example/approved.mp4",
|
|
2732
|
-
"width": 1080,
|
|
2733
|
-
"height": 1920,
|
|
2734
|
-
"duration": 12
|
|
2735
|
-
},
|
|
2736
|
-
"assetId": "approved-video",
|
|
2737
|
-
"versionId": "v1",
|
|
2738
|
-
"url": "https://media.example/approved.mp4",
|
|
2739
|
-
"title": "Original speech",
|
|
2740
|
-
"start": 1,
|
|
2741
|
-
"duration": 8,
|
|
2742
|
-
"sourceOffset": 4,
|
|
2743
|
-
"trimStart": 4,
|
|
2744
|
-
"volume": 100,
|
|
2745
|
-
"rate": 1,
|
|
2746
|
-
"fadeIn": 0,
|
|
2747
|
-
"fadeOut": 0
|
|
2748
|
-
}
|
|
2749
|
-
],
|
|
2750
|
-
"overlays": [
|
|
2751
|
-
{
|
|
2752
|
-
"id": "caption-0",
|
|
2753
|
-
"trackId": "captions",
|
|
2754
|
-
"type": "text",
|
|
2755
|
-
"text": "Keep the complete thought in the clip.",
|
|
2756
|
-
"start": 1,
|
|
2757
|
-
"end": 9,
|
|
2758
|
-
"font": "Hanken Grotesk",
|
|
2759
|
-
"size": 15,
|
|
2760
|
-
"color": "#FFFFFF",
|
|
2761
|
-
"background": "#0A0A0A",
|
|
2762
|
-
"backgroundOpacity": 75,
|
|
2763
|
-
"backgroundPadding": 5,
|
|
2764
|
-
"backgroundRadius": 3,
|
|
2765
|
-
"width": 0.82,
|
|
2766
|
-
"x": 50,
|
|
2767
|
-
"y": 76,
|
|
2768
|
-
"position": "center",
|
|
2769
|
-
"animation": "none",
|
|
2770
|
-
"animIn": 0.12,
|
|
2771
|
-
"animOut": 0
|
|
2772
|
-
},
|
|
2773
|
-
{
|
|
2774
|
-
"id": "preview-label",
|
|
2775
|
-
"trackId": "variant-hook",
|
|
2776
|
-
"type": "text",
|
|
2777
|
-
"text": "Preview · actual footage",
|
|
2778
|
-
"start": 0,
|
|
2779
|
-
"end": 1,
|
|
2780
|
-
"font": "Hanken Grotesk",
|
|
2781
|
-
"size": 7,
|
|
2782
|
-
"color": "#F7F0DB",
|
|
2783
|
-
"background": "#0A0A0A",
|
|
2784
|
-
"backgroundOpacity": 85,
|
|
2785
|
-
"backgroundPadding": 5,
|
|
2786
|
-
"width": 0.82,
|
|
2787
|
-
"x": 50,
|
|
2788
|
-
"y": 8,
|
|
2789
|
-
"position": "center",
|
|
2790
|
-
"animation": "fade",
|
|
2791
|
-
"animIn": 0.12,
|
|
2792
|
-
"animOut": 0.1
|
|
2793
|
-
},
|
|
2794
|
-
{
|
|
2795
|
-
"id": "approved-hook-C",
|
|
2796
|
-
"trackId": "variant-hook",
|
|
2797
|
-
"type": "text",
|
|
2798
|
-
"text": "See the finished pour",
|
|
2799
|
-
"start": 0,
|
|
2800
|
-
"end": 1,
|
|
2801
|
-
"font": "Hanken Grotesk",
|
|
2802
|
-
"size": 8.788958333333333,
|
|
2803
|
-
"color": "#F7F0DB",
|
|
2804
|
-
"background": "#0A0A0A",
|
|
2805
|
-
"backgroundOpacity": 85,
|
|
2806
|
-
"backgroundPadding": 5,
|
|
2807
|
-
"width": 0.82,
|
|
2808
|
-
"x": 50,
|
|
2809
|
-
"y": 18,
|
|
2810
|
-
"position": "center",
|
|
2811
|
-
"animation": "fade",
|
|
2812
|
-
"animIn": 0.12,
|
|
2813
|
-
"animOut": 0.1
|
|
2814
|
-
}
|
|
2815
|
-
],
|
|
2816
|
-
"targetDuration": 9,
|
|
2817
|
-
"exportSettings": {
|
|
2818
|
-
"aspect": "9:16",
|
|
2819
|
-
"fps": 30,
|
|
2820
|
-
"resolution": "1080p",
|
|
2821
|
-
"quality": "high"
|
|
2822
|
-
},
|
|
2823
|
-
"productAdVariant": {
|
|
2824
|
-
"schemaVersion": 1,
|
|
2825
|
-
"block": {
|
|
2826
|
-
"id": "stillmade.product-ad-variants",
|
|
2827
|
-
"version": "1.0.0"
|
|
2828
|
-
},
|
|
2829
|
-
"variant": "C",
|
|
2830
|
-
"opening": {
|
|
2831
|
-
"from": 4,
|
|
2832
|
-
"to": 5,
|
|
2833
|
-
"silent": true
|
|
2834
|
-
},
|
|
2835
|
-
"bodyOffset": 1,
|
|
2836
|
-
"source": {
|
|
2837
|
-
"assetId": "approved-video",
|
|
2838
|
-
"versionId": "v1"
|
|
2839
|
-
},
|
|
2840
|
-
"hook": "See the finished pour"
|
|
2841
|
-
}
|
|
2842
|
-
},
|
|
2843
|
-
"review": {
|
|
2844
|
-
"schemaVersion": 1,
|
|
2845
|
-
"state": "needs-human-review",
|
|
2846
|
-
"humanApproved": false,
|
|
2847
|
-
"providerCalls": 0,
|
|
2848
|
-
"source": {
|
|
2849
|
-
"assetId": "approved-video",
|
|
2850
|
-
"versionId": "v1"
|
|
2851
|
-
},
|
|
2852
|
-
"bodyDuration": 8,
|
|
2853
|
-
"outputDuration": 9,
|
|
2854
|
-
"variants": [
|
|
2855
|
-
{
|
|
2856
|
-
"id": "A",
|
|
2857
|
-
"hook": "Watch the preparation",
|
|
2858
|
-
"openingFrom": 0,
|
|
2859
|
-
"openingTo": 1
|
|
2860
|
-
},
|
|
2861
|
-
{
|
|
2862
|
-
"id": "B",
|
|
2863
|
-
"hook": "Look at the process",
|
|
2864
|
-
"openingFrom": 2,
|
|
2865
|
-
"openingTo": 3
|
|
2866
|
-
},
|
|
2867
|
-
{
|
|
2868
|
-
"id": "C",
|
|
2869
|
-
"hook": "See the finished pour",
|
|
2870
|
-
"openingFrom": 4,
|
|
2871
|
-
"openingTo": 5
|
|
2872
|
-
}
|
|
2873
|
-
],
|
|
2874
|
-
"warnings": [
|
|
2875
|
-
"The three previews use different supplied source moments, followed by the same complete demonstration. They are not generated product scenes.",
|
|
2876
|
-
"Preview sound is muted to avoid presenting partial speech as a quote. Original body speech and captions retain their timing and exact words.",
|
|
2877
|
-
"Watch and listen to all three exports at phone size. Verify each hook against the actual footage and approved offer.",
|
|
2878
|
-
"No conversion performance, customer endorsement or independent rights verification is claimed."
|
|
2879
|
-
]
|
|
2880
|
-
}
|
|
2881
|
-
}
|
|
2882
|
-
}
|
|
2883
|
-
],
|
|
2884
|
-
"portable": {
|
|
2885
|
-
"format": "stillmade-block/1",
|
|
2886
|
-
"dependencies": [],
|
|
2887
|
-
"sources": [
|
|
2888
|
-
{
|
|
2889
|
-
"kind": "original",
|
|
2890
|
-
"license": "MIT",
|
|
2891
|
-
"paths": [
|
|
2892
|
-
"LICENSE",
|
|
2893
|
-
"src/run.js"
|
|
2894
|
-
],
|
|
2895
|
-
"evidence": [
|
|
2896
|
-
"upstream/0/LICENSE",
|
|
2897
|
-
"upstream/0/src/run.js"
|
|
2898
|
-
],
|
|
2899
|
-
"changes": "Original implementation declared by the packager; no reused repository or dependency code."
|
|
2900
|
-
}
|
|
2901
|
-
],
|
|
2902
|
-
"files": {
|
|
2903
|
-
"upstream/0/LICENSE": "MIT License\n\nCopyright (c) <year> <copyright holders>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and \nassociated documentation files (the \"Software\"), to deal in the Software without restriction, including \nwithout limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell \ncopies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the \nfollowing conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial \nportions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT \nLIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO \nEVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER \nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE \nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n",
|
|
2904
|
-
"upstream/0/src/run.js": "// Block-owned source editing, executed only inside the declared SDK sandbox.\nconst clone = value => JSON.parse(JSON.stringify(value));\nconst check = (condition, message) => { if (!condition) throw Error(message); };\nconst round = value => Math.round(value * 1000000) / 1000000;\nconst base = input.timeline;\ncheck(base && base.schemaVersion === 1 && Array.isArray(base.clips) && base.clips.length > 0 && base.clips.length <= 12, 'Connect the reviewed Product Demonstration timeline.');\ncheck(base.aspect === '9:16', 'Prepare a portrait 9:16 demonstration before making variants.');\ncheck(Number.isFinite(base.targetDuration) && base.targetDuration >= 5 && base.targetDuration <= 60, 'Use a complete 5–60 second product demonstration.');\ncheck(input.copyApproved === true, 'Confirm permission for the source footage and review all three exact hooks against what it actually shows.');\ncheck(!base.stillmadeWatermark && !base.stillmadeEndScreen, 'Use an editable source timeline, before host export branding.');\ncheck(!(base.effects || []).length && !(base.stickers || []).length, 'Use the simple demonstration timeline before adding effects or graphic layers.');\nconst source = base.clips[0].asset;\ncheck(source && source.kind === 'video' && source.assetId && source.versionId && Number.isFinite(source.duration) && source.duration > 0 && Number.isFinite(source.width) && source.width > 0 && Number.isFinite(source.height) && source.height > 0, 'The original video needs its saved asset/version, duration and dimensions.');\ncheck(typeof source.url === 'string' && /^(https:\\/\\/|http:\\/\\/(localhost|127\\.0\\.0\\.1)(:\\d+)?\\/|\\/api\\/media\\/[a-zA-Z0-9_-]+\\/|sm-media:|blob:)/.test(source.url) && !/^https?:\\/\\/[^/?#]*@/.test(source.url), 'Use an authorized saved source video reference.');\nlet end = 0;\nfor (const clip of base.clips) {\n check(clip.kind === 'video' && clip.asset?.assetId === source.assetId && clip.asset?.versionId === source.versionId && clip.url === source.url, 'All demonstration selections must use the same exact original footage.');\n check(Number.isFinite(clip.start) && Math.abs(clip.start - end) < .001 && Number.isFinite(clip.duration) && clip.duration > 0, 'Keep the demonstration selections sequential, without gaps or overlaps.');\n check(clip.speed === 1 && Number.isFinite(clip.trimStart) && clip.trimStart >= 0 && clip.trimStart + clip.duration <= source.duration + .02, 'Use source-speed cuts within the original footage.');\n check(clip.transform?.fit === 'contain' && clip.transform?.rotation === 0 && clip.transform?.scale === 1 && clip.transform?.x === 0 && clip.transform?.y === 0, 'Keep the complete original frame for these evidence-preserving variants.');\n end = round(clip.start + clip.duration);\n}\ncheck(Math.abs(end - base.targetDuration) < .02, 'The demonstration duration must match its actual source selections.');\nconst length = input.openingDuration;\ncheck(Number.isFinite(length) && length >= 1 && length <= 3, 'Choose a 1–3 second opening preview.');\nconst options = ['A', 'B', 'C'].map(id => {\n const hook = input['hook' + id];\n check(typeof hook === 'string' && hook.trim() && hook.length <= 64 && !/[\\u0000-\\u001f<>]/.test(hook) && hook.split(/\\s+/).every(word => word.length <= 28), 'Supply a distinct approved hook of up to 64 plain-text characters for each variant.');\n const from = input['opening' + id];\n check(Number.isFinite(from) && from >= 0 && from + length <= source.duration + .001, 'Every opening preview must fit inside the original source video.');\n return {id, hook: hook.trim(), from, to: round(from + length)};\n});\ncheck(new Set(options.map(option => option.hook.toLowerCase())).size === 3, 'Use three distinct approved hooks.');\nfor (let i = 0; i < options.length; i++) for (let j = i + 1; j < options.length; j++) check(Math.abs(options[i].from - options[j].from) >= length - .001, 'Choose three non-overlapping source moments so the openings genuinely differ.');\nconst duration = round(base.targetDuration + length);\nconst shift = row => ({...clone(row), start: round((row.start || 0) + length), ...(Number.isFinite(row.end) ? {end: round(row.end + length)} : {})});\nconst rows = key => { check(base[key] === undefined || Array.isArray(base[key]), 'The demonstration contains unsupported editing data.'); return base[key] || []; };\nconst originalAudio = rows('audioItems'), originalCaptions = rows('captions'), originalCopy = rows('textOverlays');\ncheck(originalCaptions.length <= 500 && originalCopy.length <= 20 && originalAudio.length <= 20, 'Use a bounded demonstration timeline.');\nconst openingText = (id, text, y, size) => ({id,trackId:'variant-hook',type:'text',text,start:0,end:length,font:'Hanken Grotesk',size,color:'#F7F0DB',background:'#0A0A0A',backgroundOpacity:85,backgroundPadding:5,width:.82,x:50,y,position:'center',animation:'fade',animIn:.12,animOut:.1});\nconst outputs = {};\nfor (const option of options) {\n const timeline = clone(base);\n timeline.name = 'Variant ' + option.id + ' · ' + option.hook;\n timeline.targetDuration = duration;\n timeline.clips = [{...clone(base.clips[0]), id:'opening-preview-' + option.id, title:'Source preview ' + option.id, start:0, duration:length, trimStart:option.from, volume:0, transition:{type:'Cut',duration:0}, motion:{type:'none'}}, ...base.clips.map(shift)];\n timeline.audioItems = originalAudio.map(row => {\n // Only the existing explicitly named music bed may continue across the new\n // preview. Original speech stays attached to the untouched demonstration.\n if (row.id !== 'music-bed' || row.asset?.kind !== 'audio' || row.start !== 0) return shift(row);\n const offset = row.sourceOffset || row.trimStart || 0;\n check(Number.isFinite(row.asset.duration) && row.asset.duration >= offset + duration, 'The licensed music is too short for the opening plus full demonstration. Choose a longer soundtrack or omit it.');\n return {...clone(row), duration};\n });\n timeline.captions = originalCaptions.map(shift);\n const hookSize = Math.min(16, (369 * 9 / 16 * .82 - 12) / Math.max(18, ...option.hook.split(/\\s+/).map(word => word.length)));\n timeline.textOverlays = originalCopy.filter(row => row.id !== 'opening').map(row => row.id === 'disclosure' ? {...clone(row),start:0,end:duration} : shift(row));\n timeline.textOverlays.push(openingText('preview-label', 'Preview · actual footage', 8, 7), openingText('approved-hook-' + option.id, option.hook, 18, hookSize));\n timeline.tracks = [...(timeline.tracks || []), {id:'variant-hook',type:'text',label:'Approved opening hook'}];\n timeline.trackOrder = [...(timeline.trackOrder || []), 'variant-hook'];\n timeline.audio = clone(timeline.audioItems);\n timeline.overlays = clone([...timeline.captions, ...timeline.textOverlays]);\n timeline.productAdVariant = {schemaVersion:1,block:{id:'stillmade.product-ad-variants',version:'1.0.0'},variant:option.id,opening:{from:option.from,to:option.to,silent:true},bodyOffset:length,source:{assetId:source.assetId,versionId:source.versionId},hook:option.hook};\n outputs['variant' + option.id] = timeline;\n}\noutputs.review = {schemaVersion:1,state:'needs-human-review',humanApproved:false,providerCalls:0,source:{assetId:source.assetId,versionId:source.versionId},bodyDuration:base.targetDuration,outputDuration:duration,variants:options.map(option => ({id:option.id,hook:option.hook,openingFrom:option.from,openingTo:option.to})),warnings:['The three previews use different supplied source moments, followed by the same complete demonstration. They are not generated product scenes.','Preview sound is muted to avoid presenting partial speech as a quote. Original body speech and captions retain their timing and exact words.','Watch and listen to all three exports at phone size. Verify each hook against the actual footage and approved offer.','No conversion performance, customer endorsement or independent rights verification is claimed.']};\nreturn outputs;\n"
|
|
2905
|
-
},
|
|
2906
|
-
"lineage": {
|
|
2907
|
-
"parents": [],
|
|
2908
|
-
"changes": "Packaged original Block source for StillMade."
|
|
2909
|
-
}
|
|
2910
|
-
}
|
|
2911
|
-
};
|