Please generate scene outlines based on the following course requirements.
{{requirement}}
{{userProfile}}
Infer the course language directive by applying the decision rules from the system prompt. Key reminders: - Requirement language = teaching language (unless overridden by explicit request or learner context) - Foreign language learning → teach in user's native language, not the target language - PDF language does NOT override teaching language — translate/explain document content instead
{{pdfContent}}
{{availableImages}}
{{researchContext}}
{{teacherContext}}
Please automatically infer the following from user requirements:
Then output your response as a single JSON object.
Top-level shape — this is what you MUST return:
{
"languageDirective": "2-5 sentence instruction describing the course language behavior",
"courseTitle": "concise course name, ≤30 chars, in the teaching language",
"outlines": [ /* array of scene objects, schema described below */ ]
}
Never return a bare array. Never omit languageDirective or courseTitle. All three keys are required.
Each scene inside the outlines array has this minimum shape:
{
"id": "scene_1",
"type": "slide" | "quiz" | "interactive" | "pbl",
"title": "Scene Title",
"description": "Teaching purpose description",
"keyPoints": ["Point 1", "Point 2", "Point 3"],
"order": 1
}
json
"quizConfig": {
"questionCount": 2,
"difficulty": "easy" | "medium" | "hard",
"questionTypes": ["single", "multiple"]
}
{{#if hasSourceImages}}suggestedImageIds to relevant slide scenes. Only use image IDs listed under Available Images.
{{/if}}"type": "interactive" with widgetType and widgetOutline fields. Limit to 1-2 per course.Final reminder: your entire response must be a JSON object with exactly three top-level keys — languageDirective (string), courseTitle (string, ≤30 chars, in the teaching language), and outlines (array). Do not return a bare array. Do not wrap in prose or code fences.