Narrative Template
Schema for narrative template files in the openpresentation.org catalog. Each template describes a named story arc (e.g. 'problem-solution', 'scqa') as an ordered list of beats. Templates are referenced from O…
https://openpresentation.org/schema/opf-narrative/v1
spec/schemas/narrative.schema.json
Field index
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
| $schema | const | yes | — | |
| id | string | yes | — | Stable slug used by OPF documents to reference this template, e.g. 'problem-solution'. Lowercase kebab-case. |
| name | string | yes | — | Human-readable template name, e.g. 'Problem → Solution'. |
| summary | string | — | — | One-sentence description of when and why to use this narrative. |
| description | string | — | — | Longer prose describing the narrative arc and ideal use cases. Used by AI-driven generation to seed deck-level direction. |
| audienceFit | array<string> | — | — | Audiences this narrative works well for, e.g. ['executives', 'investors', 'customers']. |
| durationRange | object | — | — | Typical talk-length window this narrative suits. |
| tags | array<string> | — | — | Free-form labels for filtering and search, e.g. ['business', 'pitch', 'internal']. |
| preview | object | — | — | Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available. |
| beats | array<ref:Beat> | yes | — | Ordered list of beats that make up the narrative arc. |
$schema
Type: const · Required · Default: —
{
"$schema": "https://openpresentation.org/schema/opf-narrative/v1"
}id
Type: string · Required · Default: — · Pattern: ^[a-z][a-z0-9-]*$
Stable slug used by OPF documents to reference this template, e.g. 'problem-solution'. Lowercase kebab-case.
{
"id": "id-value"
}name
Type: string · Required · Default: —
Human-readable template name, e.g. 'Problem → Solution'.
{
"name": "name-value"
}summary
Type: string · Optional · Default: —
One-sentence description of when and why to use this narrative.
{
"summary": "summary-value"
}description
Type: string · Optional · Default: —
Longer prose describing the narrative arc and ideal use cases. Used by AI-driven generation to seed deck-level direction.
{
"description": "Open with the cost of slow agentic workflows, contrast with what becomes possible at sub-second latency, then walk through our architecture and benchmark results, ending with a concrete adoption ask."
}audienceFit
Type: array<string> · Optional · Default: —
Audiences this narrative works well for, e.g. ['executives', 'investors', 'customers'].
{
"audienceFit": []
}durationRange
Type: object · Optional · Default: —
Typical talk-length window this narrative suits.
{
"durationRange": {}
}preview
Type: object · Optional · Default: —
Visual previews of the record, used by picker UIs and inline rendering. All sub-fields are optional; engines fall back gracefully when previews aren't available.
{
"preview": {}
}beats
Type: array<ref:Beat> · Required · Default: —
Ordered list of beats that make up the narrative arc.
{
"beats": []
}