1. Purpose
The DSL lets a human or agent declare media objectives, objects, constraints, variation levels, and transformations without binding the system to one editing application.
COMMAND
= verb
+ target
+ selectors
+ parameters
+ logic
+ constraints
+ expected output
2. Core commands
/project
/source
/ingest
/sync
/transcribe
/segment
/context
/entity
/claim
/evidence
/clip
/bin
/story
/sequence
/beat
/question
/shot
/camera
/light
/generate
/cut
/transition
/graphic
/audio
/color
/vfx
/caption
/version
/deliver
/qa
/review
/vary
/rank
/compare
/export
3. Logic operators
AND
OR
NOT
XOR
IF
THEN
ELSE
WHEN
UNTIL
WHILE
FOR_EACH
REQUIRE
PREFER
AVOID
FORBID
ALLOW
LIMIT
BETWEEN
WITHIN
WEIGHT
THRESHOLD
MAXIMIZE
MINIMIZE
PRESERVE
LOCK
4. Selector grammar
speaker:guest
topic:"color management"
role:REVEAL
claim.status:SUPPORTED_WITHIN_SCOPE
duration:8..30s
score.context>=0.85
camera.role:GUEST_PRIMARY
source.id:cam_b
rights:CLEARED
version.parent:v07
Combine:
speaker:guest AND role:(REVEAL OR MECHANISM)
AND duration:8..30s
AND score.context>=0.85
NOT risk:(rights OR factual)
5. Assignment and range syntax
key=value
key:value
key>=value
key<=value
key in [a,b,c]
key=10..30
key~=semantic_phrase
Units are explicit:
12s
250ms
24fps
48kHz
-16LUFS
-1dBTP
45deg
35mm
2stops
6. LAKA variation syntax
/vary target:shot_12 level:minor count:6
PRESERVE subject, action, key_direction
VARY framing, movement_speed
LIMIT changed_dimensions<=2
/vary target:story_v3 level:structural count:4
LOCK claims, quotations, evidence
VARY order, narrator, intercut_strategy
MAXIMIZE causal_clarity, payoff_strength, diversity
7. Project commands
/project create id:made_ep01
title:"MADE — Reintroduction"
mode:video_podcast
aspect_targets:[16x9,9x16,1x1]
language:en
REQUIRE captions, provenance, human_story_approval
/project set made_ep01
audience:"creative founders"
outcome:"understand Ryan and his connected projects"
tone:[direct, unsettling, reflective, earned_hope]
FORBID fabricated_evidence, misleading_reaction
8. Source and transcript commands
/source add path:"interview_cam_a.mov" role:MASTER
/source add path:"guest_iso.wav" role:DIALOGUE_ISO speaker:guest
/ingest project:made_ep01 checksum:true proxy:1080p
/sync sources:* method:(timecode OR waveform) tolerance:1frame
/transcribe sources:audio* words:true speakers:true confidence:true
/segment transcript:* levels:[turn,sentence,proposition,beat,topic]
/context transcript:*
RESOLVE entities, pronouns, questions, claims, negation, uncertainty
LINK cause_effect, question_answer, setup_payoff, contradiction
9. Clip commands
/clip mine transcript:*
scales:[hook,soundbite,exchange,anecdote,chapter]
handles:24frames
REQUIRE context_complete>=0.82
SCORE_BY hook, clarity, evidence, emotion, performance
/bin create name:REVEALS selector:"role:REVEAL AND score.context>=0.85"
/clip expand id:clip_118
UNTIL dependencies_resolved OR duration>=60s
ALLOW bridge:narration
10. Story commands
/story generate from:clips:selected
pattern:investigation
target:8min
REQUIRE hook, orientation, central_question, evidence, counterpoint, payoff
PRESERVE chronology_truth, quote_meaning
MAXIMIZE causal_clarity, emotional_coherence
/beat add after:beat_04
role:MECHANISM
proposition:"The editor stores meaning separately from render choices"
treatment:[diagram,narration]
exit_state:"audience can predict the workflow"
/story validate id:story_v5
CHECK open_loops, dependencies, stakes, claim_support, setup_payoff
11. Camera commands
/shot plan beat:beat_07
function:VULNERABILITY
camera.role:GUEST_CLOSE
size:CLOSE
azimuth:THREE_QUARTER
elevation:EYE_LEVEL
lens_family:SHORT_TELEPHOTO
movement:LOCKED_OFF
duration:10..25s
PREFER readable_eyes, stable_frame
AVOID rapid_cutting, shallow_focus_failure
/camera set shot:shot_07
height:eye
focal_length:85mm
aperture:f2.8
focus:TRACK_EYES
shutter:180deg
frame_rate:24fps
screen_direction:left_to_right
12. Lighting commands
/light set shot:shot_07
motivation:"window camera-right"
key.direction:far_side_45deg
key.quality:soft
fill:key_minus_2stops
background:key_minus_1stop
practical:warm_deep_background
white_balance:4300K
LOCK key_direction, practical_state
/light vary shot:shot_07 level:minor count:4
VARY fill_ratio, background_level
PRESERVE motivation, skin_rendering
13. Generation commands
/generate video for:shot_07
mode:reference_guided
duration:8s
entry:"subject looking down; hands still"
action:"subject raises eyes and finishes sentence"
exit:"direct eyeline held for one second"
LOCK character_bible, wardrobe, lens, key_direction
FORBID face_drift, hand_mutation, light_flicker, text
count:8
/rank generated:shot_07/*
WEIGHT beat_fulfillment:0.25 continuity:0.20 identity:0.20 editability:0.15
MINIMIZE artifact, rights_risk
DIVERSITY_BY performance, micro_movement
keep:3
14. Editing commands
/cut from:clip_24 to:clip_91
type:J_CUT
motivation:ANTICIPATE
audio_lead:18frames
REQUIRE no_false_causality, context_complete
/cut assemble story:story_v5
PREFER cut_on_action, reaction_when_meaningful, audio_bridges
AVOID angle_rotation_without_motivation
LIMIT average_shot_length:2.5..8s
/transition between:seq_2,seq_3
IF relation:time_passage THEN type:DISSOLVE duration:12frames
ELSE type:CUT
15. Graphic commands
/graphic add beat:beat_09
task:EXPLAIN_MECHANISM
type:CAUSAL_DIAGRAM
data:claims/model.json
mode:FULL_SCREEN
phases:[ORIENT,BUILD,EMPHASIZE,HOLD]
REQUIRE source_note, narration_alt, caption_clearance
/graphic reflow id:graphic_09 target:9x16
transform:side_by_side_to_stacked
LOCK data_mapping, hierarchy
16. Audio commands
/audio dialogue source:guest_iso
repair:[dehum,declick]
match_to:host_iso
target_profile:ONLINE_PODCAST
PRESERVE emotional_breaths
/audio music beat:beat_14
function:RELEASE
start:after_payoff
PREFER sparse_texture
DUCK under:dialogue
REQUIRE rights:CLEARED
17. Version and QA commands
/version derive from:master_v7 target:9x16
reframe:semantic_subject_tracking
captions:burned
graphics:responsive
REQUIRE human_reframe_review
/qa run version:v7_vertical
domains:[editorial,factual,continuity,picture,audio,graphics,accessibility,rights,ai,encode]
BLOCK_ON severity<=CRITICAL
OUTPUT report:json+html
18. EBNF sketch
command = "/", identifier, { argument | clause }, newline ;
argument = key, operator, value ;
operator = ":" | "=" | ">=" | "<=" | "~=" ;
clause = logic_op, expression ;
logic_op = "IF" | "THEN" | "ELSE" | "REQUIRE" | "PREFER"
| "AVOID" | "FORBID" | "LOCK" | "VARY" | "LIMIT"
| "MAXIMIZE" | "MINIMIZE" | "PRESERVE" ;
expression = predicate, { boolean_op, predicate } ;
boolean_op = "AND" | "OR" | "XOR" ;
predicate = ["NOT"], key, operator, value ;
value = scalar | range | list | object | quoted_string ;
range = scalar, "..", scalar ;
list = "[", [value, {",", value}], "]" ;
object = "{", [argument, {",", argument}], "}" ;
identifier = letter, {letter | digit | "_" | "-"} ;
19. Compilation model
parse command
→ resolve selectors
→ validate schema and permissions
→ normalize units
→ expand macros
→ evaluate hard rules
→ create typed proposal operations
→ estimate cost/risk
→ execute or request human gate
→ attach rule trace and provenance
20. DSL safety rules
A command never overwrites source media.
A destructive-looking command compiles to a reversible proposal/version.
FORBID and REQUIRE outrank PREFER.
Truth, consent, rights, and accessibility hard constraints cannot be lowered by style commands.
Every generated asset and timeline mutation receives provenance.
Every override requires identity, reason, and scope.