An Explain This Button That Plays a Finished Lesson
An Explain This button can answer a learner with a finished whiteboard video of their exact step. Golpo draws the correction, narrates it, and can keep the same instructor present across every attempt.

The short answer: An Explain This button can answer a learner with a finished whiteboard video of their exact step. Golpo plans the scenes, draws the correction, narrates it, syncs the timing, and returns a video the practice product can play inside the lesson.
Why this is practical now: Help becomes a video of the move the learner just attempted. The same instructor face and voice can deliver that help across thousands of attempts, because a selfie, your own audio, or an authorized voice clone can ride along with every render.
The Golpo API makes the button real. Codex, Claude Code, Cursor, VS Code with GitHub Copilot, Claude Desktop, and Visual Studio can call it through the Golpo skill or the Golpo MCP server, wait for the file, and hand a polished lesson back to the course.
Use the full Golpo production system
Golpo is built to be the world's best AI whiteboard explainer video maker. Give it a topic, a prompt, a script, an audio recording, or a source document. It scripts, plans the scenes, designs the visuals, narrates, times and synchronizes every frame, and returns a polished video. One person can run that system across a whole course.
Use a fast whiteboard walkthrough for the learner's exact step. When the course should still feel taught by one instructor, add a selfie-based presenter, your own audio, or an authorized voice clone.
- Start with an idea or source. Golpo can draft the script and plan the scenes from a topic, a document, or your outline. Script Mode can also speak the exact words you already trust.
- Keep the creator present. With AI Presenter, a course creator, founder, professor, or YouTuber can upload a selfie and appear beside the whiteboard. One person can lead a large lesson library without recording every visual sequence on camera.
- Use the right voice. Own Narration turns uploaded or live-recorded audio into the visual lesson. An authorized Voice Clone gives recurring lessons a recognizable voice at scale. Consent and pronunciation review remain required.
- Repair instead of restarting. The frame-by-frame editor can replace text, images, references, or an individual visual when the QA pass finds a local problem.
- Automate at scale. The Golpo API can be called from Codex, Claude Code, or through the Golpo MCP server in Cursor, VS Code with GitHub Copilot, Claude Code, Claude Desktop, and Visual Studio. The course platform can generate, poll, review, and publish without a person moving files between tools.
Where the other API guides stop
How the Golpo API works is the orientation. Payload examples are the v1-shaped samples. The v2 document pipeline owns upload, polling, retries, and storage for files the caller already has. The verified-problem pipeline is a coding assistant checking public problems. This page owns the studio button: one learner attempt, one approved script, one persisted job, one watch-back.
The house rule for the wider library is the checked-lesson hub. The diagnosis pattern, once a wrong line is known, is explain the step the learner wrote. This page is the plumbing that gets that diagnosis onto the screen without skipping the check.
States of one attempt
- Submitted. The learner asks for help on a linear expression. The studio stores the item, the line the learner wrote, and the answer key. Attempt A-1847 in the second video is this kind of record.
- Drafted. The studio’s creator agent writes a short script. The script may name the wrong line and the corrected line. It does not get a video yet.
- Recomputed. The studio’s QA agent solves the item independently. It also substitutes a test value. If the learner’s line and the identity disagree at that value, the learner’s line is rejected. If the draft’s corrected line disagrees with the QA agent’s solution, the draft is rejected too.
- Approved. The script hash is stored with the attempt ID. That pair is the studio’s unique key. The public v2 reference does not document an idempotency-key header. The studio’s own database is what stops a double submit.
- Sent. The app calls
POST /api/v2/videos/generatewith thex-api-keyheader.promptremains required.custom_scriptis the approved text.timingis"1". The engine and its style variant have to match: a canvas engine needs a canvas style variant, and a sketch engine needs a sketch style variant.visibilitystaysprivateuntil an instructor accepts the watch-back. Confirm this contract against the current v2 reference before you ship the button. The docs move. - Persisted. The response’s
job_idis written to the attempt before any poll. A crashed worker resumes that ID. It does not create another job because the first request might have succeeded. - Polled. The worker calls
GET /api/v2/videos/status/{job_id}. Current public v2 docs describe polling and avideo_urlon the default video response. They do not document a native completion webhook. The studio can emit its own internal event when the status says the file is ready. - Watched back. The studio reviews audio and visuals against the approved script. A wrong exponent, a dropped term, or a number that was not in the script fails the attempt.
- Released or returned. A pass can put the private file in the player for that learner. A generation failure, a mismatched spoken number, or a bad drawing returns the attempt to an instructor. The app does not mint a second job on its own.
The item the button is explaining
Constructed item: expand (x + 3) squared. The learner wrote (x + 3)² = x² + 9. The identity is x² + 6x + 9, because the cross term is 2 · x · 3, which is 6x. A value check at x = 1: the left side is (1 + 3)² = 16. The learner’s line is 1 + 9 = 10. The corrected line is 1 + 6 + 9 = 16. The left side and the corrected line agree. The learner’s line does not. That disagreement is why the QA agent rejects x² + 9.
The first video is the lesson the learner sees after approval: the missing middle term, the substitution, and the corrected expansion. The second video is the studio’s own account of attempt A-1847, including the reject, the stored job ID, and the hold when a drawn exponent disagrees with the script. The closing idea of that second lesson is the ownership line: the reviewers are the studio’s, Golpo rendered the script the studio approved, and the check reduced the chance of a wrong lesson without certifying it.
Shot directions stay out of custom_script. The script-to-video guide is why. Visual constraints go in visual_instructions or the studio’s equivalent of video instructions, and the allowed labels stay short so a stray numeral is easy to spot.
Script Mode lesson 1 of 2
1. The missing middle term
Finished Golpo video · Lesson 1 · Script Mode · open MP4
Audience: A learner who expanded (x + 3) squared as x squared plus nine
Lesson job: Teach the missing middle term, which is the video shown after approval
Checked against: The learner wrote (x + 3)^2 = x^2 + 9. The identity is x^2 + 6x + 9 because the cross term is 2 · x · 3. At x = 1, the left side is 16, the learner's line is 10, and the corrected line is 16. This episode is the lesson the learner sees after approval. It does not narrate the studio pipeline.
Exact Golpo configuration
Own Narration: OFF · Script Mode: ON · Duration: 1 minute · Orientation: Horizontal (16:9) · Style: Dry Erase · Color: ON · Language: English · Voice: Female 2 · Pace: Normal · Music: None
Exact script used for this video
A learner expanded the square and dropped the middle. They wrote x plus three, squared, equals x squared plus nine. The identity is x squared plus six x plus nine. The missing piece is the cross term, two times x times three, which is six x. Check both lines at x equals one. The left side is one plus three, squared, which is sixteen. The learner's line is one squared plus nine, which is ten. The corrected line is one plus six plus nine, which is sixteen. Ten is not sixteen, so the short expansion fails. Sixteen matches the original square. Put the cross term back in the middle. x squared, then six x, then nine. The dropped term was the middle one. This is the lesson the learner sees once the script has been approved. Circle six x, because that is the term the short line lost.
Video Instructions
A learner's line drops the middle term. Restore six x between x squared and nine. At x equals one, the square is sixteen, the short line is ten, and the corrected line is sixteen. End with six x circled. Allowed labels: (x + 3)^2 = x^2 + 9; x^2 + 6x + 9; 2 * x * 3 = 6x; x = 1; Left side 16; Learner line 10; Corrected line 16. Do not add a sample stamp, a demo label, or any claim that the lesson is fictional. Show only the labels listed. If a number appears, it must match the narration exactly. No extra dates, prices, percentages, logos, or quotations.
Voice Instructions
Algebra teacher. Slow on the cross term and on the check at x equals one.
Course package
- Lesson title: The missing middle term
- Title card: THE MIDDLE TERM
- Closing line: What is 2 times x times 3?
Review before a learner can watch
At x = 1 the frames must show 16, 10, and 16. Block a drawing that leaves the exponent off or drops 6x.
Script Mode lesson 2 of 2
2. Attempt A-1847
Finished Golpo video · Lesson 2 · Script Mode · open MP4
Audience: The engineer wiring Explain This inside Algebra Practice Studio
Lesson job: Show draft, recomputation, the Golpo API v2 call, the stored job ID, and the instructor path
Checked against: Attempt A-1847. Studio creator agent drafts. Studio QA agent rejects x^2 + 9 because the x = 1 check fails (10 versus 16). The app posts the approved script to Golpo API v2, stores the returned job ID, polls, and holds the file when the drawn exponent disagrees. Closing line, in the studio's voice: these reviewers are ours; Golpo rendered the script we approved; the check reduced the chance of a wrong lesson and did not certify it. The v1 payload guide is a different API.
Exact Golpo configuration
Own Narration: OFF · Script Mode: ON · Duration: 1 minute · Orientation: Horizontal (16:9) · Style: Professional Clean · Color: ON · Language: English · Voice: Male 1 · Pace: Normal · Music: None
Exact script used for this video
Attempt A-1847 is one wrong submission in Algebra Practice Studio. The learner again wrote x squared plus nine for the square of x plus three. The studio's creator agent drafts a lesson from the item, the learner's step, and the answer key. The studio's QA agent recomputes. At x equals one, the learner's line is ten and the square is sixteen, so x squared plus nine is rejected. The app then sends the approved script to Golpo API version two and stores the job ID that comes back. It polls that same job. After the render, the studio checks the picture and the audio. A drawn exponent that disagrees with the script goes to the instructor. The app does not start a second job on its own. The learner never sees an unchecked video. These reviewers are ours. Golpo rendered the script we approved. The check reduced the chance of a wrong lesson. It did not certify it.
Video Instructions
Algebra Practice Studio. A creator agent drafts. A studio QA agent rejects the short expansion because the check at one fails. The app sends the approved script to Golpo and stores the job ID. A bad exponent goes to an instructor. End on the line that these reviewers belong to the studio. Allowed labels: Attempt A-1847; Algebra Practice Studio; Creator agent drafts; QA agent recomputes; x = 1; Learner 10; Square 16; Golpo API v2; Job ID stored; Instructor if the exponent disagrees. Do not add a sample stamp, a demo label, or any claim that the lesson is fictional. Show only the labels listed. If a number appears, it must match the narration exactly. No extra dates, prices, percentages, logos, or quotations.
Voice Instructions
Plain product explanation from the studio's side. No hype about automation.
Course package
- Lesson title: Attempt A-1847
- Title card: STORE THE JOB ID
- Closing line: Who gets the file if the drawn exponent disagrees?
Review before a learner can watch
Block publish if any reviewer is described as a Golpo agent, if a second job is minted automatically, or if the learner is shown an unchecked render. Do not invent a job ID number.
Failure handling
| What happened | What the studio does |
|---|---|
| QA agent’s substitution disagrees with the draft | Do not call generate. Return the draft to the creator step or the instructor. |
| Generate returns an error | Keep the attempt and the error. Ask the instructor. Do not loop. |
| The worker crashes after a successful generate | Poll the job ID already stored. Do not POST again. |
| Status never reaches a video URL inside the studio’s time limit | Leave the attempt open for the instructor. Do not show a spinner as if it were a lesson. |
| The file’s spoken or drawn numbers disagree with the script | Hold the file. The learner still sees no video. The instructor decides whether a corrected script may start a new attempt. |
A new attempt after a bad drawing is a new approval, a new script hash, and a new job ID. Reusing the old hash would pretend the failed file was the approved one.
Risks
The answer key can be wrong. If both the creator agent and the QA agent trust a bad key, the substitution might be skipped and the video will teach the key’s error. The studio’s check should recompute from the item, not only compare the draft to the key. The key is a second opinion. The arithmetic is the first.
Polling can mark a job complete before a person has watched it. “Complete” in the status payload means Golpo finished a render. It does not mean the studio accepted the lesson. The player should key off the studio’s acceptance flag, not off the presence of a URL.
Private visibility is a control the current docs describe as a gallery setting. It is not a full access-control design for minors, schools, or graded work. The studio still has to decide who can request the file. This guide does not invent a compliance certification around that choice.
What the studio stores that Golpo never sees
The generate call carries the approved script, the required prompt, timing, engine, style variant, and private visibility. The studio’s attempt row carries more, and that extra material stays in the studio. It includes the learner’s original line, the answer key, the QA agent’s substitution at x = 1, the script hash, the staff member or agent version that approved the text, and the instructor note if a prior attempt failed. Sending the learner’s entire history as the prompt would ask Golpo to invent a diagnosis the studio already rejected. The custom script is the diagnosis the studio kept.
A practical polling loop uses the stored job ID, waits, and reads status. The public v2 reference checked for this guide describes that GET. It does not describe a webhook the studio can rely on, and it does not describe an idempotency-key header. Backoff between polls is the studio’s courtesy to its own workers. It is not a documented Golpo retry contract, so this guide will not invent interval numbers and call them official. What the studio must not do is clear. If the status call fails because the studio’s network blipped, poll the same ID again. If generate itself failed before a job ID existed, ask the instructor. Do not write a loop that creates jobs until one of them returns a URL.
The instructor screen for attempt A-1847 should show four things side by side: the learner line x squared plus 9, the QA line x squared plus 6x plus 9, the value check 10 versus 16, and the job ID if a render exists. A play button appears only after watch-back. A staff member who can hear audio and read an exponent is the watch-back. A green status value copied from the API is not the watch-back. The player the learner opens is a studio URL that checks the acceptance flag and then redirects to the private file, or it embeds that file under the same flag. Designing that gate is application work. Golpo’s response does not include the gate.
Automate it: review gates and publishing with the Golpo API
For the Explain This button, the whole path from source to published lesson can run as one pipeline on the course platform. An agent in Codex with the Golpo Codex Skill, in Claude Code with the Golpo Claude Skill, or in Cursor, VS Code with GitHub Copilot, Claude Code, Claude Desktop, or Visual Studio through the Golpo MCP server can call the Golpo API, wait for the render, and hand the file to the platform's review steps. Production stops being the limit on how many checked lessons a course can offer.
- Attach the reference first. Store the item, its answer key, and the learner's submitted step with the lesson before any script is drafted.
- Review the script against the reference before rendering. If a solution or source exists, the platform's QA agent checks the draft against it: it re-solves, re-adds, or re-reads, then compares. A mismatch or an uncertain result stops the job before Golpo renders anything.
- Generate with Golpo. The agent sends the approved script in Script Mode, with the course's locked style, voice, Video Instructions, and Voice Instructions.
- Transcribe what was actually said. Run speech-to-text on the finished video's audio. Learners hear the transcript, not the draft.
- Run two independent transcript reviews. Make two separate LLM calls, separate from the creator agent and the QA agent. Each gets only the transcript and the reference, with no access to the draft or to the other reviewer's verdict. Each checks every spoken number, term, and claim, then returns pass or fail and quotes the line it objects to. The lesson moves on only when both pass. A failure or a disagreement goes to an instructor.
- Check the frames. Pull a frame every few seconds and confirm every number and label on screen matches the approved script.
- Publish. The pipeline posts the video to the course platform or LMS through its API as a draft, then releases it under the course's own approval rule.
FAQ
Can these lessons be generated and published automatically?
Yes, on the course platform's side. Using the Golpo MCP server or the Golpo Claude Skill, a pipeline can check the script against the item, its answer key, and the learner's submitted step, generate the video, run two independent transcript reviews, and post the lesson to the platform as a draft. Anything that fails a check goes to an instructor.
Who drafts the Explain This script?
Algebra Practice Studio chooses to draft this learner-specific script inside its own platform because it owns the submitted step and the verified solution. A separate studio QA agent solves the problem independently. Golpo then produces the approved video. For a general lesson, Golpo can draft the script too; grading and learner-specific diagnosis still belong to the practice platform.
What does the app send to Golpo API v2?
After approval, it POSTs to /api/v2/videos/generate with x-api-key. The prompt is still required. custom_script carries the approved words. timing is "1". Visibility stays private until an instructor accepts the watch-back. Recheck the live v2 reference before you lock the payload.
Why store the job ID before polling?
The generate call can succeed and the worker can still crash before it reads the response. The stored job ID lets the studio resume with GET /api/v2/videos/status/{job_id}. Creating a second job would risk two videos for one attempt.
Is there an idempotency key in the public v2 docs?
The reference this guide checked does not document an idempotency-key header. The studio uses its own unique key: attempt ID plus the hash of the approved script. That key lives in the studio database.
What happens when the drawing shows x squared plus 9?
The watch-back fails. The file stays out of the player. The attempt returns to the instructor. The app does not automatically generate a replacement.
Why does x = 1 matter?
It is a fast independent check. (1 + 3) squared is 16. x squared plus 9 is 10. x squared plus 6x plus 9 is 16. The learner’s line fails the value. The identity passes it. The QA agent should do this substitution itself.
Can the learner open the video while the job is polling?
No. The player waits for a studio acceptance after the file exists and the audio and visuals have been reviewed. A job URL is not a release.
Which guide covers generic polling and retries?
The v2 document-to-video pipeline covers upload, polling, retries, and storage. This page adds the studio’s approval, the script hash, and the instructor queue around that poll.
Related guides
- Checked lesson videos — the library rule around this button.
- How the Golpo API works — access and the shape of the API.
- Document pipeline on API v2 — upload, status, retries, and storage.
- Verified problem pipeline — a coding assistant and public problems.
- API payload examples — the v1 examples, kept separate from this v2 flow.
- Explain the learner’s wrong step — the teaching pattern inside the script.
Implement the nine attempt states, store the job ID before the first poll, and keep the player closed until the studio’s watch-back passes.
Tags


