+
    -iO                    r   a  0 t $ R t^ RIHt ^ RIHtHt ^ RIHt Rt	RRRRRRRR/t
R	]R
&    ! R R]4      tR# )uB   
Script Analyzer Agent – breaks a story into structured scenes.
)annotations)SceneBreakdownTargetPlatform)	BaseAgentu  You are an expert video script analyst specializing in short-form viral content.

Given a story or narrative, break it down into NARRATIVE BEATS. Each beat
represents a key moment, emotion shift, or story progression point. These beats
will later be expanded into multiple visual frames with different camera angles.

For EACH narrative beat you must determine:
1. The physical environment / setting (be SPECIFIC and VISUAL — describe colors,
   textures, lighting conditions, objects in the scene)
2. The character's pose, body position, and gesture (specific and cinematic —
   describe exactly what the body is doing)
3. The mood / emotional tone (use cinematic language)
4. The exact narration text that will be spoken as voiceover
5. Delivery notes (pace, emotion, pauses, emphasis)

LANGUAGE RULES (MANDATORY):
- ALL narration_text MUST be written in Brazilian Portuguese (pt-BR), regardless of the input story language
- If the story is in another language, TRANSLATE the narration to natural, conversational Brazilian Portuguese
- Use Brazilian Portuguese contractions, expressions, and rhythm (e.g., "você", "né", "tá")

Rules:
- The FIRST beat MUST be a powerful hook that grabs attention instantly
- Each beat should represent a DISTINCT story moment or emotional shift
- Keep narration sentences short and punchy (max 12 words each)
- Write narration in a conversational, viral social media tone
- Use contractions, rhetorical questions, dramatic pauses ("...")
- Total video should be {duration_hint}
- Generate {scene_count_hint} narrative beats
- Each beat will be expanded into 2-4 visual frames, so write enough detail
  for multiple camera angles per beat
- The narration text is what will be converted to speech via TTS
- Build a clear EMOTIONAL ARC: hook → escalation → climax → resolution
- Each beat's environment should PROGRESS the story visually (don't repeat settings)

Return a structured SceneBreakdown with all beats in order.tiktokinstagram_reelsyoutube_shortsyoutubezdict[str, tuple[str, str]]PLATFORM_HINTSc                  @    ] tR t^:tRt]P                  3R R lltRtR# )ScriptAnalyzerAgentz/Analyzes a story and produces a SceneBreakdown.c               $    V ^8  d   QhRRRRRR/# )   storystrtarget_platformr   returnr    )formats   "S/home/gabslocked/Desktop/Projetos/Images/video_automation/agents/script_analyzer.py__annotate__ ScriptAnalyzerAgent.__annotate__=   s(     
 

 (
 
	
    c                	    \         P                  VP                  R4      w  r4\        P	                  VVR7      pRV 2pV P                  VV\        RR7      # )30-60 seconds)duration_hintscene_count_hintzStory / Narrative:

gffffff?)system_promptuser_promptresponse_modeltemperature)r   z8-15)r
   getvalueSYSTEM_PROMPTr   callr   )selfr   r   r   
scene_hintsystemusers   &&&    r   analyzeScriptAnalyzerAgent.analyze=   sp    
 %3$6$6!!#<%
! %%'' & 
 (w/yy )	  
 	
r   r   N)	__name__
__module____qualname____firstlineno____doc__r   TIKTOKr)   __static_attributes__r   r   r   r   r   :   s    9
 +9*?*?
 
r   r   N)45-60 secondsz8-12)r   z7-10)r2   z10-14)z90-180 secondsz15-25)__conditional_annotations__r/   
__future__r   modelsr   r   agents.base_agentr   r#   r
   __annotations__r   )r3   s   @r   <module>r8      sS    # 1 '$P '00*	.* 
) 
r   