Generate lectures from a course outline using VectorShift and automatically render them in the physician preview system
Generate complete lecture packages from a course outline and automatically register them for physician preview. This skill combines the VectorShift pipeline with the physician course preview system.
/generate-lectures-and-render <outline_path> [options]
Examples:
/generate-lectures-and-render outline.md - Generate all, prompt for physician/course/generate-lectures-and-render outline.md --physician dr-abid-husain --course advanced-cardio/generate-lectures-and-render outline.md --dry-run - Preview onlyWhen this skill is invoked, execute these phases:
Extract from invocation:
outline_path (required)--physician ID (optional)--course ID (optional)--dry-run, --start N, --end N, --materials PATH, --no-llm-parser (pass to generator)If --physician not provided, ask:
What is the physician ID? (e.g., dr-john-smith)
If --course not provided, ask:
What is the course ID? (e.g., metabolic-health)
Read the registry file:
content/physician-courses/registry.ts
Check if physician ID exists in physicianRegistry.
If NEW physician, collect metadata:
If EXISTING physician, check if course exists:
Ask for:
Display summary:
PHYSICIAN: dr-john-smith (New/Existing)
COURSE: metabolic-health (New/Existing)
OUTLINE: path/to/outline.md
LECTURES: N found in outline
OUTPUT: content/physician-courses/dr-john-smith/metabolic-health/
Proceed with generation? [Y/n]
Execute the Python runner (same as /generate-lectures):
python3 "/Users/anantvinjamoori/Vectorshift Pipelines/cli/iterative_lecture_runner.py" \
"{outline_path}" \
{--dry-run if specified} \
{--start N if specified} \
{--end N if specified} \
{--materials PATH if specified} \
{--no-llm-parser if specified}
The runner will:
outputs/{course_name}/Output files per lecture:
lecture_N_slides.json - The JSON we needlecture_N_transcript.mdlecture_N_blueprint.mdlecture_N_research_dossier.mdlecture_N_kb_context.mdAfter generation completes (or for each successful lecture), perform these steps:
mkdir -p "content/physician-courses/{physician}/{course}"
Example:
mkdir -p "content/physician-courses/dr-john-smith/metabolic-health"
For each generated lecture:
cp "outputs/{course_name}/lecture_N_slides.json" \
"content/physician-courses/{physician}/{course}/lecture-N.json"
Example:
cp "outputs/Metabolic_Health/lecture_1_slides.json" \
"content/physician-courses/dr-john-smith/metabolic-health/lecture-1.json"
For each copied JSON file, read the title field for registry entry.
Edit content/physician-courses/registry.ts:
A. Add Import Statements
Insert after existing imports (after line ~10):
import drSmithMetabolicLecture1 from './dr-john-smith/metabolic-health/lecture-1.json';
import drSmithMetabolicLecture2 from './dr-john-smith/metabolic-health/lecture-2.json';
Import naming convention: dr{LastName}{CourseShort}Lecture{N}
dr-john-smith → Smithmetabolic-health → MetabolicLecture1, Lecture2, etc.B. Add/Update Physician Entry
For NEW physician, add before the closing }; of physicianRegistry:
'dr-john-smith': {
physician: {
id: 'dr-john-smith',
name: 'Dr. John Smith',
credentials: 'MD',
specialty: 'Metabolic Medicine',
},
courses: [
{
id: 'metabolic-health',
title: 'Metabolic Health Fundamentals',
description: 'A comprehensive course on metabolic optimization.',
status: 'preview',
lectures: [
{
id: 'lecture-1',
title: 'Introduction to Metabolic Health',
order: 1,
lecture: drSmithMetabolicLecture1 as Lecture,
},
{
id: 'lecture-2',
title: 'Metabolic Pathways',
order: 2,
lecture: drSmithMetabolicLecture2 as Lecture,
},
],
},
],
},
For EXISTING physician with NEW course, add to their courses array:
{
id: 'new-course-id',
title: 'New Course Title',
description: 'Course description.',
status: 'preview',
lectures: [
{ id: 'lecture-1', title: 'Lecture 1 Title', order: 1, lecture: importVar as Lecture },
],
},
For EXISTING course, add to the lectures array:
{
id: 'lecture-3',
title: 'New Lecture Title',
order: 3,
lecture: drSmithMetabolicLecture3 as Lecture,
},
URL pattern: