{}OPF
DocsObject referenceEdit on GitHub

Narrative Beat

A single narrative beat — a labeled segment of the story arc with a specific dramatic purpose (e.g. 'hook', 'problem', 'evidence', 'ask'). Slides reference beats via Slide.beat. Beats may also carry slide-blue…

Metadata

Definition

#/$defs/NarrativeBeat

Type

object

Source

spec/schemas/opf.schema.json

Fields

FieldTypeReqDescription
idstringyesStable slug used by Slide.beat to reference this beat. Lowercase kebab-case.
namestringyesHuman-readable beat name.
descriptionstringCurator-written prose that explains what this beat should accomplish.
instructionsstringShort author-facing instruction for the beat — typically one phrase. Complements 'description' with a concise directive.
slideCountintegerOptional explicit slide count for this beat. Defaults to 1 when omitted; values >1 are reserved for beats that intentionally span multiple slides. Prefer decomposing a heavy beat into multiple beats over setting a high slideCount. The validator emits a warning if the deck's actu…
slideTypeenumDefault content kind for the beat's slide. Mirrors ContentPayload.type and helps engines choose a sensible layout when only the beat is specified.
layoutHintstringSuggested layout id for the beat's opening slide. Resolves the same way as Slide.layout — against catalogs.layouts and the default catalog at https://www.pptx.gallery/layouts.
thoughtCuesarray<string>Optional speaker or thinking cues attached to the beat. Surfaced in presenter notes.

id

Type: string · Required · Default: · Pattern: ^[a-z][a-z0-9-]*$

Stable slug used by Slide.beat to reference this beat. Lowercase kebab-case.

id.json
{
  "id": "hook"
}

name

Type: string · Required · Default:

Human-readable beat name.

name.json
{
  "name": "The Hook"
}

description

Type: string · Optional · Default:

Curator-written prose that explains what this beat should accomplish.

description.json
{
  "description": "Quantify the pain customers feel today, with one striking stat the audience can repeat afterward."
}

instructions

Type: string · Optional · Default:

Short author-facing instruction for the beat — typically one phrase. Complements 'description' with a concise directive.

instructions.json
{
  "instructions": "Capture audience attention"
}

slideCount

Type: integer · Optional · Default:

Optional explicit slide count for this beat. Defaults to 1 when omitted; values >1 are reserved for beats that intentionally span multiple slides. Prefer decomposing a heavy beat into multiple beats over setting a high slideCount. The validator emits a warning if the deck's actu…

slideCount.json
{
  "slideCount": 1
}

slideType

Type: enum · Optional · Default:

Default content kind for the beat's slide. Mirrors ContentPayload.type and helps engines choose a sensible layout when only the beat is specified.

slideType.json
{
  "slideType": "text"
}

layoutHint

Type: string · Optional · Default:

Suggested layout id for the beat's opening slide. Resolves the same way as Slide.layout — against catalogs.layouts and the default catalog at https://www.pptx.gallery/layouts.

layoutHint.json
{
  "layoutHint": "section-divider"
}

thoughtCues

Type: array<string> · Optional · Default:

Optional speaker or thinking cues attached to the beat. Surfaced in presenter notes.

thoughtCues.json
{
  "thoughtCues": [
    "What pain is the audience feeling right now?",
    "Why hasn't anyone solved this yet?"
  ]
}