meta stay in plain text.
encrypt object
| Field | Type | Required | Default | Values |
|---|---|---|---|---|
cipher | string | ✓ | aes-256-ctr | Any symmetric cipher the tooling supports. |
hash | string | ✓ | sha256 | Hash used for key derivation. |
encoding | enum | ✓ | hex | hex, base16, base32, base64, ascii85. |
meta | meta | — | {} | Free-form extension. |
Scope
- Document-level
encrypt(on the document root) applies to every element that does not set its own. - Element-level
encrypton an individual element overrides the root.
What is encrypted
- Every value in a
textlanguage map on every element (action, dialogue, parenthetical, shot, transition, general, cue). note.text.- Slugline
desc. - Character
desc. - Logline.
- Cover
extra. - Any other
textmap inside the document tree that sits under a scope with encryption enabled.
What is not
- All UUIDs.
- All timestamps (
created,modified,updated). - Tag arrays —
props,sfx,locations,genre,themes, every scene taxonomy, plustaggable. - Character canonical
nameandaliases. metamaps.- Everything under
analysis— embeddings, passages, summaries.
Key derivation
The encryption key is derived from the shared secret via a single pass of the declaredhash. Default: SHA-256.
Keys must be at least 10 characters. Shorter keys are rejected by screenjson encrypt.
CLI entry points
screenjson encryptscreenjson decryptscreenjson convert --encrypt <key>screenjson export --decrypt <key>
Environment variable
SCREENJSON_ENCRYPT_KEY is read by every CLI command that takes a --key / --encrypt / --decrypt flag when no explicit value is provided.