| name | direct-music |
| description | Compose the per-beat music score plan (Lyria cues, deliberate silence segments, optional sound-effect cues) for a content run by calling Hermes's music-director judgment agent. Use when the Content Factory agent must produce the music_director_output that Hermes's content-run pipeline needs for music generation, beat-synced editing, and the SFX layer. |
| metadata | {"agent":"content-factory","source":"Project Atlas Requirements §3.5/10.2","layer":"L5 Content Factory","host":"railway"} |
direct-music
Produce Music Director's score plan: one core musical theme, per-narrative-beat Lyria cues with
mood/tempo/intensity/transitions, explicit silence_segments, and (sparingly) sfx_cues.
When to use
- After the script is final and
plan-assets has produced its shot-pacing summary, before
dispatch-hermes-content-run — the pipeline's music generation, beat-sync cut nudging, music
dynamics, and designed sound effects ALL come from this output; without it the video ships
with no score at all.
Inputs / Sources
Final script_text (with its audio tags), psych_profile, cultural_context, audience_resonance,
and plan-assets' shot_pacing_summary when available.
Output
{generated_at, subject, core_theme, cues[], silence_segments[], sfx_cues[]} (see
hermes/agents/music-director/schema.json) — this is exactly the shape
ContentRunRequest.music_director_output expects. Pass it through UNMODIFIED; Hermes matches
cues to rendered tracks by segment_word_range, so rewriting any range breaks the join.
Function signature (manifest contract)
def direct_music(script_text: str, context: dict) -> dict:
"""Returns music-director's full schema output: core_theme, cues[],
silence_segments[], sfx_cues[]."""
Implementation
Call the hermes-bridge MCP tool run_judgment_agent(insight_type="music-director", query=<ask>, context={"script_text": script_text, "psych_profile": ..., "cultural_context": ..., "audience_resonance": ..., "shot_pacing_summary": ...}). Hits POST /v1/agents/music-director — same self-correcting loop as direct-voice, no new backend.
Model
deepseek-direct/deepseek-chat — Cheap high-volume tier (spec §11.3).