From the CLI
screenjson convert -i screenplay.fdx \
--db dynamodb \
--db-collection screenplays \
--blob-region us-west-2
Recommended schema
| Attribute | Type | Notes |
|---|---|---|
id (partition key) | String | The ScreenJSON document UUID |
version (sort key) | String | Semver, sorts deterministically |
title | Map | Language-keyed title |
genre | List<String> | |
themes | List<String> | |
document | Map | The nested document object |
analysis | Map | Optional, consider a sibling table for size |
Global secondary indexes
- By author — projects
authors[].idso 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