anaksor-ocr
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
An n8n workflow that drafts an online course from a topic, a module count and a word count. Tavily researches it, OpenAI writes the modules and a voice-over script into two Google Docs, and a second form turns the script into gpt-image-1 pictures in Drive.
Online course writer with research, scripts and images is an n8n workflow in the Productivity category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
Two forms
The course form starts the writing, and a second form starts the pictures later. The course form asks for:
A drafted course and its voice-over script in Google Docs, with web and AI pictures in Drive
What you need before you start.
Language and image models
Runs gpt-4.1-mini and gpt-4o-mini for the instructions, outline, modules, script and picture prompts, and gpt-image-1 for the pictures.
NeedsOpenAI API key
Web research
Searches the topic and each module title, and returns page text and image addresses.
NeedsTavily API key
Documents
Gives the converter access to create the course doc and the voice-over doc in your account.
NeedsA Google Docs OAuth2 credential, and a converter or Google Docs nodes
File storage
Holds a folder of web images for each course and a folder of AI pictures for each picture run.
NeedsA Google Drive OAuth2 credential
Checked by Mindket on 13 Nov 2026
This n8n workflow drafts an online course from three answers on a form: the topic, the number of modules and the words per module. A first model turns those answers into writing instructions, Tavily researches the topic, and gpt-4o-mini plans the modules. Each module then gets its own search and its own text, with links to pictures found on the web under the lines they fit. The modules become one Google Doc and a voice-over script a second, and the web pictures are saved to a Drive folder. A second form, used later, takes the script and draws pictures for each module with gpt-image-1.
Course creators, trainers and coaches who want a first draft of a course to edit, with a script ready for narration. It suits someone who will check every fact and picture before teaching. Skip it if you need material you can publish as it comes. The text comes from web pages through a model, and the pictures it links belong to other sites.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Online courses | Creators who sell video courses | Draft the modules and the narration for a new course in one run | A creator enters home composting with five modules of 500 words and edits the two docs over a weekend. |
| Corporate training | Learning and development teams | Draft a module set on a new policy or tool, then add company detail | A training lead drafts six modules on data privacy basics and adds the company’s own rules. |
| Coaching | Coaches who run workshops | Turn a workshop topic into handouts and a talk track | A career coach turns interview preparation into four modules and a script to record. |
| Educational video | Channels that teach in series | Plan a series from the module titles and read the script on camera | A science channel films the six modules as six episodes. |
You need some n8n: two forms, two Google credentials and a converter for the docs, or two Google Docs nodes in its place. Its author puts setup at about 18 minutes, not counting the converter.
Any n8n that can reach OpenAI, Tavily and Google will run it. Everything it makes lands in your Google account.
Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. The docs step calls a converter that is not in the file, so decide first how the docs get made.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| OpenAI | An API key, for gpt-4.1-mini, gpt-4o-mini and gpt-image-1 |
| Tavily | An API key, for one search per course and one per module |
| An account, with a Google Drive and a Google Docs OAuth2 credential | |
| A converter | A service that builds a Google Doc from Markdown, or two Google Docs nodes in its place |
workflow.json.OpenAI Chat Model nodes and in Generate image1.Tavily web search and Tavily web search1, replace <YOUR_TAVILY_API_KEY> with your key, brackets included.Create a Folder, Upload to Folder, Create folder and Upload file.Format and Update to Doc and Format and Update Doc, put your converter’s address in place of YOUR_CONVERTER_URL and select a Google Docs credential, or replace both with Google Docs nodes.The two converter nodes post the Markdown and a file name, and n8n adds your Google Docs token to the request. The original copy pointed them at a converter on its author’s own server. The README lists the fields, and shows how to build the docs with Google Docs nodes so no outside service sees your token.
Send the course form. It thanks you at once, and the two docs and the web image folder appear in Drive as the run reaches them. Read the docs. When you want pictures, open the second form, give the course title, paste the voice-over script and pick 5, 10 or 15 pictures per module.
| To change | Where |
|---|---|
| Course structure | The prompt in Instruction Generator: H1 titles, H2 subheadings, and 800 words a module when no count is given |
| Number of modules | The dropdown in On form submission, and the six-module example in Structured Output Parser |
| Writing models | gpt-4.1-mini in OpenAI Chat Model3, gpt-4o-mini in the other four |
| Research | The bodies of Tavily web search and Tavily web search1 |
| Pictures | Size and quality in Generate image1, and the counts in On form submission2 |
You send home composting, 4 modules and 400 words. Course Outline returns the plan in this shape, trimmed:
{
"module 1": { "title": "…", "description": "…" },
"module 2": { "title": "…", "description": "…" },
"module 3": { "title": "…", "description": "…" },
"module 4": { "title": "…", "description": "…" }
}Four module searches follow. The doc Course content : home composting holds the four modules, each opening with its number and title, with an Image: line and a web address under the passages they illustrate. Voice over script : home composting holds the spoken version. A Drive folder named after the topic, ending in Web images, fills with the pictures those searches found.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This canvas holds two separate rows, each starting at its own form. The boxes hanging under the writing steps are the models they use. A credential is a key n8n keeps for you. Try a small course first. Each node then shows what it received and sent, which is where a missing key or a failed converter call turns up.
For experts. Five chains share the writing. Only the outline has a parser.
| Step | Model | What to know |
|---|---|---|
Instruction Generator | gpt-4.1-mini | Returns three instruction strings as JSON text, which the later prompts quote whole |
Course Outline | gpt-4o-mini, with Structured Output Parser | Returns an object of modules, and Split Out makes an item of each |
Course content | gpt-4o-mini | Runs once per module, with that module’s search results and image addresses |
Voice over script | gpt-4o-mini | Reads the merged course text and keeps the image links clickable |
Image Prompts1 | gpt-4o-mini | Writes the picture prompts that Split prompts1 parses from a fenced JSON block |
Generate image1 | gpt-image-1, high quality, 1536x1024 | One call per prompt, inside a loop |
Tavily web search1 asks for each result’s raw page text, so the module prompts can run long. The web image branch starts from the same searches as the module writing. Get images and Upload to Folder carry on after an error, so a picture that will not download is skipped.
The pictures need the most thought, for their cost and for their rights.
Format and Update to Doc, before the voice-overSplit prompts1 needs the answer as a list in a fenced JSON block, and the prompt asks for neither, so add that line if the step failsAn n8n workflow in two parts. The first form takes a course topic, a module count and a word count. Tavily researches
the topic, OpenAI writes the modules and a voice-over script, and both become Google Docs while the web images found
along the way go to Google Drive. A second form takes the script and draws pictures for each module with gpt-image-1.
workflow.json: the workflow as n8n exports it, 31 nodes in two parts, each starting at its own form, and two of theREADME.md: these notes.workflow.json.OpenAI Chat Model, OpenAI Chat Model1, OpenAI Chat Model2,OpenAI Chat Model3, OpenAI Chat Model4 and Generate image1.Tavily web search and Tavily web search1, replace <YOUR_TAVILY_API_KEY> in the Authorization header withCreate a Folder, Upload to Folder, Create folder andUpload file.Format and Update to Doc and Format and Update Doc, as the next section explains.The file does not include it. Format and Update to Doc and Format and Update Doc each post a JSON body with two
fields to YOUR_CONVERTER_URL, and they expect a service that answers by making a Google Doc.
| Field | What the node sends |
|---|---|
| output | A short JSON text holding the Markdown and the course topic |
| fileName | Course content : <topic> from the first node, Voice over script : <topic> from the second |
Both nodes authenticate with a Google Docs credential, so n8n adds its access token to the request. The original copy
sent them to a converter on its author's own server. You have two choices:
Until you do one or the other, a run stops at Format and Update to Doc, before the voice-over script is written.
| Stage | Nodes | What happens |
|---|---|---|
| Instructions | On form submission, Instruction Generator | gpt-4.1-mini writes three sets of instructions from your answers: for the outline, the modules and the voice-over |
| Research | Tavily web search | One search on the topic, with a short answer and image addresses |
| Outline | Course Outline, Structured Output Parser, Split Out | gpt-4o-mini plans the modules, each with a title and a description, and each module becomes an item |
| Module research | Tavily web search1 | One search per module title, with the pages' full text and images |
| Modules | Course content, Merge the content | gpt-4o-mini writes each module with image links under the lines they fit, and the modules are joined into one text |
| Course doc | Format and Update to Doc | The converter makes Course content : <topic> |
| Voice-over | Voice over script, Format and Update Doc | gpt-4o-mini rewrites the course to be spoken aloud, and the converter makes Voice over script : <topic> |
| Web images | Create a Folder, Code, Get images, Upload to Folder | Every image address from the module searches is downloaded into a Drive folder named <topic> - Web images |
Get images and Upload to Folder carry on after an error, so a picture that will not download is skipped.
The second part starts at On form submission2, its own form, once the voice-over script exists.
Create folder makes a Drive folder whose name is the title followed by AI Images.Image Prompts1, on gpt-4o-mini, writes that many picture prompts for each module.Split prompts1 turns them into one item per prompt. Generate image1 draws each with gpt-image-1 at 1536x1024 andUpload file saves it as <module>-<prompt key>.Split prompts1 looks for a fenced block marked json that holds a list of modules. The prompt's example shows a single
module and asks for neither the fence nor a list. If the step stops with No valid JSON block, add a line toImage Prompts1 asking for the answer as a JSON array inside such a block.
Instruction Generator. It asks for H1 module titles and H2 subheadings, and allows up toOn form submission offers 4, 5 or 6. The example in Structured Output ParserOpenAI Chat Model3, and gpt-4o-mini in the other four chat model nodes.Tavily web search and Tavily web search1. The second asks for each page's raw text,Generate image1, and the choices in On form submission2.Merge the content joined the modules with nn whereSplit prompts1 read s* and [sS] where \s* and [\s\S] were\n\n, \s* and [\s\S] back.README.md 7 KB workflow.json 31 KB
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
Qwen · Kit
Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…
ACE-Step · Kit
Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…
op7418 · Skill
Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…
zarazhangrui · Skill
Builds HTML presentations from scratch or from a PowerPoint file and shows visual style previews to pick from, for people who want web slides with no CSS or Ja…
iptv-org · Kit
Collects publicly available live TV channels from many countries into playlists that any video player with live streaming can open. Made for viewers and for de…