Skip to content
screenjson

Schema & data

Store ScreenJSON in DynamoDB

Use DynamoDB as the authoritative store for ScreenJSON documents keyed by UUID.

Last updated January 2026

From the CLI

screenjson convert -i screenplay.fdx \
  --db dynamodb \
  --db-collection screenplays \
  --blob-region us-west-2
AttributeTypeNotes
id (partition key)StringThe ScreenJSON document UUID
version (sort key)StringSemver, sorts deterministically
titleMapLanguage-keyed title
genreList<String>
themesList<String>
documentMapThe nested document object
analysisMapOptional, consider a sibling table for size

Global secondary indexes

  • By author — projects authors[].id so you can list every script by a writer across the catalogue.
  • By genre — sparse index on the first element of genre, useful for faceted browsing.
  • By scene count — computed at write time, stored as a number, used for “shortest / longest script” queries.

Size discipline

A feature-length ScreenJSON document with analysis populated will often exceed DynamoDB’s 400 KB item limit. Split analysis off into a sibling table keyed by id, and treat it as a join on read.

Table:  screenplays         Attributes: id, version, document, …
Table:  screenplays_analysis  Attributes: id, embeddings, passages, summaries

Next