vidspotai-shared 1.0.67 → 1.0.69-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/globals/aiModels/enums.d.ts +63 -6
- package/lib/globals/aiModels/enums.d.ts.map +1 -1
- package/lib/globals/aiModels/enums.js +78 -9
- package/lib/globals/aiModels/index.d.ts +2 -0
- package/lib/globals/aiModels/index.d.ts.map +1 -1
- package/lib/globals/aiModels/index.js +6 -0
- package/lib/globals/aiModels/providers/alibaba.d.ts +4 -0
- package/lib/globals/aiModels/providers/alibaba.d.ts.map +1 -0
- package/lib/globals/aiModels/providers/alibaba.js +194 -0
- package/lib/globals/aiModels/providers/bytedance.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/bytedance.js +19 -0
- package/lib/globals/aiModels/providers/elevenlabs.d.ts +14 -0
- package/lib/globals/aiModels/providers/elevenlabs.d.ts.map +1 -0
- package/lib/globals/aiModels/providers/elevenlabs.js +29 -0
- package/lib/globals/aiModels/providers/google.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/google.js +150 -2
- package/lib/globals/aiModels/providers/kling.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/kling.js +280 -37
- package/lib/globals/aiModels/providers/minimax.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/minimax.js +73 -2
- package/lib/globals/aiModels/providers/openai.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/openai.js +90 -6
- package/lib/globals/aiModels/providers/pixverse.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/pixverse.js +111 -29
- package/lib/globals/aiModels/providers/pixverseTemplates.d.ts +36 -0
- package/lib/globals/aiModels/providers/pixverseTemplates.d.ts.map +1 -0
- package/lib/globals/aiModels/providers/pixverseTemplates.js +42 -0
- package/lib/globals/aiModels/providers/runway.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/runway.js +64 -2
- package/lib/globals/aiModels/tierHelpers.d.ts +33 -0
- package/lib/globals/aiModels/tierHelpers.d.ts.map +1 -0
- package/lib/globals/aiModels/tierHelpers.js +109 -0
- package/lib/globals/aiModels/types.d.ts +20 -1
- package/lib/globals/aiModels/types.d.ts.map +1 -1
- package/lib/globals/ttsModels/index.d.ts +2 -0
- package/lib/globals/ttsModels/index.d.ts.map +1 -1
- package/lib/globals/ttsModels/index.js +9 -1
- package/lib/globals/ttsModels/providers/minimax.d.ts +8 -0
- package/lib/globals/ttsModels/providers/minimax.d.ts.map +1 -0
- package/lib/globals/ttsModels/providers/minimax.js +18 -0
- package/lib/globals/ttsModels/providers/openai.d.ts +12 -0
- package/lib/globals/ttsModels/providers/openai.d.ts.map +1 -0
- package/lib/globals/ttsModels/providers/openai.js +22 -0
- package/lib/globals/ttsModels/types.d.ts +1 -1
- package/lib/globals/ttsModels/types.d.ts.map +1 -1
- package/lib/globals/ttsModels/voices.d.ts +39 -4
- package/lib/globals/ttsModels/voices.d.ts.map +1 -1
- package/lib/globals/ttsModels/voices.js +273 -26
- package/lib/globals/types.d.ts +59 -1
- package/lib/globals/types.d.ts.map +1 -1
- package/lib/globals/types.js +81 -2
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/models/agent.model.d.ts +357 -0
- package/lib/models/agent.model.d.ts.map +1 -0
- package/lib/models/agent.model.js +21 -0
- package/lib/models/cachedAsset.model.d.ts +18 -0
- package/lib/models/cachedAsset.model.d.ts.map +1 -0
- package/lib/models/cachedAsset.model.js +2 -0
- package/lib/models/cachedRawAsset.model.d.ts +20 -0
- package/lib/models/cachedRawAsset.model.d.ts.map +1 -0
- package/lib/models/cachedRawAsset.model.js +2 -0
- package/lib/models/image.model.d.ts +47 -0
- package/lib/models/image.model.d.ts.map +1 -0
- package/lib/models/image.model.js +2 -0
- package/lib/models/index.d.ts +6 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/index.js +6 -0
- package/lib/models/notification.model.d.ts +25 -0
- package/lib/models/notification.model.d.ts.map +1 -0
- package/lib/models/notification.model.js +2 -0
- package/lib/models/ref.model.d.ts +80 -0
- package/lib/models/ref.model.d.ts.map +1 -0
- package/lib/models/ref.model.js +13 -0
- package/lib/models/share.model.d.ts +29 -0
- package/lib/models/share.model.d.ts.map +1 -0
- package/lib/models/share.model.js +2 -0
- package/lib/models/user.model.d.ts +12 -1
- package/lib/models/user.model.d.ts.map +1 -1
- package/lib/models/video.model.d.ts +120 -0
- package/lib/models/video.model.d.ts.map +1 -1
- package/lib/models/video.model.js +10 -0
- package/lib/schemas/agentPersona.schema.d.ts +10 -0
- package/lib/schemas/agentPersona.schema.d.ts.map +1 -0
- package/lib/schemas/agentPersona.schema.js +11 -0
- package/lib/schemas/agentRunJob.schema.d.ts +105 -0
- package/lib/schemas/agentRunJob.schema.d.ts.map +1 -0
- package/lib/schemas/agentRunJob.schema.js +88 -0
- package/lib/schemas/brandKit.schema.d.ts +113 -0
- package/lib/schemas/brandKit.schema.d.ts.map +1 -0
- package/lib/schemas/brandKit.schema.js +46 -0
- package/lib/schemas/brief.schema.d.ts +263 -0
- package/lib/schemas/brief.schema.d.ts.map +1 -0
- package/lib/schemas/brief.schema.js +157 -0
- package/lib/schemas/index.d.ts +7 -0
- package/lib/schemas/index.d.ts.map +1 -0
- package/lib/schemas/index.js +22 -0
- package/lib/schemas/project.schema.d.ts +1025 -0
- package/lib/schemas/project.schema.d.ts.map +1 -0
- package/lib/schemas/project.schema.js +256 -0
- package/lib/schemas/videoPlan.schema.d.ts +590 -0
- package/lib/schemas/videoPlan.schema.d.ts.map +1 -0
- package/lib/schemas/videoPlan.schema.js +412 -0
- package/lib/services/agent/beatSnap.d.ts +10 -0
- package/lib/services/agent/beatSnap.d.ts.map +1 -0
- package/lib/services/agent/beatSnap.js +128 -0
- package/lib/services/agent/bibleBuilder.d.ts +43 -0
- package/lib/services/agent/bibleBuilder.d.ts.map +1 -0
- package/lib/services/agent/bibleBuilder.js +102 -0
- package/lib/services/agent/bibleImageVision.d.ts +45 -0
- package/lib/services/agent/bibleImageVision.d.ts.map +1 -0
- package/lib/services/agent/bibleImageVision.js +169 -0
- package/lib/services/agent/chatAgent.d.ts +79 -0
- package/lib/services/agent/chatAgent.d.ts.map +1 -0
- package/lib/services/agent/chatAgent.js +136 -0
- package/lib/services/agent/costPreflight.d.ts +61 -0
- package/lib/services/agent/costPreflight.d.ts.map +1 -0
- package/lib/services/agent/costPreflight.js +143 -0
- package/lib/services/agent/critic.d.ts +103 -0
- package/lib/services/agent/critic.d.ts.map +1 -0
- package/lib/services/agent/critic.js +139 -0
- package/lib/services/agent/editClassifier.d.ts +262 -0
- package/lib/services/agent/editClassifier.d.ts.map +1 -0
- package/lib/services/agent/editClassifier.js +186 -0
- package/lib/services/agent/eval/index.d.ts +5 -0
- package/lib/services/agent/eval/index.d.ts.map +1 -0
- package/lib/services/agent/eval/index.js +20 -0
- package/lib/services/agent/eval/judge.d.ts +14 -0
- package/lib/services/agent/eval/judge.d.ts.map +1 -0
- package/lib/services/agent/eval/judge.js +96 -0
- package/lib/services/agent/eval/recorder.d.ts +28 -0
- package/lib/services/agent/eval/recorder.d.ts.map +1 -0
- package/lib/services/agent/eval/recorder.js +100 -0
- package/lib/services/agent/eval/seedBriefs.d.ts +16 -0
- package/lib/services/agent/eval/seedBriefs.d.ts.map +1 -0
- package/lib/services/agent/eval/seedBriefs.js +1188 -0
- package/lib/services/agent/eval/types.d.ts +230 -0
- package/lib/services/agent/eval/types.d.ts.map +1 -0
- package/lib/services/agent/eval/types.js +73 -0
- package/lib/services/agent/executor.d.ts +141 -0
- package/lib/services/agent/executor.d.ts.map +1 -0
- package/lib/services/agent/executor.js +561 -0
- package/lib/services/agent/globalActions.d.ts +49 -0
- package/lib/services/agent/globalActions.d.ts.map +1 -0
- package/lib/services/agent/globalActions.js +328 -0
- package/lib/services/agent/index.d.ts +38 -0
- package/lib/services/agent/index.d.ts.map +1 -0
- package/lib/services/agent/index.js +53 -0
- package/lib/services/agent/llmCaller.d.ts +144 -0
- package/lib/services/agent/llmCaller.d.ts.map +1 -0
- package/lib/services/agent/llmCaller.js +16 -0
- package/lib/services/agent/llmCallerAnthropic.d.ts +90 -0
- package/lib/services/agent/llmCallerAnthropic.d.ts.map +1 -0
- package/lib/services/agent/llmCallerAnthropic.js +255 -0
- package/lib/services/agent/llmCallerGateway.d.ts +61 -0
- package/lib/services/agent/llmCallerGateway.d.ts.map +1 -0
- package/lib/services/agent/llmCallerGateway.js +360 -0
- package/lib/services/agent/llmCallerRegistry.d.ts +6 -0
- package/lib/services/agent/llmCallerRegistry.d.ts.map +1 -0
- package/lib/services/agent/llmCallerRegistry.js +39 -0
- package/lib/services/agent/modelQualityNotes.d.ts +100 -0
- package/lib/services/agent/modelQualityNotes.d.ts.map +1 -0
- package/lib/services/agent/modelQualityNotes.js +248 -0
- package/lib/services/agent/modelRouter.d.ts +41 -0
- package/lib/services/agent/modelRouter.d.ts.map +1 -0
- package/lib/services/agent/modelRouter.js +65 -0
- package/lib/services/agent/musicSelect.d.ts +23 -0
- package/lib/services/agent/musicSelect.d.ts.map +1 -0
- package/lib/services/agent/musicSelect.js +109 -0
- package/lib/services/agent/overlayRenderer.d.ts +67 -0
- package/lib/services/agent/overlayRenderer.d.ts.map +1 -0
- package/lib/services/agent/overlayRenderer.js +253 -0
- package/lib/services/agent/perSceneCritic.d.ts +90 -0
- package/lib/services/agent/perSceneCritic.d.ts.map +1 -0
- package/lib/services/agent/perSceneCritic.js +125 -0
- package/lib/services/agent/personas.d.ts +78 -0
- package/lib/services/agent/personas.d.ts.map +1 -0
- package/lib/services/agent/personas.js +177 -0
- package/lib/services/agent/planDiff.d.ts +76 -0
- package/lib/services/agent/planDiff.d.ts.map +1 -0
- package/lib/services/agent/planDiff.js +182 -0
- package/lib/services/agent/planMutations.d.ts +46 -0
- package/lib/services/agent/planMutations.d.ts.map +1 -0
- package/lib/services/agent/planMutations.js +120 -0
- package/lib/services/agent/planner/Planner.d.ts +107 -0
- package/lib/services/agent/planner/Planner.d.ts.map +1 -0
- package/lib/services/agent/planner/Planner.js +591 -0
- package/lib/services/agent/planner/overlaySanity.d.ts +7 -0
- package/lib/services/agent/planner/overlaySanity.d.ts.map +1 -0
- package/lib/services/agent/planner/overlaySanity.js +86 -0
- package/lib/services/agent/planner/promptSections.d.ts +25 -0
- package/lib/services/agent/planner/promptSections.d.ts.map +1 -0
- package/lib/services/agent/planner/promptSections.js +174 -0
- package/lib/services/agent/planner/repair.d.ts +16 -0
- package/lib/services/agent/planner/repair.d.ts.map +1 -0
- package/lib/services/agent/planner/repair.js +51 -0
- package/lib/services/agent/planner/structuralRules.d.ts +10 -0
- package/lib/services/agent/planner/structuralRules.d.ts.map +1 -0
- package/lib/services/agent/planner/structuralRules.js +111 -0
- package/lib/services/agent/planner/validators.d.ts +65 -0
- package/lib/services/agent/planner/validators.d.ts.map +1 -0
- package/lib/services/agent/planner/validators.js +284 -0
- package/lib/services/agent/planner.d.ts +3 -0
- package/lib/services/agent/planner.d.ts.map +1 -0
- package/lib/services/agent/planner.js +14 -0
- package/lib/services/agent/providerFallback/chains.d.ts +100 -0
- package/lib/services/agent/providerFallback/chains.d.ts.map +1 -0
- package/lib/services/agent/providerFallback/chains.js +198 -0
- package/lib/services/agent/providerFallback/classifier.d.ts +36 -0
- package/lib/services/agent/providerFallback/classifier.d.ts.map +1 -0
- package/lib/services/agent/providerFallback/classifier.js +103 -0
- package/lib/services/agent/providerFallback/index.d.ts +4 -0
- package/lib/services/agent/providerFallback/index.d.ts.map +1 -0
- package/lib/services/agent/providerFallback/index.js +19 -0
- package/lib/services/agent/providerFallback/withFallback.d.ts +60 -0
- package/lib/services/agent/providerFallback/withFallback.d.ts.map +1 -0
- package/lib/services/agent/providerFallback/withFallback.js +93 -0
- package/lib/services/agent/providerTaskCache.d.ts +50 -0
- package/lib/services/agent/providerTaskCache.d.ts.map +1 -0
- package/lib/services/agent/providerTaskCache.js +98 -0
- package/lib/services/agent/qualityGate.d.ts +82 -0
- package/lib/services/agent/qualityGate.d.ts.map +1 -0
- package/lib/services/agent/qualityGate.js +232 -0
- package/lib/services/agent/referenceImageRenderer.d.ts +37 -0
- package/lib/services/agent/referenceImageRenderer.d.ts.map +1 -0
- package/lib/services/agent/referenceImageRenderer.js +92 -0
- package/lib/services/agent/regenCore.d.ts +60 -0
- package/lib/services/agent/regenCore.d.ts.map +1 -0
- package/lib/services/agent/regenCore.js +487 -0
- package/lib/services/agent/runHelpers.d.ts +44 -0
- package/lib/services/agent/runHelpers.d.ts.map +1 -0
- package/lib/services/agent/runHelpers.js +196 -0
- package/lib/services/agent/sceneLayoutVision.d.ts +90 -0
- package/lib/services/agent/sceneLayoutVision.d.ts.map +1 -0
- package/lib/services/agent/sceneLayoutVision.js +212 -0
- package/lib/services/agent/stitchedVideoCritic.d.ts +136 -0
- package/lib/services/agent/stitchedVideoCritic.d.ts.map +1 -0
- package/lib/services/agent/stitchedVideoCritic.gemini.d.ts +26 -0
- package/lib/services/agent/stitchedVideoCritic.gemini.d.ts.map +1 -0
- package/lib/services/agent/stitchedVideoCritic.gemini.js +198 -0
- package/lib/services/agent/stitchedVideoCritic.js +162 -0
- package/lib/services/agent/taskPoller.d.ts +65 -0
- package/lib/services/agent/taskPoller.d.ts.map +1 -0
- package/lib/services/agent/taskPoller.js +176 -0
- package/lib/services/agent/textOverlayStyles.d.ts +60 -0
- package/lib/services/agent/textOverlayStyles.d.ts.map +1 -0
- package/lib/services/agent/textOverlayStyles.js +174 -0
- package/lib/services/agent/toolRegistry.d.ts +73 -0
- package/lib/services/agent/toolRegistry.d.ts.map +1 -0
- package/lib/services/agent/toolRegistry.js +95 -0
- package/lib/services/agent/tools/analyzeReference.tool.d.ts +36 -0
- package/lib/services/agent/tools/analyzeReference.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/analyzeReference.tool.js +44 -0
- package/lib/services/agent/tools/animateImage.tool.d.ts +24 -0
- package/lib/services/agent/tools/animateImage.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/animateImage.tool.js +115 -0
- package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts +32 -0
- package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/animateImageWithMotionBrush.tool.js +135 -0
- package/lib/services/agent/tools/composeScene.tool.d.ts +978 -0
- package/lib/services/agent/tools/composeScene.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/composeScene.tool.js +90 -0
- package/lib/services/agent/tools/estimateCost.tool.d.ts +352 -0
- package/lib/services/agent/tools/estimateCost.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/estimateCost.tool.js +62 -0
- package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts +32 -0
- package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateAvatarVideo.tool.js +143 -0
- package/lib/services/agent/tools/generateCaptions.tool.d.ts +42 -0
- package/lib/services/agent/tools/generateCaptions.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateCaptions.tool.js +196 -0
- package/lib/services/agent/tools/generateImage.tool.d.ts +74 -0
- package/lib/services/agent/tools/generateImage.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateImage.tool.js +206 -0
- package/lib/services/agent/tools/generateVideo.tool.d.ts +31 -0
- package/lib/services/agent/tools/generateVideo.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateVideo.tool.js +153 -0
- package/lib/services/agent/tools/generateVoiceover.tool.d.ts +44 -0
- package/lib/services/agent/tools/generateVoiceover.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateVoiceover.tool.js +206 -0
- package/lib/services/agent/tools/index.d.ts +20 -0
- package/lib/services/agent/tools/index.d.ts.map +1 -0
- package/lib/services/agent/tools/index.js +35 -0
- package/lib/services/agent/tools/planVideo.tool.d.ts +343 -0
- package/lib/services/agent/tools/planVideo.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/planVideo.tool.js +46 -0
- package/lib/services/agent/tools/render.tool.d.ts +367 -0
- package/lib/services/agent/tools/render.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/render.tool.js +48 -0
- package/lib/services/agent/tools/searchMusic.tool.d.ts +49 -0
- package/lib/services/agent/tools/searchMusic.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/searchMusic.tool.js +74 -0
- package/lib/services/agent/tools/searchStock.tool.d.ts +41 -0
- package/lib/services/agent/tools/searchStock.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/searchStock.tool.js +314 -0
- package/lib/services/agent/tools/searchUserLibrary.tool.d.ts +59 -0
- package/lib/services/agent/tools/searchUserLibrary.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/searchUserLibrary.tool.js +58 -0
- package/lib/services/agent/ttsDuration.d.ts +29 -0
- package/lib/services/agent/ttsDuration.d.ts.map +1 -0
- package/lib/services/agent/ttsDuration.js +60 -0
- package/lib/services/aiGen/aiGenFactory.service.d.ts +21 -1
- package/lib/services/aiGen/aiGenFactory.service.d.ts.map +1 -1
- package/lib/services/aiGen/aiGenFactory.service.js +84 -21
- package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts +31 -0
- package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts.map +1 -0
- package/lib/services/aiGen/canonicalAdapters/cameraControl.types.js +2 -0
- package/lib/services/aiGen/canonicalAdapters/index.d.ts +3 -0
- package/lib/services/aiGen/canonicalAdapters/index.d.ts.map +1 -0
- package/lib/services/aiGen/canonicalAdapters/index.js +18 -0
- package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts +23 -0
- package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts.map +1 -0
- package/lib/services/aiGen/canonicalAdapters/multiShot.types.js +12 -0
- package/lib/services/aiGen/helpers.d.ts.map +1 -1
- package/lib/services/aiGen/helpers.js +10 -0
- package/lib/services/aiGen/providers/alibaba/alibaba.d.ts +14 -3
- package/lib/services/aiGen/providers/alibaba/alibaba.d.ts.map +1 -1
- package/lib/services/aiGen/providers/alibaba/alibaba.js +155 -22
- package/lib/services/aiGen/providers/baseAiGenProvider.service.d.ts +22 -4
- package/lib/services/aiGen/providers/baseAiGenProvider.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/baseAiGenProvider.service.js +32 -0
- package/lib/services/aiGen/providers/bytedance/bytedance.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/bytedance/bytedance.service.js +13 -13
- package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts +18 -0
- package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.js +102 -0
- package/lib/services/aiGen/providers/fal/falImage.service.d.ts +15 -0
- package/lib/services/aiGen/providers/fal/falImage.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/fal/falImage.service.js +141 -0
- package/lib/services/aiGen/providers/fal/index.d.ts +2 -0
- package/lib/services/aiGen/providers/fal/index.d.ts.map +1 -0
- package/lib/services/aiGen/providers/fal/index.js +17 -0
- package/lib/services/aiGen/providers/google/google.service.d.ts +11 -2
- package/lib/services/aiGen/providers/google/google.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/google/google.service.js +245 -28
- package/lib/services/aiGen/providers/index.d.ts +3 -0
- package/lib/services/aiGen/providers/index.d.ts.map +1 -1
- package/lib/services/aiGen/providers/index.js +3 -0
- package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts +4 -0
- package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts.map +1 -0
- package/lib/services/aiGen/providers/kling/cameraAdapter.js +53 -0
- package/lib/services/aiGen/providers/kling/index.d.ts +1 -0
- package/lib/services/aiGen/providers/kling/index.d.ts.map +1 -1
- package/lib/services/aiGen/providers/kling/index.js +1 -0
- package/lib/services/aiGen/providers/kling/kling.service.d.ts +12 -1
- package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/kling/kling.service.js +357 -26
- package/lib/services/aiGen/providers/kling/klingImage.service.d.ts +21 -0
- package/lib/services/aiGen/providers/kling/klingImage.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/kling/klingImage.service.js +208 -0
- package/lib/services/aiGen/providers/kling/types.d.ts +105 -0
- package/lib/services/aiGen/providers/kling/types.d.ts.map +1 -1
- package/lib/services/aiGen/providers/minimax/minimax.service.d.ts +15 -2
- package/lib/services/aiGen/providers/minimax/minimax.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/minimax/minimax.service.js +127 -1
- package/lib/services/aiGen/providers/minimax/types.d.ts +10 -1
- package/lib/services/aiGen/providers/minimax/types.d.ts.map +1 -1
- package/lib/services/aiGen/providers/openai/openai.service.d.ts +8 -2
- package/lib/services/aiGen/providers/openai/openai.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/openai/openai.service.js +184 -7
- package/lib/services/aiGen/providers/pexels/index.d.ts +2 -0
- package/lib/services/aiGen/providers/pexels/index.d.ts.map +1 -0
- package/lib/services/aiGen/providers/{azure → pexels}/index.js +1 -1
- package/lib/services/aiGen/providers/pexels/pexels.service.d.ts +11 -0
- package/lib/services/aiGen/providers/pexels/pexels.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/pexels/pexels.service.js +150 -0
- package/lib/services/aiGen/providers/pixabay/index.d.ts +2 -0
- package/lib/services/aiGen/providers/pixabay/index.d.ts.map +1 -0
- package/lib/services/aiGen/providers/pixabay/index.js +17 -0
- package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts +12 -0
- package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/pixabay/pixabay.service.js +156 -0
- package/lib/services/aiGen/providers/pixverse/pixverse.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/pixverse/pixverse.service.js +125 -2
- package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts +3 -0
- package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts.map +1 -0
- package/lib/services/aiGen/providers/runway/cameraAdapter.js +46 -0
- package/lib/services/aiGen/providers/runway/runway.service.d.ts +12 -2
- package/lib/services/aiGen/providers/runway/runway.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/runway/runway.service.js +224 -21
- package/lib/services/aiGen/providers/types.d.ts +263 -6
- package/lib/services/aiGen/providers/types.d.ts.map +1 -1
- package/lib/services/aiGen/providers/unsplash/index.d.ts +2 -0
- package/lib/services/aiGen/providers/unsplash/index.d.ts.map +1 -0
- package/lib/services/aiGen/providers/unsplash/index.js +17 -0
- package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts +16 -0
- package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/unsplash/unsplash.service.js +131 -0
- package/lib/services/analytics.service.js +2 -4
- package/lib/services/apiUsageCounter.service.d.ts +20 -0
- package/lib/services/apiUsageCounter.service.d.ts.map +1 -0
- package/lib/services/apiUsageCounter.service.js +84 -0
- package/lib/services/asr/assemblyai.service.d.ts +72 -0
- package/lib/services/asr/assemblyai.service.d.ts.map +1 -0
- package/lib/services/asr/assemblyai.service.js +89 -0
- package/lib/services/asr/index.d.ts +3 -0
- package/lib/services/asr/index.d.ts.map +1 -0
- package/lib/services/asr/index.js +18 -0
- package/lib/services/asr/whisper.service.d.ts +18 -0
- package/lib/services/asr/whisper.service.d.ts.map +1 -0
- package/lib/services/asr/whisper.service.js +151 -0
- package/lib/services/assetCache.service.d.ts +54 -0
- package/lib/services/assetCache.service.d.ts.map +1 -0
- package/lib/services/assetCache.service.js +109 -0
- package/lib/services/audioAnalysis/index.d.ts +2 -0
- package/lib/services/audioAnalysis/index.d.ts.map +1 -0
- package/lib/services/audioAnalysis/index.js +17 -0
- package/lib/services/audioAnalysis/onsetDetection.service.d.ts +50 -0
- package/lib/services/audioAnalysis/onsetDetection.service.d.ts.map +1 -0
- package/lib/services/audioAnalysis/onsetDetection.service.js +140 -0
- package/lib/services/bullmq.service.d.ts +6 -1
- package/lib/services/bullmq.service.d.ts.map +1 -1
- package/lib/services/bullmq.service.js +62 -14
- package/lib/services/credit.service.d.ts.map +1 -1
- package/lib/services/credit.service.js +45 -7
- package/lib/services/credits/pricing.d.ts +58 -0
- package/lib/services/credits/pricing.d.ts.map +1 -0
- package/lib/services/credits/pricing.js +111 -0
- package/lib/services/editor/designToProject.d.ts +75 -0
- package/lib/services/editor/designToProject.d.ts.map +1 -0
- package/lib/services/editor/designToProject.js +295 -0
- package/lib/services/editor/planToProject.d.ts +84 -0
- package/lib/services/editor/planToProject.d.ts.map +1 -0
- package/lib/services/editor/planToProject.js +395 -0
- package/lib/services/editor/projectToDesign.d.ts +4 -0
- package/lib/services/editor/projectToDesign.d.ts.map +1 -0
- package/lib/services/editor/projectToDesign.js +186 -0
- package/lib/services/firestore.service.d.ts +17 -0
- package/lib/services/firestore.service.d.ts.map +1 -1
- package/lib/services/firestore.service.js +30 -0
- package/lib/services/gcp/index.d.ts +1 -0
- package/lib/services/gcp/index.d.ts.map +1 -1
- package/lib/services/gcp/index.js +1 -0
- package/lib/services/gcp/uploadAudioBuffer.d.ts +13 -0
- package/lib/services/gcp/uploadAudioBuffer.d.ts.map +1 -0
- package/lib/services/gcp/uploadAudioBuffer.js +28 -0
- package/lib/services/index.d.ts +13 -0
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/index.js +13 -0
- package/lib/services/musicGen/index.d.ts +6 -0
- package/lib/services/musicGen/index.d.ts.map +1 -0
- package/lib/services/musicGen/index.js +26 -0
- package/lib/services/musicGen/musicSearchFactory.service.d.ts +14 -0
- package/lib/services/musicGen/musicSearchFactory.service.d.ts.map +1 -0
- package/lib/services/musicGen/musicSearchFactory.service.js +59 -0
- package/lib/services/musicGen/providers/curated.service.d.ts +24 -0
- package/lib/services/musicGen/providers/curated.service.d.ts.map +1 -0
- package/lib/services/musicGen/providers/curated.service.js +173 -0
- package/lib/services/musicGen/providers/jamendo.service.d.ts +8 -0
- package/lib/services/musicGen/providers/jamendo.service.d.ts.map +1 -0
- package/lib/services/musicGen/providers/jamendo.service.js +113 -0
- package/lib/services/musicGen/providers/mubert.service.d.ts +10 -0
- package/lib/services/musicGen/providers/mubert.service.d.ts.map +1 -0
- package/lib/services/musicGen/providers/mubert.service.js +128 -0
- package/lib/services/musicGen/types.d.ts +46 -0
- package/lib/services/musicGen/types.d.ts.map +1 -0
- package/lib/services/musicGen/types.js +10 -0
- package/lib/services/notification.service.d.ts +22 -0
- package/lib/services/notification.service.d.ts.map +1 -0
- package/lib/services/notification.service.js +76 -0
- package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts +78 -0
- package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts.map +1 -0
- package/lib/services/rateLimiter/distributedRateLimiter.service.js +269 -0
- package/lib/services/rateLimiter/index.d.ts +2 -0
- package/lib/services/rateLimiter/index.d.ts.map +1 -0
- package/lib/services/rateLimiter/index.js +17 -0
- package/lib/services/redis.service.d.ts +9 -0
- package/lib/services/redis.service.d.ts.map +1 -1
- package/lib/services/redis.service.js +20 -11
- package/lib/services/redisOptions.d.ts +22 -0
- package/lib/services/redisOptions.d.ts.map +1 -0
- package/lib/services/redisOptions.js +51 -0
- package/lib/services/tts/index.d.ts +2 -0
- package/lib/services/tts/index.d.ts.map +1 -1
- package/lib/services/tts/index.js +2 -0
- package/lib/services/tts/providers/elevenlabs.service.d.ts.map +1 -1
- package/lib/services/tts/providers/elevenlabs.service.js +91 -24
- package/lib/services/tts/providers/minimax.service.d.ts +14 -0
- package/lib/services/tts/providers/minimax.service.d.ts.map +1 -0
- package/lib/services/tts/providers/minimax.service.js +78 -0
- package/lib/services/tts/providers/openai.service.d.ts +14 -0
- package/lib/services/tts/providers/openai.service.d.ts.map +1 -0
- package/lib/services/tts/providers/openai.service.js +73 -0
- package/lib/services/tts/ttsFactory.service.d.ts.map +1 -1
- package/lib/services/tts/ttsFactory.service.js +6 -0
- package/lib/services/tts/types.d.ts +33 -0
- package/lib/services/tts/types.d.ts.map +1 -1
- package/lib/utils/errors.d.ts +8 -0
- package/lib/utils/errors.d.ts.map +1 -1
- package/lib/utils/errors.js +8 -0
- package/lib/utils/helpers.d.ts +13 -0
- package/lib/utils/helpers.d.ts.map +1 -1
- package/lib/utils/helpers.js +48 -11
- package/lib/utils/logger.d.ts.map +1 -1
- package/lib/utils/logger.js +37 -1
- package/package.json +5 -1
- package/lib/services/aiGen/providers/azure/azure.service.d.ts +0 -14
- package/lib/services/aiGen/providers/azure/azure.service.d.ts.map +0 -1
- package/lib/services/aiGen/providers/azure/azure.service.js +0 -108
- package/lib/services/aiGen/providers/azure/index.d.ts +0 -2
- package/lib/services/aiGen/providers/azure/index.d.ts.map +0 -1
|
@@ -0,0 +1,1188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SEED_EVAL_BRIEFS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Eval set — 50 hand-curated briefs covering the 5 launch personas plus
|
|
6
|
+
* adjacent niches that should route to the closest persona (e.g. recipe →
|
|
7
|
+
* faceless-yt, real-estate → product-demo).
|
|
8
|
+
*
|
|
9
|
+
* Use these to:
|
|
10
|
+
* 1. Catch routing regressions (router persona !== expected niche).
|
|
11
|
+
* 2. Catch planner regressions (tier mix, schema validity, scene count).
|
|
12
|
+
* 3. Score quality drift after prompt / model / rubric changes.
|
|
13
|
+
*
|
|
14
|
+
* Add new briefs alongside the change that needs them; do not bulk-grow
|
|
15
|
+
* without a reason — every brief costs 4 LLM calls per run.
|
|
16
|
+
*/
|
|
17
|
+
exports.SEED_EVAL_BRIEFS = [
|
|
18
|
+
// ───────────────────────── ugc-ad (5) ─────────────────────────
|
|
19
|
+
{
|
|
20
|
+
id: "seed-ugc-skincare",
|
|
21
|
+
niche: "ugc-ad",
|
|
22
|
+
goodOutputNotes: [
|
|
23
|
+
"First 6s must hook with a problem statement (skin issue) before the product reveal.",
|
|
24
|
+
"Vertical 9:16, fast cuts (>1 cut/2s after hook). Female 25-35 voice, warm + confident.",
|
|
25
|
+
"Avoid medical claims. End with a single-sentence CTA + product name on screen.",
|
|
26
|
+
].join(" "),
|
|
27
|
+
brief: {
|
|
28
|
+
goal: "Drive add-to-cart for new vitamin C serum",
|
|
29
|
+
audience: "Women 25-40 interested in clean skincare",
|
|
30
|
+
niche: "ugc-ad",
|
|
31
|
+
tone: "warm",
|
|
32
|
+
durationSec: 30,
|
|
33
|
+
aspect: "9:16",
|
|
34
|
+
hookStyle: "pattern-interrupt",
|
|
35
|
+
pacing: "fast",
|
|
36
|
+
tierBudget: "T2",
|
|
37
|
+
rawPrompt: "30s UGC ad for our new vitamin C serum, vertical, fast cuts, hook then product",
|
|
38
|
+
claims: { allow: ["visibly brighter"], block: ["cures", "treats acne"] },
|
|
39
|
+
references: [],
|
|
40
|
+
confidence: { goal: 0.9, audience: 0.7, tone: 0.6 },
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: "seed-ugc-supplements",
|
|
45
|
+
niche: "ugc-ad",
|
|
46
|
+
goodOutputNotes: [
|
|
47
|
+
"Open with a relatable energy-slump moment in first 3s, not the bottle.",
|
|
48
|
+
"9:16, energetic VO, no medical efficacy claims, end card with discount code.",
|
|
49
|
+
].join(" "),
|
|
50
|
+
brief: {
|
|
51
|
+
goal: "Promote new daily greens powder with code GREEN15",
|
|
52
|
+
audience: "Busy professionals 28-45",
|
|
53
|
+
niche: "ugc-ad",
|
|
54
|
+
tone: "energetic",
|
|
55
|
+
durationSec: 30,
|
|
56
|
+
aspect: "9:16",
|
|
57
|
+
hookStyle: "story",
|
|
58
|
+
pacing: "fast",
|
|
59
|
+
tierBudget: "T2",
|
|
60
|
+
rawPrompt: "30s vertical ad for daily greens powder, hook with afternoon slump, end with GREEN15",
|
|
61
|
+
cta: "Use code GREEN15 for 15% off",
|
|
62
|
+
claims: {
|
|
63
|
+
allow: ["supports daily energy"],
|
|
64
|
+
block: ["cures fatigue", "clinically proven", "doctor recommended"],
|
|
65
|
+
},
|
|
66
|
+
references: [],
|
|
67
|
+
confidence: { goal: 0.9, tone: 0.7 },
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "seed-ugc-beauty-tool",
|
|
72
|
+
niche: "ugc-ad",
|
|
73
|
+
goodOutputNotes: [
|
|
74
|
+
"Demo-style with the tool in-use shot in first 5s, multiple angles, fast cuts.",
|
|
75
|
+
"9:16. Avoid before/after dramatization that implies treatment.",
|
|
76
|
+
].join(" "),
|
|
77
|
+
brief: {
|
|
78
|
+
goal: "Drive Black Friday sales for at-home red-light wand",
|
|
79
|
+
audience: "Women 30-55 into beauty tech",
|
|
80
|
+
niche: "ugc-ad",
|
|
81
|
+
tone: "playful",
|
|
82
|
+
durationSec: 25,
|
|
83
|
+
aspect: "9:16",
|
|
84
|
+
hookStyle: "demo",
|
|
85
|
+
pacing: "fast",
|
|
86
|
+
tierBudget: "T2",
|
|
87
|
+
rawPrompt: "25s UGC ad for red-light beauty wand, demo-heavy, Black Friday CTA",
|
|
88
|
+
cta: "Black Friday — 40% off ends Friday",
|
|
89
|
+
claims: { allow: [], block: ["FDA approved", "treats wrinkles"] },
|
|
90
|
+
references: [],
|
|
91
|
+
confidence: { goal: 0.85 },
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: "seed-ugc-fashion",
|
|
96
|
+
niche: "ugc-ad",
|
|
97
|
+
goodOutputNotes: [
|
|
98
|
+
"Try-on haul style: 3-4 outfit changes, beat-cut transitions, Gen-Z tone.",
|
|
99
|
+
"9:16. Pattern-interrupt hook. No fit-vs-body-type claims.",
|
|
100
|
+
].join(" "),
|
|
101
|
+
brief: {
|
|
102
|
+
goal: "Promote autumn drop of layered knitwear",
|
|
103
|
+
audience: "Women 18-28 fashion-forward",
|
|
104
|
+
niche: "ugc-ad",
|
|
105
|
+
tone: "playful",
|
|
106
|
+
durationSec: 30,
|
|
107
|
+
aspect: "9:16",
|
|
108
|
+
hookStyle: "pattern-interrupt",
|
|
109
|
+
pacing: "very-fast",
|
|
110
|
+
tierBudget: "T2",
|
|
111
|
+
rawPrompt: "30s try-on haul ad for autumn knitwear drop, beat cuts, gen-z energy",
|
|
112
|
+
claims: { allow: [], block: [] },
|
|
113
|
+
references: [],
|
|
114
|
+
confidence: { goal: 0.9, audience: 0.8 },
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
id: "seed-ugc-fitness-apparel",
|
|
119
|
+
niche: "ugc-ad",
|
|
120
|
+
goodOutputNotes: [
|
|
121
|
+
"Show garment in motion (squat, run, stretch) within first 6s.",
|
|
122
|
+
"9:16, energetic music, claim-safe (no body-shape transformation promises).",
|
|
123
|
+
].join(" "),
|
|
124
|
+
brief: {
|
|
125
|
+
goal: "Launch new high-rise leggings with squat-proof claim",
|
|
126
|
+
audience: "Women 22-35 gym-goers",
|
|
127
|
+
niche: "ugc-ad",
|
|
128
|
+
tone: "energetic",
|
|
129
|
+
durationSec: 25,
|
|
130
|
+
aspect: "9:16",
|
|
131
|
+
hookStyle: "demo",
|
|
132
|
+
pacing: "fast",
|
|
133
|
+
tierBudget: "T2",
|
|
134
|
+
rawPrompt: "25s ad for squat-proof high-rise leggings, motion-heavy demo",
|
|
135
|
+
claims: { allow: ["squat-proof"], block: ["sculpts your body", "burns fat"] },
|
|
136
|
+
references: [],
|
|
137
|
+
confidence: { goal: 0.9 },
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
// ──────────────────────── faceless-yt (5) ────────────────────────
|
|
141
|
+
{
|
|
142
|
+
id: "seed-faceless-yt-finance",
|
|
143
|
+
niche: "faceless-yt",
|
|
144
|
+
goodOutputNotes: [
|
|
145
|
+
"60s. Educational tone. Stock b-roll + Ken-Burns over voiceover. 16:9.",
|
|
146
|
+
"First 8s sets a counter-intuitive premise. Captions burned in.",
|
|
147
|
+
"Cost target: <$0.10 generation; this should be mostly T0.",
|
|
148
|
+
].join(" "),
|
|
149
|
+
brief: {
|
|
150
|
+
goal: "Explain why index funds beat 90% of active managers",
|
|
151
|
+
audience: "Beginner retail investors",
|
|
152
|
+
niche: "faceless-yt",
|
|
153
|
+
tone: "informational",
|
|
154
|
+
durationSec: 60,
|
|
155
|
+
aspect: "16:9",
|
|
156
|
+
hookStyle: "bold-claim",
|
|
157
|
+
pacing: "medium",
|
|
158
|
+
tierBudget: "T0",
|
|
159
|
+
rawPrompt: "60-second faceless YouTube explainer on why index funds beat active managers",
|
|
160
|
+
claims: { allow: [], block: ["guaranteed returns", "financial advice"] },
|
|
161
|
+
references: [],
|
|
162
|
+
confidence: { goal: 0.95, audience: 0.8 },
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
id: "seed-faceless-yt-tech",
|
|
167
|
+
niche: "faceless-yt",
|
|
168
|
+
goodOutputNotes: [
|
|
169
|
+
"60-90s. Plain-English explainer of how an LLM works. Diagram-style stills + Ken-Burns.",
|
|
170
|
+
"Mostly T0. No anthropomorphic 'AI is conscious' claims.",
|
|
171
|
+
].join(" "),
|
|
172
|
+
brief: {
|
|
173
|
+
goal: "Explain how large language models predict the next word",
|
|
174
|
+
audience: "Curious adults non-technical",
|
|
175
|
+
niche: "faceless-yt",
|
|
176
|
+
tone: "informational",
|
|
177
|
+
durationSec: 75,
|
|
178
|
+
aspect: "16:9",
|
|
179
|
+
hookStyle: "question",
|
|
180
|
+
pacing: "medium",
|
|
181
|
+
tierBudget: "T0",
|
|
182
|
+
rawPrompt: "75s explainer on how LLMs predict the next word, plain English, stock visuals",
|
|
183
|
+
claims: { allow: [], block: ["AI is sentient", "AI will replace all jobs"] },
|
|
184
|
+
references: [],
|
|
185
|
+
confidence: { goal: 0.9 },
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
id: "seed-faceless-yt-history",
|
|
190
|
+
niche: "faceless-yt",
|
|
191
|
+
goodOutputNotes: [
|
|
192
|
+
"90s mini-doc. Period-appropriate stock images + map animations.",
|
|
193
|
+
"Cinematic tone. T0/T1 only — no T2/T3 generation.",
|
|
194
|
+
].join(" "),
|
|
195
|
+
brief: {
|
|
196
|
+
goal: "Tell the story of why the Concorde retired in 90 seconds",
|
|
197
|
+
audience: "Aviation enthusiasts general public",
|
|
198
|
+
niche: "faceless-yt",
|
|
199
|
+
tone: "cinematic",
|
|
200
|
+
durationSec: 90,
|
|
201
|
+
aspect: "16:9",
|
|
202
|
+
hookStyle: "story",
|
|
203
|
+
pacing: "medium",
|
|
204
|
+
tierBudget: "T1",
|
|
205
|
+
rawPrompt: "90-second mini-doc on Concorde retirement, cinematic stock footage",
|
|
206
|
+
claims: { allow: [], block: [] },
|
|
207
|
+
references: [],
|
|
208
|
+
confidence: { goal: 0.95 },
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
id: "seed-faceless-yt-productivity",
|
|
213
|
+
niche: "faceless-yt",
|
|
214
|
+
goodOutputNotes: [
|
|
215
|
+
"60s. Listicle of 5 tips, on-screen text per tip, fast pace.",
|
|
216
|
+
"16:9, mostly T0 stock of office / focused-work scenes.",
|
|
217
|
+
].join(" "),
|
|
218
|
+
brief: {
|
|
219
|
+
goal: "Share 5 productivity tips backed by behavioural research",
|
|
220
|
+
audience: "Knowledge workers 25-45",
|
|
221
|
+
niche: "faceless-yt",
|
|
222
|
+
tone: "informational",
|
|
223
|
+
durationSec: 60,
|
|
224
|
+
aspect: "16:9",
|
|
225
|
+
hookStyle: "stat",
|
|
226
|
+
pacing: "medium",
|
|
227
|
+
tierBudget: "T0",
|
|
228
|
+
rawPrompt: "60s listicle 5 productivity tips, research-backed, faceless",
|
|
229
|
+
claims: { allow: [], block: ["scientifically proven"] },
|
|
230
|
+
references: [],
|
|
231
|
+
confidence: { goal: 0.9 },
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
id: "seed-faceless-yt-science",
|
|
236
|
+
niche: "faceless-yt",
|
|
237
|
+
goodOutputNotes: [
|
|
238
|
+
"45s. Surprising-fact opener. Diagram-led pace.",
|
|
239
|
+
"16:9, T0. Avoid declarative claims that aren't well-established.",
|
|
240
|
+
].join(" "),
|
|
241
|
+
brief: {
|
|
242
|
+
goal: "Explain why the sky is actually violet but we see it blue",
|
|
243
|
+
audience: "Curious teens and adults",
|
|
244
|
+
niche: "faceless-yt",
|
|
245
|
+
tone: "informational",
|
|
246
|
+
durationSec: 45,
|
|
247
|
+
aspect: "16:9",
|
|
248
|
+
hookStyle: "bold-claim",
|
|
249
|
+
pacing: "medium",
|
|
250
|
+
tierBudget: "T0",
|
|
251
|
+
rawPrompt: "45s science explainer on why the sky looks blue but is violet",
|
|
252
|
+
claims: { allow: [], block: [] },
|
|
253
|
+
references: [],
|
|
254
|
+
confidence: { goal: 0.9 },
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
// ─────────────────────── product-demo (5) ───────────────────────
|
|
258
|
+
{
|
|
259
|
+
id: "seed-product-demo-ecom",
|
|
260
|
+
niche: "product-demo",
|
|
261
|
+
goodOutputNotes: [
|
|
262
|
+
"20s. Hero product shot in first 3s. T2 image-to-video for the hero, T0 b-roll between.",
|
|
263
|
+
"Square 1:1. Background music ducked under VO. End-card with logo + CTA.",
|
|
264
|
+
].join(" "),
|
|
265
|
+
brief: {
|
|
266
|
+
goal: "Show the wireless earbuds' noise-cancelling in 20s",
|
|
267
|
+
audience: "Commuters age 22-35",
|
|
268
|
+
niche: "product-demo",
|
|
269
|
+
tone: "energetic",
|
|
270
|
+
durationSec: 20,
|
|
271
|
+
aspect: "1:1",
|
|
272
|
+
hookStyle: "demo",
|
|
273
|
+
pacing: "fast",
|
|
274
|
+
tierBudget: "T2",
|
|
275
|
+
rawPrompt: "20s product demo for noise-cancelling wireless earbuds, square, hero shot first",
|
|
276
|
+
claims: { allow: [], block: [] },
|
|
277
|
+
references: [],
|
|
278
|
+
confidence: { goal: 0.95 },
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
id: "seed-product-demo-kitchen",
|
|
283
|
+
niche: "product-demo",
|
|
284
|
+
goodOutputNotes: [
|
|
285
|
+
"25s. Hero shot of gadget in use, then 2-3 ingredient cuts, then end card.",
|
|
286
|
+
"Square 1:1. Warm food-tone palette.",
|
|
287
|
+
].join(" "),
|
|
288
|
+
brief: {
|
|
289
|
+
goal: "Show the new electric salt mill on Amazon",
|
|
290
|
+
audience: "Home cooks 30-55",
|
|
291
|
+
niche: "product-demo",
|
|
292
|
+
tone: "warm",
|
|
293
|
+
durationSec: 25,
|
|
294
|
+
aspect: "1:1",
|
|
295
|
+
hookStyle: "demo",
|
|
296
|
+
pacing: "medium",
|
|
297
|
+
tierBudget: "T2",
|
|
298
|
+
rawPrompt: "25s product demo for an electric salt mill, square, kitchen scenes",
|
|
299
|
+
cta: "Shop on Amazon",
|
|
300
|
+
claims: { allow: [], block: [] },
|
|
301
|
+
references: [],
|
|
302
|
+
confidence: { goal: 0.9 },
|
|
303
|
+
},
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
id: "seed-product-demo-tech-accessory",
|
|
307
|
+
niche: "product-demo",
|
|
308
|
+
goodOutputNotes: [
|
|
309
|
+
"20s. Reveal-style: closed-box → unbox → in-use → on-desk shot.",
|
|
310
|
+
"Square. Energetic. Avoid superlatives like 'best ever'.",
|
|
311
|
+
].join(" "),
|
|
312
|
+
brief: {
|
|
313
|
+
goal: "Demo a magnetic phone tripod for content creators",
|
|
314
|
+
audience: "Solo creators 18-30",
|
|
315
|
+
niche: "product-demo",
|
|
316
|
+
tone: "energetic",
|
|
317
|
+
durationSec: 20,
|
|
318
|
+
aspect: "1:1",
|
|
319
|
+
hookStyle: "demo",
|
|
320
|
+
pacing: "fast",
|
|
321
|
+
tierBudget: "T2",
|
|
322
|
+
rawPrompt: "20s demo for magnetic phone tripod, unbox-to-use sequence, square",
|
|
323
|
+
claims: { allow: [], block: ["best ever", "professional grade"] },
|
|
324
|
+
references: [],
|
|
325
|
+
confidence: { goal: 0.95 },
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
id: "seed-product-demo-smart-home",
|
|
330
|
+
niche: "product-demo",
|
|
331
|
+
goodOutputNotes: [
|
|
332
|
+
"30s. Hero close-up + 3 use-case cuts (morning / evening / away).",
|
|
333
|
+
"Square. T2 for hero, T0/T1 for context shots.",
|
|
334
|
+
].join(" "),
|
|
335
|
+
brief: {
|
|
336
|
+
goal: "Demo the new smart bulb scenes feature",
|
|
337
|
+
audience: "Smart-home shoppers 28-50",
|
|
338
|
+
niche: "product-demo",
|
|
339
|
+
tone: "calm",
|
|
340
|
+
durationSec: 30,
|
|
341
|
+
aspect: "1:1",
|
|
342
|
+
hookStyle: "demo",
|
|
343
|
+
pacing: "medium",
|
|
344
|
+
tierBudget: "T2",
|
|
345
|
+
rawPrompt: "30s product demo of smart bulb scenes feature, lifestyle context cuts",
|
|
346
|
+
claims: { allow: [], block: [] },
|
|
347
|
+
references: [],
|
|
348
|
+
confidence: { goal: 0.9 },
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
id: "seed-product-demo-beauty",
|
|
353
|
+
niche: "product-demo",
|
|
354
|
+
goodOutputNotes: [
|
|
355
|
+
"20s. Applicator hero shot, ASMR-ish texture cuts, end card.",
|
|
356
|
+
"Square. No medical claims; cosmetic language only.",
|
|
357
|
+
].join(" "),
|
|
358
|
+
brief: {
|
|
359
|
+
goal: "Demo a silicone facial cleansing brush",
|
|
360
|
+
audience: "Skincare buyers 22-40",
|
|
361
|
+
niche: "product-demo",
|
|
362
|
+
tone: "calm",
|
|
363
|
+
durationSec: 20,
|
|
364
|
+
aspect: "1:1",
|
|
365
|
+
hookStyle: "demo",
|
|
366
|
+
pacing: "medium",
|
|
367
|
+
tierBudget: "T2",
|
|
368
|
+
rawPrompt: "20s demo for silicone cleansing brush, ASMR texture, square",
|
|
369
|
+
claims: { allow: ["gently exfoliates"], block: ["cures acne", "treats"] },
|
|
370
|
+
references: [],
|
|
371
|
+
confidence: { goal: 0.9 },
|
|
372
|
+
},
|
|
373
|
+
},
|
|
374
|
+
// ─────────────────────── talking-head (5) ───────────────────────
|
|
375
|
+
{
|
|
376
|
+
id: "seed-talking-head-educator",
|
|
377
|
+
niche: "talking-head",
|
|
378
|
+
goodOutputNotes: [
|
|
379
|
+
"45s. Question-led hook. Presenter on-screen with b-roll cutaways every ~10s.",
|
|
380
|
+
"16:9. Avoid clickbait claims. No talking-head-avatar strategy — use stock presenter or AI image-to-video.",
|
|
381
|
+
].join(" "),
|
|
382
|
+
brief: {
|
|
383
|
+
goal: "Explain compound interest in 45 seconds for teens",
|
|
384
|
+
audience: "Teens learning personal finance",
|
|
385
|
+
niche: "talking-head",
|
|
386
|
+
tone: "professional",
|
|
387
|
+
durationSec: 45,
|
|
388
|
+
aspect: "16:9",
|
|
389
|
+
hookStyle: "question",
|
|
390
|
+
pacing: "medium",
|
|
391
|
+
tierBudget: "T1",
|
|
392
|
+
rawPrompt: "45s talking-head educator video on compound interest for teens",
|
|
393
|
+
claims: { allow: [], block: ["financial advice", "guaranteed"] },
|
|
394
|
+
references: [],
|
|
395
|
+
confidence: { goal: 0.9 },
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
id: "seed-talking-head-founder",
|
|
400
|
+
niche: "talking-head",
|
|
401
|
+
goodOutputNotes: [
|
|
402
|
+
"60s. Founder narrative arc: problem → insight → product. Cutaways to product/usage shots.",
|
|
403
|
+
"16:9, professional tone. T1 b-roll OK.",
|
|
404
|
+
].join(" "),
|
|
405
|
+
brief: {
|
|
406
|
+
goal: "Founder intro for a sustainable bag brand",
|
|
407
|
+
audience: "Conscious consumers 25-45",
|
|
408
|
+
niche: "talking-head",
|
|
409
|
+
tone: "warm",
|
|
410
|
+
durationSec: 60,
|
|
411
|
+
aspect: "16:9",
|
|
412
|
+
hookStyle: "story",
|
|
413
|
+
pacing: "medium",
|
|
414
|
+
tierBudget: "T1",
|
|
415
|
+
rawPrompt: "60s founder talking-head intro for a sustainable bag brand",
|
|
416
|
+
claims: { allow: ["plant-based materials"], block: ["100% biodegradable"] },
|
|
417
|
+
references: [],
|
|
418
|
+
confidence: { goal: 0.9 },
|
|
419
|
+
},
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
id: "seed-talking-head-career",
|
|
423
|
+
niche: "talking-head",
|
|
424
|
+
goodOutputNotes: [
|
|
425
|
+
"50s. One actionable career-tip per ~15s. Cutaways to office/laptop b-roll.",
|
|
426
|
+
"16:9. T0/T1.",
|
|
427
|
+
].join(" "),
|
|
428
|
+
brief: {
|
|
429
|
+
goal: "Share 3 negotiation tips for first-time job offers",
|
|
430
|
+
audience: "Recent grads 22-26",
|
|
431
|
+
niche: "talking-head",
|
|
432
|
+
tone: "professional",
|
|
433
|
+
durationSec: 50,
|
|
434
|
+
aspect: "16:9",
|
|
435
|
+
hookStyle: "question",
|
|
436
|
+
pacing: "medium",
|
|
437
|
+
tierBudget: "T1",
|
|
438
|
+
rawPrompt: "50s talking-head career-advice on first-job-offer negotiation, 3 tips",
|
|
439
|
+
claims: { allow: [], block: [] },
|
|
440
|
+
references: [],
|
|
441
|
+
confidence: { goal: 0.9 },
|
|
442
|
+
},
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
id: "seed-talking-head-language",
|
|
446
|
+
niche: "talking-head",
|
|
447
|
+
goodOutputNotes: [
|
|
448
|
+
"40s. On-screen presenter teaches 3 Spanish phrases with text overlay each.",
|
|
449
|
+
"16:9, friendly tone, T0/T1.",
|
|
450
|
+
].join(" "),
|
|
451
|
+
brief: {
|
|
452
|
+
goal: "Teach 3 useful Spanish café phrases",
|
|
453
|
+
audience: "English speakers travelling to Spain",
|
|
454
|
+
niche: "talking-head",
|
|
455
|
+
tone: "casual",
|
|
456
|
+
durationSec: 40,
|
|
457
|
+
aspect: "16:9",
|
|
458
|
+
hookStyle: "question",
|
|
459
|
+
pacing: "medium",
|
|
460
|
+
tierBudget: "T1",
|
|
461
|
+
rawPrompt: "40s talking-head Spanish lesson, 3 café phrases for travellers",
|
|
462
|
+
claims: { allow: [], block: [] },
|
|
463
|
+
references: [],
|
|
464
|
+
confidence: { goal: 0.95 },
|
|
465
|
+
},
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
id: "seed-talking-head-coach",
|
|
469
|
+
niche: "talking-head",
|
|
470
|
+
goodOutputNotes: [
|
|
471
|
+
"60s. Coach explains common form mistake with cutaways to demo.",
|
|
472
|
+
"16:9. No medical/injury-treatment claims; technique guidance only.",
|
|
473
|
+
].join(" "),
|
|
474
|
+
brief: {
|
|
475
|
+
goal: "Coach explains the most common deadlift form mistake",
|
|
476
|
+
audience: "Beginner lifters 20-40",
|
|
477
|
+
niche: "talking-head",
|
|
478
|
+
tone: "professional",
|
|
479
|
+
durationSec: 60,
|
|
480
|
+
aspect: "16:9",
|
|
481
|
+
hookStyle: "question",
|
|
482
|
+
pacing: "medium",
|
|
483
|
+
tierBudget: "T1",
|
|
484
|
+
rawPrompt: "60s talking-head coach video on the #1 deadlift form mistake",
|
|
485
|
+
claims: { allow: [], block: ["prevents injury", "doctor approved"] },
|
|
486
|
+
references: [],
|
|
487
|
+
confidence: { goal: 0.95 },
|
|
488
|
+
},
|
|
489
|
+
},
|
|
490
|
+
// ─────────────────────── social-recap (5) ───────────────────────
|
|
491
|
+
{
|
|
492
|
+
id: "seed-social-recap-sports",
|
|
493
|
+
niche: "social-recap",
|
|
494
|
+
goodOutputNotes: [
|
|
495
|
+
"30s. Beat-cut on 120 BPM track. 6-8 stock highlight clips with on-screen score chyrons.",
|
|
496
|
+
"9:16. Mostly T0.",
|
|
497
|
+
].join(" "),
|
|
498
|
+
brief: {
|
|
499
|
+
goal: "Recap the top moments of last weekend's Premier League round",
|
|
500
|
+
audience: "Football fans 18-40",
|
|
501
|
+
niche: "social-recap",
|
|
502
|
+
tone: "energetic",
|
|
503
|
+
durationSec: 30,
|
|
504
|
+
aspect: "9:16",
|
|
505
|
+
hookStyle: "stat",
|
|
506
|
+
pacing: "very-fast",
|
|
507
|
+
tierBudget: "T0",
|
|
508
|
+
rawPrompt: "30s vertical Premier League weekend recap, beat cuts, score chyrons",
|
|
509
|
+
claims: { allow: [], block: [] },
|
|
510
|
+
references: [],
|
|
511
|
+
confidence: { goal: 0.95 },
|
|
512
|
+
},
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
id: "seed-social-recap-news",
|
|
516
|
+
niche: "social-recap",
|
|
517
|
+
goodOutputNotes: [
|
|
518
|
+
"30s. News-style headline-by-headline pace. 4 stories, 7s each, on-screen text.",
|
|
519
|
+
"9:16. T0 only.",
|
|
520
|
+
].join(" "),
|
|
521
|
+
brief: {
|
|
522
|
+
goal: "Recap today's top 4 tech-industry headlines",
|
|
523
|
+
audience: "Tech-curious 25-45",
|
|
524
|
+
niche: "social-recap",
|
|
525
|
+
tone: "informational",
|
|
526
|
+
durationSec: 30,
|
|
527
|
+
aspect: "9:16",
|
|
528
|
+
hookStyle: "stat",
|
|
529
|
+
pacing: "very-fast",
|
|
530
|
+
tierBudget: "T0",
|
|
531
|
+
rawPrompt: "30s vertical news recap of today's top 4 tech headlines",
|
|
532
|
+
claims: { allow: [], block: [] },
|
|
533
|
+
references: [],
|
|
534
|
+
confidence: { goal: 0.95 },
|
|
535
|
+
},
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
id: "seed-social-recap-listicle",
|
|
539
|
+
niche: "social-recap",
|
|
540
|
+
goodOutputNotes: [
|
|
541
|
+
"20s. 5 quick items on-screen text + b-roll. Fast hook with the punchline up front.",
|
|
542
|
+
"9:16, T0.",
|
|
543
|
+
].join(" "),
|
|
544
|
+
brief: {
|
|
545
|
+
goal: "5 underrated travel destinations in Europe",
|
|
546
|
+
audience: "Millennial travellers",
|
|
547
|
+
niche: "social-recap",
|
|
548
|
+
tone: "playful",
|
|
549
|
+
durationSec: 20,
|
|
550
|
+
aspect: "9:16",
|
|
551
|
+
hookStyle: "stat",
|
|
552
|
+
pacing: "very-fast",
|
|
553
|
+
tierBudget: "T0",
|
|
554
|
+
rawPrompt: "20s vertical listicle: 5 underrated European destinations",
|
|
555
|
+
claims: { allow: [], block: [] },
|
|
556
|
+
references: [],
|
|
557
|
+
confidence: { goal: 0.95 },
|
|
558
|
+
},
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
id: "seed-social-recap-music",
|
|
562
|
+
niche: "social-recap",
|
|
563
|
+
goodOutputNotes: [
|
|
564
|
+
"30s. Festival recap energy: cuts on the drop, on-screen artist names.",
|
|
565
|
+
"9:16, T0 stock concert footage; no impersonation of specific artists.",
|
|
566
|
+
].join(" "),
|
|
567
|
+
brief: {
|
|
568
|
+
goal: "Recap the headliners from a fictional summer music festival",
|
|
569
|
+
audience: "Music fans 18-30",
|
|
570
|
+
niche: "social-recap",
|
|
571
|
+
tone: "energetic",
|
|
572
|
+
durationSec: 30,
|
|
573
|
+
aspect: "9:16",
|
|
574
|
+
hookStyle: "pattern-interrupt",
|
|
575
|
+
pacing: "very-fast",
|
|
576
|
+
tierBudget: "T0",
|
|
577
|
+
rawPrompt: "30s vertical festival recap with beat cuts and headliner chyrons",
|
|
578
|
+
claims: { allow: [], block: [] },
|
|
579
|
+
references: [],
|
|
580
|
+
confidence: { goal: 0.9 },
|
|
581
|
+
},
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
id: "seed-social-recap-gaming",
|
|
585
|
+
niche: "social-recap",
|
|
586
|
+
goodOutputNotes: [
|
|
587
|
+
"25s. Highlight-reel feel: 5 plays, 5s each, on-screen player names.",
|
|
588
|
+
"9:16, T0.",
|
|
589
|
+
].join(" "),
|
|
590
|
+
brief: {
|
|
591
|
+
goal: "Recap the top 5 plays from this week's e-sports tournament",
|
|
592
|
+
audience: "Gamers 16-30",
|
|
593
|
+
niche: "social-recap",
|
|
594
|
+
tone: "energetic",
|
|
595
|
+
durationSec: 25,
|
|
596
|
+
aspect: "9:16",
|
|
597
|
+
hookStyle: "stat",
|
|
598
|
+
pacing: "very-fast",
|
|
599
|
+
tierBudget: "T0",
|
|
600
|
+
rawPrompt: "25s vertical recap of top 5 e-sports plays this week",
|
|
601
|
+
claims: { allow: [], block: [] },
|
|
602
|
+
references: [],
|
|
603
|
+
confidence: { goal: 0.9 },
|
|
604
|
+
},
|
|
605
|
+
},
|
|
606
|
+
// ──────── adjacent niches (route to nearest persona) ────────
|
|
607
|
+
// real-estate (5) → product-demo or talking-head
|
|
608
|
+
{
|
|
609
|
+
id: "seed-real-estate-listing",
|
|
610
|
+
niche: "real-estate",
|
|
611
|
+
goodOutputNotes: [
|
|
612
|
+
"30s. Curb-appeal hero shot, 4-5 interior cuts, neighbourhood B-roll.",
|
|
613
|
+
"Either 1:1 or 16:9. Calm pacing. No 'investment guaranteed' claims.",
|
|
614
|
+
].join(" "),
|
|
615
|
+
brief: {
|
|
616
|
+
goal: "Listing video for a 3-bed family home in Austin",
|
|
617
|
+
audience: "Home buyers 30-50",
|
|
618
|
+
niche: "real-estate",
|
|
619
|
+
tone: "warm",
|
|
620
|
+
durationSec: 30,
|
|
621
|
+
aspect: "16:9",
|
|
622
|
+
hookStyle: "demo",
|
|
623
|
+
pacing: "medium",
|
|
624
|
+
tierBudget: "T1",
|
|
625
|
+
rawPrompt: "30s listing video for a 3-bed Austin family home",
|
|
626
|
+
claims: { allow: [], block: ["guaranteed appreciation", "investment"] },
|
|
627
|
+
references: [],
|
|
628
|
+
confidence: { goal: 0.9 },
|
|
629
|
+
},
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
id: "seed-real-estate-neighbourhood",
|
|
633
|
+
niche: "real-estate",
|
|
634
|
+
goodOutputNotes: [
|
|
635
|
+
"60s. Neighbourhood spotlight: parks, cafés, schools. Stock+image+motion.",
|
|
636
|
+
"16:9. Friendly informative tone.",
|
|
637
|
+
].join(" "),
|
|
638
|
+
brief: {
|
|
639
|
+
goal: "Spotlight the Highland Park neighbourhood for buyers",
|
|
640
|
+
audience: "Relocating families",
|
|
641
|
+
niche: "real-estate",
|
|
642
|
+
tone: "warm",
|
|
643
|
+
durationSec: 60,
|
|
644
|
+
aspect: "16:9",
|
|
645
|
+
hookStyle: "story",
|
|
646
|
+
pacing: "medium",
|
|
647
|
+
tierBudget: "T1",
|
|
648
|
+
rawPrompt: "60s real-estate neighbourhood spotlight for Highland Park",
|
|
649
|
+
claims: { allow: [], block: [] },
|
|
650
|
+
references: [],
|
|
651
|
+
confidence: { goal: 0.9 },
|
|
652
|
+
},
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
id: "seed-real-estate-market-update",
|
|
656
|
+
niche: "real-estate",
|
|
657
|
+
goodOutputNotes: [
|
|
658
|
+
"45s. Educational tone, charts/data b-roll, agent voiceover.",
|
|
659
|
+
"16:9. Disclaim that figures are illustrative.",
|
|
660
|
+
].join(" "),
|
|
661
|
+
brief: {
|
|
662
|
+
goal: "Quarterly market update for downtown Miami condos",
|
|
663
|
+
audience: "Condo investors 35-65",
|
|
664
|
+
niche: "real-estate",
|
|
665
|
+
tone: "professional",
|
|
666
|
+
durationSec: 45,
|
|
667
|
+
aspect: "16:9",
|
|
668
|
+
hookStyle: "stat",
|
|
669
|
+
pacing: "medium",
|
|
670
|
+
tierBudget: "T0",
|
|
671
|
+
rawPrompt: "45s quarterly Miami condo market update with charts and data",
|
|
672
|
+
claims: { allow: [], block: ["guaranteed returns", "always appreciates"] },
|
|
673
|
+
references: [],
|
|
674
|
+
confidence: { goal: 0.9 },
|
|
675
|
+
},
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
id: "seed-real-estate-agent-intro",
|
|
679
|
+
niche: "real-estate",
|
|
680
|
+
goodOutputNotes: [
|
|
681
|
+
"30s. Talking-head agent introduction, b-roll of recent listings.",
|
|
682
|
+
"16:9. Professional + warm.",
|
|
683
|
+
].join(" "),
|
|
684
|
+
brief: {
|
|
685
|
+
goal: "30s realtor introduction video for new agent",
|
|
686
|
+
audience: "Local sellers 35-65",
|
|
687
|
+
niche: "real-estate",
|
|
688
|
+
tone: "warm",
|
|
689
|
+
durationSec: 30,
|
|
690
|
+
aspect: "16:9",
|
|
691
|
+
hookStyle: "story",
|
|
692
|
+
pacing: "medium",
|
|
693
|
+
tierBudget: "T1",
|
|
694
|
+
rawPrompt: "30s realtor intro for a new Bay Area agent",
|
|
695
|
+
claims: { allow: [], block: ["#1 agent", "best in town"] },
|
|
696
|
+
references: [],
|
|
697
|
+
confidence: { goal: 0.95 },
|
|
698
|
+
},
|
|
699
|
+
},
|
|
700
|
+
{
|
|
701
|
+
id: "seed-real-estate-virtual-tour",
|
|
702
|
+
niche: "real-estate",
|
|
703
|
+
goodOutputNotes: [
|
|
704
|
+
"45s. Room-by-room walk-through, smooth Ken-Burns over interior images.",
|
|
705
|
+
"16:9. Calm, well-lit aesthetic.",
|
|
706
|
+
].join(" "),
|
|
707
|
+
brief: {
|
|
708
|
+
goal: "Virtual tour of a 2-bed loft in Brooklyn",
|
|
709
|
+
audience: "Remote home buyers 28-45",
|
|
710
|
+
niche: "real-estate",
|
|
711
|
+
tone: "calm",
|
|
712
|
+
durationSec: 45,
|
|
713
|
+
aspect: "16:9",
|
|
714
|
+
hookStyle: "demo",
|
|
715
|
+
pacing: "slow",
|
|
716
|
+
tierBudget: "T1",
|
|
717
|
+
rawPrompt: "45s virtual tour of a Brooklyn 2-bed loft",
|
|
718
|
+
claims: { allow: [], block: [] },
|
|
719
|
+
references: [],
|
|
720
|
+
confidence: { goal: 0.95 },
|
|
721
|
+
},
|
|
722
|
+
},
|
|
723
|
+
// recipe (5) → faceless-yt
|
|
724
|
+
{
|
|
725
|
+
id: "seed-recipe-30s",
|
|
726
|
+
niche: "recipe",
|
|
727
|
+
goodOutputNotes: [
|
|
728
|
+
"30s. Top-down ingredient shots, fast cuts. On-screen text per step.",
|
|
729
|
+
"9:16 or 1:1. T0 stock or AI stills + Ken-Burns.",
|
|
730
|
+
].join(" "),
|
|
731
|
+
brief: {
|
|
732
|
+
goal: "30-second one-pan garlic shrimp pasta recipe",
|
|
733
|
+
audience: "Home cooks 25-45",
|
|
734
|
+
niche: "recipe",
|
|
735
|
+
tone: "warm",
|
|
736
|
+
durationSec: 30,
|
|
737
|
+
aspect: "9:16",
|
|
738
|
+
hookStyle: "demo",
|
|
739
|
+
pacing: "fast",
|
|
740
|
+
tierBudget: "T0",
|
|
741
|
+
rawPrompt: "30s vertical one-pan garlic shrimp pasta recipe video",
|
|
742
|
+
claims: { allow: [], block: [] },
|
|
743
|
+
references: [],
|
|
744
|
+
confidence: { goal: 0.95 },
|
|
745
|
+
},
|
|
746
|
+
},
|
|
747
|
+
{
|
|
748
|
+
id: "seed-recipe-mealprep",
|
|
749
|
+
niche: "recipe",
|
|
750
|
+
goodOutputNotes: [
|
|
751
|
+
"60s. Sequenced 3-meal prep. Container shots at the end.",
|
|
752
|
+
"16:9. Bright kitchen palette.",
|
|
753
|
+
].join(" "),
|
|
754
|
+
brief: {
|
|
755
|
+
goal: "60s 3-meal prep for high-protein lunches",
|
|
756
|
+
audience: "Fitness-minded professionals",
|
|
757
|
+
niche: "recipe",
|
|
758
|
+
tone: "energetic",
|
|
759
|
+
durationSec: 60,
|
|
760
|
+
aspect: "16:9",
|
|
761
|
+
hookStyle: "stat",
|
|
762
|
+
pacing: "fast",
|
|
763
|
+
tierBudget: "T0",
|
|
764
|
+
rawPrompt: "60s high-protein lunch meal prep, 3 meals, top-down shots",
|
|
765
|
+
claims: { allow: [], block: ["builds muscle guaranteed"] },
|
|
766
|
+
references: [],
|
|
767
|
+
confidence: { goal: 0.95 },
|
|
768
|
+
},
|
|
769
|
+
},
|
|
770
|
+
{
|
|
771
|
+
id: "seed-recipe-dessert",
|
|
772
|
+
niche: "recipe",
|
|
773
|
+
goodOutputNotes: [
|
|
774
|
+
"30s. Layered dessert close-ups, drizzle / pour shots.",
|
|
775
|
+
"1:1. Warm tone, slow-pour pacing despite tight runtime.",
|
|
776
|
+
].join(" "),
|
|
777
|
+
brief: {
|
|
778
|
+
goal: "30s no-bake chocolate mousse recipe",
|
|
779
|
+
audience: "Casual dessert makers",
|
|
780
|
+
niche: "recipe",
|
|
781
|
+
tone: "warm",
|
|
782
|
+
durationSec: 30,
|
|
783
|
+
aspect: "1:1",
|
|
784
|
+
hookStyle: "demo",
|
|
785
|
+
pacing: "medium",
|
|
786
|
+
tierBudget: "T0",
|
|
787
|
+
rawPrompt: "30s no-bake chocolate mousse recipe, square format",
|
|
788
|
+
claims: { allow: [], block: [] },
|
|
789
|
+
references: [],
|
|
790
|
+
confidence: { goal: 0.95 },
|
|
791
|
+
},
|
|
792
|
+
},
|
|
793
|
+
{
|
|
794
|
+
id: "seed-recipe-budget",
|
|
795
|
+
niche: "recipe",
|
|
796
|
+
goodOutputNotes: [
|
|
797
|
+
"45s. Budget-focused; show price text per ingredient. Practical kitchen scenes.",
|
|
798
|
+
"16:9. T0.",
|
|
799
|
+
].join(" "),
|
|
800
|
+
brief: {
|
|
801
|
+
goal: "45s dinner under $5 per serving — sheet-pan chicken",
|
|
802
|
+
audience: "Budget-conscious cooks",
|
|
803
|
+
niche: "recipe",
|
|
804
|
+
tone: "casual",
|
|
805
|
+
durationSec: 45,
|
|
806
|
+
aspect: "16:9",
|
|
807
|
+
hookStyle: "stat",
|
|
808
|
+
pacing: "medium",
|
|
809
|
+
tierBudget: "T0",
|
|
810
|
+
rawPrompt: "45s sheet-pan chicken dinner under $5 per serving",
|
|
811
|
+
claims: { allow: [], block: [] },
|
|
812
|
+
references: [],
|
|
813
|
+
confidence: { goal: 0.95 },
|
|
814
|
+
},
|
|
815
|
+
},
|
|
816
|
+
{
|
|
817
|
+
id: "seed-recipe-hack",
|
|
818
|
+
niche: "recipe",
|
|
819
|
+
goodOutputNotes: [
|
|
820
|
+
"20s. One ingredient hack with a punchy hook ('your eggs have been wrong').",
|
|
821
|
+
"9:16. T0.",
|
|
822
|
+
].join(" "),
|
|
823
|
+
brief: {
|
|
824
|
+
goal: "20s viral cooking hack — restaurant-style scrambled eggs",
|
|
825
|
+
audience: "Casual cooks",
|
|
826
|
+
niche: "recipe",
|
|
827
|
+
tone: "playful",
|
|
828
|
+
durationSec: 20,
|
|
829
|
+
aspect: "9:16",
|
|
830
|
+
hookStyle: "pattern-interrupt",
|
|
831
|
+
pacing: "fast",
|
|
832
|
+
tierBudget: "T0",
|
|
833
|
+
rawPrompt: "20s vertical cooking-hack video for restaurant-style scrambled eggs",
|
|
834
|
+
claims: { allow: [], block: [] },
|
|
835
|
+
references: [],
|
|
836
|
+
confidence: { goal: 0.95 },
|
|
837
|
+
},
|
|
838
|
+
},
|
|
839
|
+
// travel (5) → faceless-yt or social-recap
|
|
840
|
+
{
|
|
841
|
+
id: "seed-travel-city-guide",
|
|
842
|
+
niche: "travel",
|
|
843
|
+
goodOutputNotes: [
|
|
844
|
+
"60s. 5 spots in Lisbon, drone-style stock cuts, lo-fi music.",
|
|
845
|
+
"16:9. Mostly T0.",
|
|
846
|
+
].join(" "),
|
|
847
|
+
brief: {
|
|
848
|
+
goal: "60s mini city guide of Lisbon — 5 must-see spots",
|
|
849
|
+
audience: "Weekend travellers 25-45",
|
|
850
|
+
niche: "travel",
|
|
851
|
+
tone: "cinematic",
|
|
852
|
+
durationSec: 60,
|
|
853
|
+
aspect: "16:9",
|
|
854
|
+
hookStyle: "story",
|
|
855
|
+
pacing: "medium",
|
|
856
|
+
tierBudget: "T0",
|
|
857
|
+
rawPrompt: "60s Lisbon city guide of 5 must-see spots, cinematic stock",
|
|
858
|
+
claims: { allow: [], block: [] },
|
|
859
|
+
references: [],
|
|
860
|
+
confidence: { goal: 0.9 },
|
|
861
|
+
},
|
|
862
|
+
},
|
|
863
|
+
{
|
|
864
|
+
id: "seed-travel-tips",
|
|
865
|
+
niche: "travel",
|
|
866
|
+
goodOutputNotes: [
|
|
867
|
+
"30s vertical. 5 packing tips with on-screen text.",
|
|
868
|
+
"9:16, fast, T0.",
|
|
869
|
+
].join(" "),
|
|
870
|
+
brief: {
|
|
871
|
+
goal: "5 packing tips for international flights",
|
|
872
|
+
audience: "Frequent travellers 25-50",
|
|
873
|
+
niche: "travel",
|
|
874
|
+
tone: "informational",
|
|
875
|
+
durationSec: 30,
|
|
876
|
+
aspect: "9:16",
|
|
877
|
+
hookStyle: "stat",
|
|
878
|
+
pacing: "very-fast",
|
|
879
|
+
tierBudget: "T0",
|
|
880
|
+
rawPrompt: "30s vertical 5 packing tips for international flights",
|
|
881
|
+
claims: { allow: [], block: [] },
|
|
882
|
+
references: [],
|
|
883
|
+
confidence: { goal: 0.95 },
|
|
884
|
+
},
|
|
885
|
+
},
|
|
886
|
+
{
|
|
887
|
+
id: "seed-travel-hotel-review",
|
|
888
|
+
niche: "travel",
|
|
889
|
+
goodOutputNotes: [
|
|
890
|
+
"45s walk-through review of a boutique hotel. Amenities + room shots.",
|
|
891
|
+
"16:9. Calm tone. Disclose if sponsored only when applicable.",
|
|
892
|
+
].join(" "),
|
|
893
|
+
brief: {
|
|
894
|
+
goal: "45s boutique hotel review in Tulum",
|
|
895
|
+
audience: "Couples planning trips",
|
|
896
|
+
niche: "travel",
|
|
897
|
+
tone: "calm",
|
|
898
|
+
durationSec: 45,
|
|
899
|
+
aspect: "16:9",
|
|
900
|
+
hookStyle: "story",
|
|
901
|
+
pacing: "medium",
|
|
902
|
+
tierBudget: "T1",
|
|
903
|
+
rawPrompt: "45s boutique hotel review in Tulum, walk-through style",
|
|
904
|
+
claims: { allow: [], block: ["best hotel in Mexico"] },
|
|
905
|
+
references: [],
|
|
906
|
+
confidence: { goal: 0.9 },
|
|
907
|
+
},
|
|
908
|
+
},
|
|
909
|
+
{
|
|
910
|
+
id: "seed-travel-day-in",
|
|
911
|
+
niche: "travel",
|
|
912
|
+
goodOutputNotes: [
|
|
913
|
+
"60s 'a day in Tokyo' montage. Sunrise → temple → ramen → night-streets.",
|
|
914
|
+
"9:16 or 16:9. Cinematic.",
|
|
915
|
+
].join(" "),
|
|
916
|
+
brief: {
|
|
917
|
+
goal: "60s a-day-in-Tokyo montage from morning to night",
|
|
918
|
+
audience: "Travel-curious 22-45",
|
|
919
|
+
niche: "travel",
|
|
920
|
+
tone: "cinematic",
|
|
921
|
+
durationSec: 60,
|
|
922
|
+
aspect: "9:16",
|
|
923
|
+
hookStyle: "story",
|
|
924
|
+
pacing: "medium",
|
|
925
|
+
tierBudget: "T0",
|
|
926
|
+
rawPrompt: "60s vertical a-day-in-Tokyo montage, cinematic stock",
|
|
927
|
+
claims: { allow: [], block: [] },
|
|
928
|
+
references: [],
|
|
929
|
+
confidence: { goal: 0.9 },
|
|
930
|
+
},
|
|
931
|
+
},
|
|
932
|
+
{
|
|
933
|
+
id: "seed-travel-budget",
|
|
934
|
+
niche: "travel",
|
|
935
|
+
goodOutputNotes: [
|
|
936
|
+
"30s vertical budget tips for backpackers. On-screen $ amounts.",
|
|
937
|
+
"9:16, T0.",
|
|
938
|
+
].join(" "),
|
|
939
|
+
brief: {
|
|
940
|
+
goal: "30s budget travel tips for SE Asia backpackers",
|
|
941
|
+
audience: "Backpackers 18-30",
|
|
942
|
+
niche: "travel",
|
|
943
|
+
tone: "casual",
|
|
944
|
+
durationSec: 30,
|
|
945
|
+
aspect: "9:16",
|
|
946
|
+
hookStyle: "stat",
|
|
947
|
+
pacing: "fast",
|
|
948
|
+
tierBudget: "T0",
|
|
949
|
+
rawPrompt: "30s vertical budget travel tips for SE Asia backpackers",
|
|
950
|
+
claims: { allow: [], block: [] },
|
|
951
|
+
references: [],
|
|
952
|
+
confidence: { goal: 0.95 },
|
|
953
|
+
},
|
|
954
|
+
},
|
|
955
|
+
// fitness (5) → ugc-ad / talking-head
|
|
956
|
+
{
|
|
957
|
+
id: "seed-fitness-home-workout",
|
|
958
|
+
niche: "fitness",
|
|
959
|
+
goodOutputNotes: [
|
|
960
|
+
"30s. 5 bodyweight moves with on-screen rep counts. Fast pace.",
|
|
961
|
+
"9:16. No injury-prevention claims.",
|
|
962
|
+
].join(" "),
|
|
963
|
+
brief: {
|
|
964
|
+
goal: "30s 5-move bodyweight home workout",
|
|
965
|
+
audience: "Beginners 25-45",
|
|
966
|
+
niche: "fitness",
|
|
967
|
+
tone: "energetic",
|
|
968
|
+
durationSec: 30,
|
|
969
|
+
aspect: "9:16",
|
|
970
|
+
hookStyle: "demo",
|
|
971
|
+
pacing: "fast",
|
|
972
|
+
tierBudget: "T0",
|
|
973
|
+
rawPrompt: "30s vertical 5-move bodyweight home workout",
|
|
974
|
+
claims: { allow: [], block: ["prevents injury", "burns belly fat"] },
|
|
975
|
+
references: [],
|
|
976
|
+
confidence: { goal: 0.95 },
|
|
977
|
+
},
|
|
978
|
+
},
|
|
979
|
+
{
|
|
980
|
+
id: "seed-fitness-form-tip",
|
|
981
|
+
niche: "fitness",
|
|
982
|
+
goodOutputNotes: [
|
|
983
|
+
"20s. One-tip squat form video. Side-angle demo + voiceover correction.",
|
|
984
|
+
"9:16. T0/T1.",
|
|
985
|
+
].join(" "),
|
|
986
|
+
brief: {
|
|
987
|
+
goal: "20s squat-form fix tip",
|
|
988
|
+
audience: "Beginner lifters",
|
|
989
|
+
niche: "fitness",
|
|
990
|
+
tone: "professional",
|
|
991
|
+
durationSec: 20,
|
|
992
|
+
aspect: "9:16",
|
|
993
|
+
hookStyle: "question",
|
|
994
|
+
pacing: "fast",
|
|
995
|
+
tierBudget: "T1",
|
|
996
|
+
rawPrompt: "20s vertical squat form-fix tip with side-angle demo",
|
|
997
|
+
claims: { allow: [], block: ["doctor approved", "prevents injury"] },
|
|
998
|
+
references: [],
|
|
999
|
+
confidence: { goal: 0.95 },
|
|
1000
|
+
},
|
|
1001
|
+
},
|
|
1002
|
+
{
|
|
1003
|
+
id: "seed-fitness-mobility",
|
|
1004
|
+
niche: "fitness",
|
|
1005
|
+
goodOutputNotes: [
|
|
1006
|
+
"45s. 4 mobility drills for desk workers. Stretches + on-screen labels.",
|
|
1007
|
+
"16:9 or 9:16. Calm tone.",
|
|
1008
|
+
].join(" "),
|
|
1009
|
+
brief: {
|
|
1010
|
+
goal: "45s 4 mobility drills for desk workers",
|
|
1011
|
+
audience: "Office workers 25-50",
|
|
1012
|
+
niche: "fitness",
|
|
1013
|
+
tone: "calm",
|
|
1014
|
+
durationSec: 45,
|
|
1015
|
+
aspect: "16:9",
|
|
1016
|
+
hookStyle: "question",
|
|
1017
|
+
pacing: "medium",
|
|
1018
|
+
tierBudget: "T0",
|
|
1019
|
+
rawPrompt: "45s 4 mobility drills for desk workers",
|
|
1020
|
+
claims: { allow: [], block: ["heals back pain"] },
|
|
1021
|
+
references: [],
|
|
1022
|
+
confidence: { goal: 0.95 },
|
|
1023
|
+
},
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
id: "seed-fitness-myth",
|
|
1027
|
+
niche: "fitness",
|
|
1028
|
+
goodOutputNotes: [
|
|
1029
|
+
"30s. Myth-vs-fact format with 2 claims. Fast cuts and on-screen labels.",
|
|
1030
|
+
"9:16. T0.",
|
|
1031
|
+
].join(" "),
|
|
1032
|
+
brief: {
|
|
1033
|
+
goal: "30s 'fitness myths busted' — spot reduction + crunches",
|
|
1034
|
+
audience: "General gym audience",
|
|
1035
|
+
niche: "fitness",
|
|
1036
|
+
tone: "casual",
|
|
1037
|
+
durationSec: 30,
|
|
1038
|
+
aspect: "9:16",
|
|
1039
|
+
hookStyle: "bold-claim",
|
|
1040
|
+
pacing: "fast",
|
|
1041
|
+
tierBudget: "T0",
|
|
1042
|
+
rawPrompt: "30s vertical fitness myths video — spot reduction and crunches",
|
|
1043
|
+
claims: { allow: [], block: ["clinically proven"] },
|
|
1044
|
+
references: [],
|
|
1045
|
+
confidence: { goal: 0.9 },
|
|
1046
|
+
},
|
|
1047
|
+
},
|
|
1048
|
+
{
|
|
1049
|
+
id: "seed-fitness-cardio",
|
|
1050
|
+
niche: "fitness",
|
|
1051
|
+
goodOutputNotes: [
|
|
1052
|
+
"20s. Quick HIIT cardio finisher routine. Energetic music.",
|
|
1053
|
+
"9:16, T0.",
|
|
1054
|
+
].join(" "),
|
|
1055
|
+
brief: {
|
|
1056
|
+
goal: "20s HIIT cardio finisher — 4 moves",
|
|
1057
|
+
audience: "Gym regulars",
|
|
1058
|
+
niche: "fitness",
|
|
1059
|
+
tone: "energetic",
|
|
1060
|
+
durationSec: 20,
|
|
1061
|
+
aspect: "9:16",
|
|
1062
|
+
hookStyle: "demo",
|
|
1063
|
+
pacing: "very-fast",
|
|
1064
|
+
tierBudget: "T0",
|
|
1065
|
+
rawPrompt: "20s vertical 4-move HIIT cardio finisher",
|
|
1066
|
+
claims: { allow: [], block: [] },
|
|
1067
|
+
references: [],
|
|
1068
|
+
confidence: { goal: 0.95 },
|
|
1069
|
+
},
|
|
1070
|
+
},
|
|
1071
|
+
// misc / cross-niche (5)
|
|
1072
|
+
{
|
|
1073
|
+
id: "seed-podcast-clip",
|
|
1074
|
+
niche: "podcast-clip",
|
|
1075
|
+
goodOutputNotes: [
|
|
1076
|
+
"45s podcast highlight: waveform + on-screen captions of the quote.",
|
|
1077
|
+
"9:16. T0 only.",
|
|
1078
|
+
].join(" "),
|
|
1079
|
+
brief: {
|
|
1080
|
+
goal: "45s podcast clip: founder talks pricing strategy",
|
|
1081
|
+
audience: "Indie hackers 25-45",
|
|
1082
|
+
niche: "podcast-clip",
|
|
1083
|
+
tone: "professional",
|
|
1084
|
+
durationSec: 45,
|
|
1085
|
+
aspect: "9:16",
|
|
1086
|
+
hookStyle: "story",
|
|
1087
|
+
pacing: "medium",
|
|
1088
|
+
tierBudget: "T0",
|
|
1089
|
+
rawPrompt: "45s vertical podcast clip — founder pricing strategy quote",
|
|
1090
|
+
claims: { allow: [], block: [] },
|
|
1091
|
+
references: [],
|
|
1092
|
+
confidence: { goal: 0.95 },
|
|
1093
|
+
},
|
|
1094
|
+
},
|
|
1095
|
+
{
|
|
1096
|
+
id: "seed-education-explainer",
|
|
1097
|
+
niche: "education",
|
|
1098
|
+
goodOutputNotes: [
|
|
1099
|
+
"60s. K-12-friendly explainer of the water cycle. Diagram-led.",
|
|
1100
|
+
"16:9. T0.",
|
|
1101
|
+
].join(" "),
|
|
1102
|
+
brief: {
|
|
1103
|
+
goal: "60s explainer: the water cycle for 5th graders",
|
|
1104
|
+
audience: "K-12 students",
|
|
1105
|
+
niche: "education",
|
|
1106
|
+
tone: "informational",
|
|
1107
|
+
durationSec: 60,
|
|
1108
|
+
aspect: "16:9",
|
|
1109
|
+
hookStyle: "question",
|
|
1110
|
+
pacing: "medium",
|
|
1111
|
+
tierBudget: "T0",
|
|
1112
|
+
rawPrompt: "60s educational explainer of the water cycle for 5th graders",
|
|
1113
|
+
claims: { allow: [], block: [] },
|
|
1114
|
+
references: [],
|
|
1115
|
+
confidence: { goal: 0.95 },
|
|
1116
|
+
},
|
|
1117
|
+
},
|
|
1118
|
+
{
|
|
1119
|
+
id: "seed-news-headline",
|
|
1120
|
+
niche: "news",
|
|
1121
|
+
goodOutputNotes: [
|
|
1122
|
+
"30s breaking-news-style top story summary.",
|
|
1123
|
+
"9:16. Sober tone, no opinion.",
|
|
1124
|
+
].join(" "),
|
|
1125
|
+
brief: {
|
|
1126
|
+
goal: "30s news recap of today's top economic headline",
|
|
1127
|
+
audience: "News-reading adults",
|
|
1128
|
+
niche: "news",
|
|
1129
|
+
tone: "informational",
|
|
1130
|
+
durationSec: 30,
|
|
1131
|
+
aspect: "9:16",
|
|
1132
|
+
hookStyle: "stat",
|
|
1133
|
+
pacing: "fast",
|
|
1134
|
+
tierBudget: "T0",
|
|
1135
|
+
rawPrompt: "30s vertical news recap of today's top economic headline",
|
|
1136
|
+
claims: { allow: [], block: ["confirmed", "exclusive"] },
|
|
1137
|
+
references: [],
|
|
1138
|
+
confidence: { goal: 0.9 },
|
|
1139
|
+
},
|
|
1140
|
+
},
|
|
1141
|
+
{
|
|
1142
|
+
id: "seed-charity-ad",
|
|
1143
|
+
niche: "other",
|
|
1144
|
+
goodOutputNotes: [
|
|
1145
|
+
"45s. Story-led emotional arc → call to donate. End-card with URL.",
|
|
1146
|
+
"16:9. Warm cinematic tone, brand-safe.",
|
|
1147
|
+
].join(" "),
|
|
1148
|
+
brief: {
|
|
1149
|
+
goal: "45s donation appeal for clean-water charity",
|
|
1150
|
+
audience: "Mid-life donors 35-65",
|
|
1151
|
+
niche: "other",
|
|
1152
|
+
tone: "cinematic",
|
|
1153
|
+
durationSec: 45,
|
|
1154
|
+
aspect: "16:9",
|
|
1155
|
+
hookStyle: "story",
|
|
1156
|
+
pacing: "medium",
|
|
1157
|
+
tierBudget: "T1",
|
|
1158
|
+
rawPrompt: "45s donation appeal for a clean-water charity, emotional arc + CTA",
|
|
1159
|
+
cta: "Donate at clean.example.org",
|
|
1160
|
+
claims: { allow: [], block: ["100% of donations"] },
|
|
1161
|
+
references: [],
|
|
1162
|
+
confidence: { goal: 0.9 },
|
|
1163
|
+
},
|
|
1164
|
+
},
|
|
1165
|
+
{
|
|
1166
|
+
id: "seed-event-recap",
|
|
1167
|
+
niche: "other",
|
|
1168
|
+
goodOutputNotes: [
|
|
1169
|
+
"30s recap of a tech conference. Crowd, stage, lobby cuts.",
|
|
1170
|
+
"9:16. Energetic.",
|
|
1171
|
+
].join(" "),
|
|
1172
|
+
brief: {
|
|
1173
|
+
goal: "30s recap of a fictional tech conference day-1",
|
|
1174
|
+
audience: "Tech industry attendees",
|
|
1175
|
+
niche: "other",
|
|
1176
|
+
tone: "energetic",
|
|
1177
|
+
durationSec: 30,
|
|
1178
|
+
aspect: "9:16",
|
|
1179
|
+
hookStyle: "stat",
|
|
1180
|
+
pacing: "very-fast",
|
|
1181
|
+
tierBudget: "T0",
|
|
1182
|
+
rawPrompt: "30s vertical recap of day-1 of a tech conference",
|
|
1183
|
+
claims: { allow: [], block: [] },
|
|
1184
|
+
references: [],
|
|
1185
|
+
confidence: { goal: 0.9 },
|
|
1186
|
+
},
|
|
1187
|
+
},
|
|
1188
|
+
];
|