THU-MAIC / THU-MAIC/OpenMAIC

[Feature]: Per-Scene Editing & Regeneration

Open
#202 1 comment 1 reaction 0 assignees View on GitHub
area:editor enhancement priority:P1 status:in-progress type:epic
Dominant language
TypeScript
Stars
37.7k
Forks
5.9k
Avg merge
1d 3h
Merged PRs (30d)
193

Description

### Problem or Motivation

After generating a classroom lesson, there is no way to edit or regenerate individual scenes. If I want to fix the text on slide 7, change an image on slide 12, or rephrase a quiz question on slide 4, my only options are:

Regenerate the entire lesson from scratch — which loses all the good content on other slides
Export to PPTX and edit manually in PowerPoint — which loses all interactive classroom features (narration, quizzes, simulations, whiteboard)

This is especially frustrating for longer lessons. I generated a 23-slide presentation on energy transition, and while 20 slides were excellent, 3 needed text adjustments and 1 needed a different image. I had to regenerate the whole thing multiple times to get all slides right, wasting tokens and time.
The current workflow forces an all-or-nothing approach that doesn't match how professionals actually create presentations: generate → review → refine specific parts → finalize.

### Proposed Solution

Proposed Solution
A per-scene editing system with three levels of control:
Level 1 — Direct Text Editing (highest priority)

Click any text element in a scene to edit it inline
Changes save to scene data and reflect in both classroom playback and PPTX export
Covers: typo fixes, rephrasing, updating numbers/names/terminology

Level 2 — AI-Powered Scene Regeneration

Add an "Edit with AI" button on each scene
User types a natural language instruction, e.g.:

"Make this slide more visual and less text-heavy"
"Replace the chart with a comparison table"
"Simplify the language for a non-technical audience"

System calls the LLM to regenerate only that one scene, using surrounding scenes as context for coherence
Suggested API: POST /api/regenerate-scene with classroomId, sceneIndex, instruction, and optional directEdits

Level 3 — Image & Layout Editing

Swap images (upload custom or request AI regeneration)
Adjust layout (e.g., single-column → two-column)
Modify visual elements (colors, chart types)

Why this is technically feasible: The Stage 2 generation pipeline in lib/generation/ already generates each scene independently. Exposing per-scene regeneration as a separate endpoint reuses the existing logic. The components/scene-renderers/ already render scenes independently, so adding an edit overlay per scene should be contained. The PPTX export in packages/pptxgenjs/ processes slides individually, so updated scenes would automatically appear in re-exports.

### Alternatives Considered

Full regeneration with seed/lock: Lock specific scenes as "approved" and only regenerate unlocked ones. Simpler than a full editor but still requires re-running the generation pipeline. Doesn't help with small text fixes.
Post-export editing only: Accept that editing happens outside OpenMAIC in PowerPoint/Google Slides. Works for static slides but loses all interactive features (narration timing, quizzes, simulations, whiteboard drawings, agent discussions).
Prompt refinement loop: Iteratively improve the initial prompt until all scenes are satisfactory. In practice this doesn't work well — improving one scene through prompt changes often degrades others.
External editor integration: Build a plugin for Figma or Google Slides that syncs back to OpenMAIC. Too complex and creates dependency on third-party tools.

None of these alternatives provide the simple, integrated editing experience that users expect from a content creation tool.

### Area

Classroom generation

### Additional Context

Real-world use case: I'm using OpenMAIC to create educational presentations about renewable energy and community ownership models for a European startup. A typical lesson has 20+ slides covering complex topics (EU regulations, financial models, technology curves). After generation, typically 80-90% of slides are excellent, but 2-3 need text refinements, and 1-2 need different visuals. The inability to edit individual scenes is the single biggest friction point in my workflow.
Suggested implementation phases:

Phase 1: Direct text editing (lowest effort, highest immediate value)
Phase 2: AI-powered per-scene regeneration (medium effort, unique differentiator)
Phase 3: Image & layout editing (highest effort, makes OpenMAIC competitive with dedicated tools)

Additional ideas that pair well with this feature:

Scene version history (keep last 2-3 versions, allow "undo" if regeneration is worse)
"Regenerate scene" command via OpenClaw integration ("regenerate slide 5 to focus on financial returns")
Batch mode: select multiple scenes and apply the same instruction to all

Environment:

Platform: open.maic.chat (hosted)
Test classroom: 23-slide energy transition lesson with mixed scene types (slides, quizzes, interactive simulations)
Browser: Chrome, Windows

Contributor guide

Open the contributing guide

Research direction

Start by reading the Stage 2 generation pipeline in lib/generation/ and the independent scene renderers in components/scene-renderers/. Trace how scene data reaches classroom playback and how packages/pptxgenjs/ processes slides, then assess the proposed POST /api/regenerate-scene entry point. Done means the phased scope is agreed and individual scene edits or regeneration remain consistent in playback and PPTX export.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
full-stack
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.