Add reference video input analysis workflow

This commit is contained in:
calesthio
2026-04-04 10:01:11 -07:00
parent 87df43d39f
commit b0917d2d84
25 changed files with 2640 additions and 5 deletions
+1
View File
@@ -25,6 +25,7 @@ ARTIFACT_NAMES = [
"decision_log",
"source_media_review",
"final_review",
"video_analysis_brief",
]
@@ -0,0 +1,223 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "video_analysis_brief",
"description": "Structured analysis of a reference video — produced by VideoAnalyzer, enriched by agent vision. Used as grounding context for reference-driven pipeline productions.",
"type": "object",
"required": ["version", "source", "content_analysis", "structure_analysis"],
"properties": {
"version": { "const": "1.0" },
"source": {
"type": "object",
"required": ["type", "duration_seconds"],
"properties": {
"type": {
"type": "string",
"enum": ["youtube", "shorts", "instagram", "tiktok", "local_file", "other_url"]
},
"url": { "type": "string" },
"local_path": { "type": "string" },
"title": { "type": "string" },
"duration_seconds": { "type": "number" },
"resolution": { "type": "string" },
"platform_metadata": {
"type": "object",
"properties": {
"uploader": { "type": "string" },
"upload_date": { "type": "string" },
"description": { "type": "string" },
"view_count": { "type": "integer" },
"like_count": { "type": "integer" }
}
}
}
},
"content_analysis": {
"type": "object",
"required": ["summary", "topics", "target_audience"],
"properties": {
"summary": {
"type": "string",
"description": "2-3 sentence content summary"
},
"topics": {
"type": "array",
"items": { "type": "string" }
},
"key_claims": {
"type": "array",
"items": { "type": "string" }
},
"target_audience": { "type": "string" },
"tone": {
"type": "string",
"enum": ["educational", "entertaining", "cinematic", "corporate",
"casual", "dramatic", "inspirational", "humorous"]
},
"hook_technique": {
"type": "string",
"description": "How the video opens to grab attention"
},
"call_to_action": { "type": "string" }
}
},
"structure_analysis": {
"type": "object",
"required": ["total_scenes", "scenes", "pacing_profile"],
"properties": {
"total_scenes": { "type": "integer" },
"scenes": {
"type": "array",
"items": {
"type": "object",
"required": ["scene_index", "start_time", "end_time", "description"],
"properties": {
"scene_index": { "type": "integer" },
"start_time": { "type": "number" },
"end_time": { "type": "number" },
"description": { "type": "string" },
"narration_text": { "type": "string" },
"visual_type": {
"type": "string",
"enum": ["talking_head", "b_roll", "screen_recording", "animation",
"text_card", "stock_footage", "diagram", "chart",
"product_shot", "transition", "other"]
},
"shot_language": {
"type": "object",
"properties": {
"shot_size": { "type": "string" },
"camera_movement": { "type": "string" },
"lighting_key": { "type": "string" },
"depth_of_field": { "type": "string" }
}
},
"dominant_colors": {
"type": "array",
"items": { "type": "string" }
},
"on_screen_text": { "type": "string" },
"energy_level": {
"type": "string",
"enum": ["low", "medium", "high", "peak"]
}
}
}
},
"pacing_profile": {
"type": "object",
"properties": {
"avg_scene_duration_seconds": { "type": "number" },
"shortest_scene_seconds": { "type": "number" },
"longest_scene_seconds": { "type": "number" },
"cuts_per_minute": { "type": "number" },
"pacing_style": {
"type": "string",
"enum": ["slow_contemplative", "steady_educational",
"dynamic_social", "rapid_fire", "variable"]
}
}
}
}
},
"style_profile": {
"type": "object",
"properties": {
"color_palette": {
"type": "object",
"properties": {
"primary_colors": {
"type": "array",
"items": { "type": "string" }
},
"accent_colors": {
"type": "array",
"items": { "type": "string" }
},
"overall_mood": { "type": "string" }
}
},
"typography_observed": { "type": "string" },
"transition_types": {
"type": "array",
"items": { "type": "string" }
},
"music_style": { "type": "string" },
"narration_style": {
"type": "object",
"properties": {
"has_narration": { "type": "boolean" },
"speaker_count": { "type": "integer" },
"delivery_style": { "type": "string" },
"words_per_minute": { "type": "number" }
}
},
"subtitle_style": { "type": "string" },
"production_quality": {
"type": "string",
"enum": ["amateur", "prosumer", "professional", "broadcast"]
},
"closest_playbook": { "type": "string" },
"playbook_delta": { "type": "string" }
}
},
"narration_transcript": {
"type": "object",
"properties": {
"full_text": { "type": "string" },
"segments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"start": { "type": "number" },
"end": { "type": "number" },
"text": { "type": "string" },
"speaker": { "type": "string" }
}
}
},
"language": { "type": "string" },
"word_count": { "type": "integer" }
}
},
"replication_guidance": {
"type": "object",
"properties": {
"suggested_pipeline": { "type": "string" },
"suggested_playbook": { "type": "string" },
"key_elements_to_replicate": {
"type": "array",
"items": { "type": "string" },
"description": "The 3-5 things that make this video work"
},
"elements_requiring_custom_work": {
"type": "array",
"items": { "type": "string" }
},
"estimated_complexity": {
"type": "string",
"enum": ["simple", "moderate", "complex", "beyond_current_capability"]
},
"motion_required": { "type": "boolean" },
"creative_differentiation_seeds": {
"type": "array",
"items": { "type": "string" },
"description": "3-5 ways the output should DIFFER from the reference to avoid being a copy"
},
"playbook_customizations": { "type": "object" }
}
},
"keyframes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"timestamp": { "type": "number" },
"scene_index": { "type": "integer" },
"path": { "type": "string" },
"description": { "type": "string" }
}
}
}
}
}
@@ -95,6 +95,22 @@
"success_criteria": {
"type": "array",
"items": { "type": "string" }
},
"sub_stages": {
"type": "array",
"description": "Optional sub-stages within a stage (e.g., sample preview for reference-driven productions)",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": { "type": "string" },
"description": { "type": "string" },
"condition": { "type": "string", "description": "When this sub-stage activates (e.g., video_analysis_brief_exists)" },
"human_approval_default": { "type": "boolean", "default": true },
"tools_available": { "type": "array", "items": { "type": "string" } },
"review_focus": { "type": "array", "items": { "type": "string" } }
}
}
}
},
"additionalProperties": false
@@ -106,6 +122,15 @@
"enum": ["guided", "manual_all", "auto_noncreative"],
"default": "guided"
},
"reference_input": {
"type": "object",
"description": "Configuration for reference video input support",
"properties": {
"supported": { "type": "boolean", "default": false },
"analysis_depth": { "type": "string", "enum": ["transcript_only", "standard", "deep"], "default": "standard" },
"analysis_tools": { "type": "array", "items": { "type": "string" } }
}
},
"metadata": { "type": "object" },
"orchestration": {
"type": "object",