Philm

CLI Tool · 2025

Video analysis where the interpretive framework is a parameter. The output schema stays fixed across all modes — what varies is the theoretical lens applied to fill it. Baudrillard and Virilio can read the same footage in a single upload.

Architecture

The design separates two orthogonal concerns:

models.py — what

Pydantic schemas defining the structure of valid output. Enforced at runtime — the LLM can't return something that doesn't fit.

modes.py — how

The prompt that fills the schema. Adding a new theoretical framework is ~30 lines. The schema doesn't change.

Same video. Multiple theories. One API call.

Analysis modes

--baudrillard

Baudrillard

Which order of simulacra? Where does reality collapse?

--virilio

Virilio

What speed regime governs? Where is the accident?

--hauntology

Hauntology

What futures were cancelled? What refuses to stay dead?

--gaze

Mulvey / Gaze

Who looks and with what power?

--affect

Massumi / Affect

What pre-cognitive intensities move through this?

--levinas

Levinas

Where does the face of the Other emerge?

--foucault

Foucault

What power operates? What is surveilled?

--rhythm

Deleuze / Rhythm

What territorializes? What escapes?

--zizek

Žižek

What ideology passes as nature?

--barthes

Barthes

What is the punctum? What mythologizes?

--benjamin

Benjamin

What is the aura? What does reproduction destroy?

--sublime

Sublime

Where does the image exceed comprehension?

--camera

Camera Lucida

What would this photograph be?

--custom

Custom

Any prompt. Same structured output.

Stack

Python · Gemini 2.5 Flash · Pydantic · Typer · Whisper · FFmpeg

Local fallback via Ollama vision models — same framework, no cloud.