---
title: Generate and Refine Courses with Course Studio
description: Build a grounded draft from a concept and approved sources, use El Lienzo, and review generated curriculum before publishing.
audience:
  - group_admin
product_area: content_management
topics:
  - Course Studio
  - El Lienzo
  - Course generation
  - Sources
synonyms:
  - admin
  - administrator
  - owner
  - creator
  - generate course
  - AI course builder
routes:
  - /groups/:groupId/classroom/course-studio
  - /groups/:groupId/classroom/course-studio/lienzo
  - /groups/:groupId/classroom/course-studio/:runId
related_articles:
  - admins/courses-and-content
  - admins/create-lessons-and-resources
  - admins/create-and-manage-quizzes
  - admins/publish-course-landing-page-and-seo
status: published
---

Open the community **Classroom** and choose **Generate a course with AI**. Course Studio creates an unpublished draft; it never replaces the owner review or publishes by itself.

![The Course Studio concept step with the three-step workflow and an unpublished-draft review panel.](/help/images/admins/course-studio.png "State a concrete learner outcome before adding sources and reserving generation credits.")

## Build the generation brief

1. In **Concept**, describe the learner, the concrete outcome, prior knowledge, depth, and any constraints.
2. Add only instructions that a reviewer can verify, one note per line.
3. Continue to **Sources** and add trustworthy grounding material.
4. In **Review**, confirm the course language, source count, guidance, destination, and credit reservation.
5. Start generation only when the brief is complete.

Course Studio can accept supported PDF, DOCX, TXT, or Markdown documents up to 50 MB and supported audio/video up to 25 MB, plus approved URLs, YouTube links, and pasted text. A source URL must be accessible to the service and suitable for reuse.

Generation uses a flat credit reservation shown before the run. Cancelling through the supported control returns that reservation according to the displayed policy. Do not refresh or start a duplicate run merely because one step is taking time; the progress stream is designed to recover.

## Use El Lienzo for spatial planning

Open **El Lienzo** when the course structure benefits from a canvas.

![El Lienzo with note, unit-frame, source, canvas-reading, and draft-generation controls.](/help/images/admins/course-studio-lienzo.png "Arrange approved sources and unit frames, then read the canvas before generating an unpublished draft.")

1. Add notes and **unit frames**.
2. Add source cards from approved files, URLs, or pasted text.
3. Connect a source to a unit frame to assign it.
4. Connect unit frames to set the proposed course order.
5. Use **La Paleta** for available captures and source material.
6. Choose **Save canvas**, then **Read the canvas** to inspect the interpreted structure.
7. Choose **Generate from canvas** only after the frame/source relationships are correct.

Dashed suggestions remain under your control. Saving, reading, or generating from El Lienzo does not publish a course.

## Review the generated draft

Open the generation run and review the outline, lessons, source use, assessments, warnings, and diffs. Regenerate only the part that failed review. For every quiz item, verify the objective, prompt, choices, correct answer, feedback, and source support.

When revision controls are available, compare the working copy with the live revision, preview as a student, and promote only the approved revision. Check how a promotion or rollback affects existing enrollments and progress.

## Verify and troubleshoot

Preview the complete draft with a member account before publishing. If Course Studio is unavailable, confirm owner/admin access, plan/feature availability, community policy, and credits. A 404 can represent a disabled or unavailable route; do not construct a run URL without an actual run identifier. If a source fails, confirm its type, size, access, and rights before trying a different source.

## Legal

- [Privacy](/privacy)
- [Terms](/terms)
- [Data rights and deletion](/data-deletion)
