pdf_path: ./assets/raven.pdf
label: raven
input_language: en
plate_language: ${input_language}
output_languages:
- ${plate_language}
output_dir: output
run_output_dir: ${output_dir}/${label}
clear_cache: false
print_available_models: false
crop_strategy: none
glossary_strategy: none
explanation_strategy: none
easy_read_strategy: none
caption_strategy: none
activity_strategy: none
speech_strategy: none
quiz_strategy: none
custom_plate_path: ''
regenerate_sections: []
edit_sections: {}
default_model: gpt-5
render_strategy: dynamic
default_render_strategy: html
styleguide: assets/styleguides/default.md
speech:
provider: dynamic
default_provider: openai
providers:
openai:
model: gpt-4o-mini-tts
languages:
- en
azure:
model: azure/speech/azure-tts
languages:
- es
- ta
- si
- en-tz
- sw-tz
- sw
bit_rate: 64k
sample_rate: 24000
format: mp3
voices_path: config/voices.yaml
instructions_path: config/speech_instructions.yaml
text_types:
book_title:
description: For the title of the book. There can only be one book title for the
entire book.
book_subtitle:
description: For the subtitle of the book. There can only be one subtitle for
the entire book.
book_author:
description: For the author of the book.
book_metadata:
description: For metadata about the book such as edition, publisher, year, series,
language, etc.
section_heading:
description: For text that introduces a new chapter, section, subsection, or topic.
section_text:
description: For the main body of text within the section.
instruction_text:
description: For instructions that direct the reader to do something or complete
an activity, including hints that are provided to help the reader answer questions
or solve problems.
activity_number:
description: For text that specifically denotes numbers (alphanumeric) that are
used to organize or label different activities, questions, or sections.
activity_title:
description: For text that is the title of the activity (often following the activity
number).
activity_option:
description: For text that provides options for an activity like a multiple choice
or matching activity.
activity_input_placeholder_text:
description: For any text that will be used as a placeholder in an input field
for a fill in the blank activity. E.g. 'replace the word'.
fill_in_the_blank:
description: For text that includes blanks that the reader must fill in for a
fill in the blank activity.
image_associated_text:
description: For text that accompanies or is directly associated with an image
to label, explain, or contextualize it. This includes figure numbers, titles,
captions, descriptions, copyright information, and credits.
image_overlay:
description: For text that is overlaid on an image at a specific location, such
as a speech bubble.
math:
description: For math. MATH MUST BE EXTRACTED AS LATEX. DO NOT, I REPEAT DO NOT
INCLUDE ANY RENDERING CHARACTERS LIKE \( \) OR \[ \] OR $$.
standalone_text:
description: For text that does not fall within a section and/or stands alone
from the regular material. It may be surrounded in a colored box.
header_text:
description: For text that appears in the header of the page.
footer_text:
description: For text that appears in the footer of the page.
page_number:
description: For text that indicates the page number of the page.
other:
description: For any other text that does not fit the above categories.
text_group_types:
heading:
description: For chapter titles or section headings that stand alone on a line.
paragraph:
description: For regular paragraphs of text that are grouped together.
stanza:
description: For poetry or verse that is grouped into stanzas.
list:
description: For lists or bullet points that are grouped together.
other:
description: For any other text that does not fit the above categories.
section_types:
front_cover:
description: For the front cover page of the textbook that is the first page.
There can only be one front cover page. IMPORTANT! Only the first page can be
a front cover page.
render_strategy: two_column
inside_cover:
description: For an inside cover page that can contain the title.
render_strategy: two_column
back_cover:
description: For a back cover page that is the last page of the textbook.
render_strategy: two_column
separator:
description: For a separator page that breaks up the text into different logical
sections.
render_strategy: single_column
credits:
description: For a credits page that lists the credits and acknowledgements of
the textbook.
render_strategy: html
foreword:
description: For a foreword page that can be an introduction, overview, or note
from the author.
render_strategy: two_column
table_of_contents:
description: For a table of contents page.
render_strategy: html
boxed_text:
description: For text that is contained in a box or callout section.
render_strategy: two_column
text_only:
description: For a reading section with only text.
render_strategy: two_column
text_and_single_image:
description: For a section that contains text and a single image.
render_strategy: two_column
text_and_images:
description: For a reading section with text and images.
render_strategy: html
images_only:
description: For a section with only images.
render_strategy: two_column
activity_matching:
description: For an interactive matching activity where you match items in a list
to items in another list. In general, you can only match one item from the first
list to one item in the second list. If you have fewer items in the second list
- this is likely a 'sorting activity'.
render_strategy: activity
activity_fill_in_a_table:
description: For an interactive table to fill in.
render_strategy: activity
activity_multiple_choice:
description: For an interactive multiple choice activity with a question and two
or more options with only one right answer. e.g. 'circle the correct answer'.
render_strategy: activity
activity_true_false:
description: For a true or false activity with a question and either a true or
false answer.
render_strategy: activity
activity_open_ended_answer:
description: For an activity section with only open ended text response.
render_strategy: activity
activity_fill_in_the_blank:
description: For a fill in the blank activity with one or more blanks to fill
in, with a very short answer.
render_strategy: activity
activity_sorting:
description: For a sorting activity with a collection of text or images that need
to be sorted into different categories. You can have more items in the list
to be sorted than categories to sort into.
render_strategy: activity
other:
description: For any other section type that does not fit the above categories.
render_strategy: html
render_strategies:
single_column:
render_type: template
config:
render_template_path: templates/single_column_render.html
two_column:
render_type: template
config:
render_template_path: templates/two_column_render.html
two_column_story:
render_type: template
config:
render_template_path: templates/two_column_template_render_story.html
overlay:
render_type: html
config:
model: default
template_path: prompts/web_generation_overlay.jinja2
max_retries: 25
section_quiz:
render_type: template
config:
render_template_path: templates/quiz_render.html
html:
render_type: html
config:
model: default
template_path: prompts/web_generation_html.jinja2
max_retries: 25
example_dirs: []
activity:
render_type: activity
config:
model: default
template_path: prompts/activities/generic.jinja2
max_retries: 25
example_dirs: []
page_range:
start: 0
end: 0
page_grouping: single
image_filters:
size:
max_side: 3500
min_side: 150
blank:
threshold: 2
text_filters:
pruned_text_types:
- footer_text
- page_number
- other
section_filters:
pruned_section_types:
- back_cover
- credits
- inside_cover
quiz_count_section_types:
- boxed_text
- text_only
- text_and_single_image
- text_and_images
- images_only
prompts:
metadata_extraction:
model: gpt-5
template_path: prompts/metadata_extraction.jinja2
page_range: 10
text_extraction:
model: gpt-5
template_path: prompts/text_extraction_groups.jinja2
meaningfulness:
model: gpt-5
template_path: prompts/image_meaningfulness.jinja2
crop:
model: default
template_path: prompts/image_crop_storybook.jinja2
recrop_template_path: prompts/image_recrop_storybook.jinja2
recrops: 2
caption:
model: gpt-5
template_path: prompts/image_caption.jinja2
page_sectioning:
model: gpt-5
template_path: prompts/page_sectioning_by_page.jinja2
section_explanation:
model: gpt-5
template_path: prompts/section_explanation.jinja2
section_quiz:
model: gpt-5
template_path: prompts/section_quiz.jinja2
sections_per_quiz: 3
text_translation:
model: gpt-5
template_path: prompts/text_translation.jinja2
glossary_translation:
model: gpt-5
template_path: prompts/glossary_translation.jinja2
section_glossary:
model: gpt-5
template_path: prompts/section_glossary.jinja2
text_easy_read:
model: gpt-5
template_path: prompts/text_easy_read.jinja2
web_edit:
model: gpt-5
template_path: prompts/web_edit.jinja2
max_retries: 3
timeout: 120
activity_sorting:
model: default
template_path: prompts/activities/sorting.jinja2
activity_matching:
model: default
template_path: prompts/activities/matching.jinja2
activity_fill_in_a_table:
model: default
template_path: prompts/activities/fill_in_a_table.jinja2
activity_true_false:
model: default
template_path: prompts/activities/true_false.jinja2
activity_open_ended_answer:
model: default
template_path: prompts/activities/open_ended_answer.jinja2
activity_fill_in_the_blank:
model: default
template_path: prompts/activities/fill_in_the_blank.jinja2
activity_multiple_choice:
model: default
template_path: prompts/activities/multiple_choice.jinja2
activity_sorting_answers:
model: default
template_path: prompts/activities/answers/sorting.jinja2
activity_matching_answers:
model: default
template_path: prompts/activities/answers/matching.jinja2
activity_true_false_answers:
model: default
template_path: prompts/activities/answers/true_false.jinja2
activity_fill_in_the_blank_answers:
model: default
template_path: prompts/activities/answers/fill_in_the_blank.jinja2
activity_fill_in_a_table_answers:
model: default
template_path: prompts/activities/answers/fill_in_a_table.jinja2
activity_multiple_choice_answers:
model: default
template_path: prompts/activities/answers/multiple_choice.jinja2
speech_generation:
model: default
template_path: prompts/speech_generation.jinja2