Portfolio  ›  Projects  ›  Storytelling Studio
Local LLMPythonStreamlitNLP

AI Storytelling Studio
for Screen Industries

A blank page is the expensive part of screenwriting. This tool produces structured starting material — scenes, arcs and turns — that a writer can accept, reject or push in another direction.

◆ Verified · real storyboard exported
Context: Personal project  ·  Role: Sole author
Runs: locally, no API key  ·  Related: BitWithBite AVS consumes this kind of structured output
$0API cost
CSVBatch input
2Generation modes
📊 See Real Output🎬 Related: AVS
Generated storyboard showing four cinematic scenes with camera moves, lighting presets, characters, narration lines and mood tags
Actual exported storyboardFour scenes with camera, lighting, character, action and narration
Overview

Structured output, not just prose

The studio generates stories with deliberate structure — scene breakdown, character arcs and turns — rather than an undifferentiated block of text. That structure is what makes the output usable downstream: a scene carrying its own camera move, lighting, character, action and narration can be handed to a production pipeline directly.

A Streamlit dashboard handles single and batch generation, keeps a saved library, and supports continuation and variation modes so a promising draft can be pushed further instead of regenerated from scratch. spaCy identifies characters and locations and highlights them inline, and analytics report story metrics and word frequency across the library.

The Problem

Generic text generation is not useful to a production team

Asking a model for "a story" returns prose. Prose is not what a screen production consumes — it needs scenes, and each scene needs to specify who is in it, what happens, how it is shot and how it is lit.

The second problem is iteration. A writer rarely wants a different story; they want this story, changed. Regenerating from scratch loses whatever was working.

Technical Approach

Constrain the shape, then vary within it

Generation is steered toward a scene-level structure rather than free prose, with genre, tone, length and creativity exposed as controls. Continuation and variation operate on an existing piece, so a draft can be extended or re-angled while keeping what works.

Entity extraction runs over the result to surface characters and locations — useful both as a reading aid and as a consistency check across a library.

01 BRIEFPremise, genre, tone, length
02 GENERATEStructured scene breakdown
03 EXTRACTCharacters and locations identified
04 ITERATEContinue or vary an existing draft
05 EXPORTStructured output for downstream use
Capabilities

What it does

✍️

Generation

  • Scene-level structure
  • Genre, tone, length and creativity controls
  • Single and CSV batch modes
📚

Iteration

  • Saved story library
  • Continuation of an existing draft
  • Variation without full regeneration
📊

Analysis

  • Character and location extraction
  • Inline entity highlighting
  • Story metrics and word frequency
Technologies

Actual stack

Generation
Local LLMsTransformersPrompt engineering
NLP
spaCyEntity extraction
Interface
StreamlitBatch CSVExport
Limitations

What it is for

⚠️ A drafting tool, not a writer

Output is starting material. It is structurally sound and useful to iterate on; it is not finished writing, and the project does not claim otherwise.

Quality tracks the local model in use. No evaluation of narrative quality has been run, so no such claim is made.

Structured output has somewhere to go

The scene-level format this produces is the same shape the AVS pipeline consumes — which is why it was built this way rather than as a prose generator.