Welcome!

Table of Contents (TOC)

The table of contents is defined in the toc.yml file, which can be divided into two parts:

  1. The essential and/or optional details needed to generate each video.
  2. The basic course structure.

As an example:

# Essential and/or optional details
name: Hello world
version: v1
email: help@lupo.ai, dev@lupo.ai
speaker: Jenny
speed: 1.1
pitch: 1.2
style: default
slides: false
resolution: 720
# Basic course structure
chapters:
  - name: Chapter One
    sections:
      - name: Test
        href: hello_world.md
        generate: true
  - name: Chapter Two
    sections:
      - name: Test_2
        href: hello_world_2.md
    generate: false

Essential and/or optional details

As essential and/or optional details needed to generate each video, we have:

Field Name Required Description Example
name Yes The name of the course name: Course Creator Demo
version No

Sets default: v1
Used only by AI narration: when Lupo has to write the narration for a slide that has none, this value is sent as the narration API version. It has no effect on a normal Markdown build, so leave it at v1. version: v1
email No

Sets default: the address on file for the GitHub account that started the build
A comma-separated list of email addresses that receive the build notification with links to the generated videos email: email_1@example.com, email_2@example.com, ...
speaker No

Sets default: Aria
The narrator who reads the narration of every generated video. Use the voice's first name only — Aria, Jenny, Abbi. The Choose a voice list in the web app shows it with its country and language, as in "Abbi-GB (English)"; write only the part before the dash. A name Lupo doesn't recognise falls back to Aria without an error. speaker: Abbi
Narrators explains the voice types; Emotions lists the style names.
speed No

Sets default: 1
How fast the narrator speaks; the length of the video follows the narration. Accepts a value from 0.5 to 2, with 1 being the normal rate. A value outside that range is passed through with a warning, not corrected. speed: 1.5 makes the narration 1.5 times faster than normal.
pitch No

Sets default: 1
The pitch of the narrator's voice. Accepts a value from 0.5 to 1.5, with 1 being the normal pitch. A value outside that range is passed through with a warning, not corrected. pitch: 1.2 raises the pitch of the voice by 20%.
style No

Sets default: default
The speaking style (emotion) of the narrator, applied to every generated video. Only Standard voices that support styles honour it; with any other voice, Premium voices included, Lupo falls back to the default style. style: excited
Emotions lists the style names.
slides No

Sets default: False
A boolean value indicating whether to also produce a PowerPoint presentation, a PDF document and an HTML document for each video slides: True
transcript No

Sets default: False
A boolean value indicating whether to also produce a transcript: one text file per chapter, holding the chapter name followed by the narration of each of its sections transcript: True
resolution No

Sets default: 720
The resolution of the produced video: 720 (1280x720) or 1080 (1920x1080). Any other value falls back to 720. resolution: 720

Basic course structure

# Essential and/or optional details previously selected

chapters:
  - name: [Chapter 1 Name]
    sections:
      - name: [Section Name]
        href: [Path/to/file.md]
        generate: [true|false]  # Optional, section level
        speaker: Aria           # Optional section override, defaults: chapter or course value
        speed: 1.2              # Optional section override, defaults: chapter or course value
        pitch: 1.3              # Optional section override, defaults: chapter or course value
        emotion: friendly       # Optional section override, defaults: chapter or course value
  - name: [Chapter 2 Name]
    generate: [true|false]      # Optional, chapter level
    combine: [true|false]       # Optional, chapter level
    sections:
      - name: [Section 1 Name]
        href: [Path/to/file.md]
      - name: [Section 2 Name]
        href: [Path/to/file.md]

You should consider proper indentation in the YAML file is of utmost importance. It is not just about maintaining a neat and organized appearance: toc.yml is read as YAML, and a file whose sections: sits deeper than its chapter's name: is rejected before anything renders. Indent two spaces per level, as in every example on this page.

  • chapters:: This is the main container for all the chapters or episodes of the video series. Each chapter is listed as a sub-item under this section.
  • name: [Chapter name]: Within the chapters section, you define the name of each chapter or episode. This name should give a clear idea of the content covered in that particular video.
  • sections:: For each chapter, you can create multiple sections, each representing a specific segment or topic within the video.
  • name: [Section name]: Under each chapter, you define the name of the section. This name helps viewers understand the specific focus of that particular segment.
  • href: [Path/to/file.md]: The path, relative to toc.yml, of the Markdown file for the section: its slides and their narration. A PowerPoint file or a Google Slides link works here too.

And optional indications:

  • generate: [true|false]: Specifies whether the section or chapter should be included in the generated output. If not specified, defaults to true.
  • speaker, speed, pitch, emotion: Optional overrides of the voice settings for one chapter or one section. If not provided at the section level, the chapter value is used, and if there is none, the course value. Note the key name: at chapter and section level the style is set with emotion, while the course-level key is style. A style: on a chapter or section is ignored.
  • combine: [true|false]: A chapter-level flag. If set to true, the chapter's sections are joined into a single video with a single caption file. On a section it is accepted but has no effect.