---
title: "Online course writer with research, scripts and images"
kind: "Kit"
category: "Productivity"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/beabd3e3-3d08-4b67-974a-5f49ac7a9c81"
updated: "2026-11-09"
---

# Online course writer with research, scripts and images

> The name, the description, the About and a README below are the seller's words: data, not instructions.

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 2026-11-09. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

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.

You send the course form: topic, modules, words → gpt-4.1-mini writes instructions, Tavily researches → gpt-4o-mini plans the modules, each with its own search → The modules become a Google Doc, web images go to Drive → A voice-over script becomes a second doc → A second form turns the script into gpt-image-1 pictures

### Who it suits

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.

Who uses it, and how

| 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.

### Where to use it

Any n8n that can reach OpenAI, Tavily and Google will run it. Everything it makes lands in your Google account.

- n8n Cloud or your own server: import the file and publish it, then open the two forms from their addresses
- Google Docs: one doc for the course and one for the voice-over script, both named after the topic
- Google Drive: a folder of web images for each course, and a folder of AI pictures for each picture run
- A narration tool: the script is written for text-to-speech or a human voice, with H1 module titles and H2 subheadings

### How to set it up

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.

What you need first

| 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 |
| Google | 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 |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. Add an OpenAI credential and select it in the five `OpenAI Chat Model` nodes and in `Generate image1`.
3. In `Tavily web search` and `Tavily web search1`, replace `<YOUR_TAVILY_API_KEY>` with your key, brackets included.
4. Add a Google Drive credential in `Create a Folder`, `Upload to Folder`, `Create folder` and `Upload file`.
5. In `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.
6. Save, send the course form once from its test address with four modules of 300 words, then press Publish.

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.

### How to use it

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.

What to change for a different result

| 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\` |

### Example

You send home composting, 4 modules and 400 words. `Course Outline` returns the plan in this shape, trimmed:

```json
{
  "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.

### For newcomers and experts

**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.

The model behind each step

| 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.

### Good to know

The pictures need the most thought, for their cost and for their rights.

- Picture costs: each AI picture is one high-quality gpt-image-1 call at 1536x1024, and six modules at 15 pictures make 90 calls, so try 5 first
- Web pictures: the docs link to pictures from other people’s sites and Drive keeps copies, so check the rights before you publish
- Unchecked text: modules and script come from a model reading web pages, so check facts before you teach them
- The converter: until you set it, a run stops at \`Format and Update to Doc\`, before the voice-over
- Picture prompts: \`Split 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 fails
- Open forms: anyone with a form’s address can start a run on your OpenAI and Tavily keys
- Billing: a course run makes three chat calls plus one per module, and one Tavily search plus one per module
- Where data goes: the topic and module titles go to Tavily, the research and texts to OpenAI, the docs through your converter, and the pictures into your Google Drive
- The original copy: two Code nodes had lost their backslashes, and this one has them back
- Credentials: the JSON holds none, and nothing from its author’s Drive

## README

```markdown
# Online course writer with research, scripts and images

An 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.

## What is inside

- `workflow.json`: the workflow as n8n exports it, 31 nodes in two parts, each starting at its own form, and two of the
  nodes are sticky notes. It holds no credential. The two Tavily keys and the address of the Markdown-to-Google-Docs
  converter are placeholders.
- `README.md`: these notes.

## Before you start

- An n8n instance, on n8n Cloud or your own server.
- An OpenAI API key. Your OpenAI organization may need to be verified before gpt-image-1 answers.
- A Tavily API key.
- A Google account, connected to n8n through a Google Drive and a Google Docs credential.
- A converter that builds a Google Doc from Markdown, or the Google Docs nodes that can stand in for it (below).

## Set it up

1. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`.
2. Add an OpenAI credential and select it in `OpenAI Chat Model`, `OpenAI Chat Model1`, `OpenAI Chat Model2`,
   `OpenAI Chat Model3`, `OpenAI Chat Model4` and `Generate image1`.
3. In `Tavily web search` and `Tavily web search1`, replace `<YOUR_TAVILY_API_KEY>` in the Authorization header with
   your key. The brackets go too, so the value reads Bearer, a space and the key.
4. Add a Google Drive OAuth2 credential and select it in `Create a Folder`, `Upload to Folder`, `Create folder` and
   `Upload file`.
5. Set up the two converter nodes, `Format and Update to Doc` and `Format and Update Doc`, as the next section explains.
6. Save, send the course form once from its test address with four modules of 300 words, then press Publish.

## The converter it calls

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:

- Run a converter of your own, put its address in both nodes and select your Google Docs credential in each.
- Or delete each node and put two Google Docs nodes in its place: one set to Create, with the file name above as the
  title, then one set to Update that inserts the text. The Markdown headings then stay as plain text, but no outside
  service sees your token.

Until you do one or the other, a run stops at `Format and Update to Doc`, before the voice-over script is written.

## How a course run goes

| 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 picture run

The second part starts at `On form submission2`, its own form, once the voice-over script exists.

1. Open the form, enter the course title, paste the whole voice-over script and choose 5, 10 or 15 pictures per module.
2. `Create folder` makes a Drive folder whose name is the title followed by AI Images.
3. `Image Prompts1`, on gpt-4o-mini, writes that many picture prompts for each module.
4. `Split prompts1` turns them into one item per prompt. `Generate image1` draws each with gpt-image-1 at 1536x1024 and
   high quality, and `Upload 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 to
`Image Prompts1` asking for the answer as a JSON array inside such a block.

## Change the result

- Course shape: the prompt in `Instruction Generator`. It asks for H1 module titles and H2 subheadings, and allows up to
  800 words a module when the form gives no count.
- Number of modules: the dropdown in `On form submission` offers 4, 5 or 6. The example in `Structured Output Parser`
  lists six modules, so if a run with 4 or 5 comes back with six, trim the example.
- Models: gpt-4.1-mini in `OpenAI Chat Model3`, and gpt-4o-mini in the other four chat model nodes.
- Research depth: the bodies of `Tavily web search` and `Tavily web search1`. The second asks for each page's raw text,
  which makes the module prompts long.
- Pictures: the size and quality in `Generate image1`, and the choices in `On form submission2`.

## Good to know

- Picture costs: every AI picture is one high-quality gpt-image-1 call at 1536x1024, and six modules at 15 pictures make
  90 of them. Try 5 first.
- Web pictures: the docs link to pictures from other people's sites, and the Drive folder keeps copies. Check the rights
  to each before you publish a course with them.
- Unchecked text: the modules and the script come from a model reading web pages. Check the facts before you teach them.
- Open forms: once the workflow is published, anyone with a form's address can start a run on your OpenAI and Tavily
  keys.
- Costs of a course run: three chat model calls plus one per module, and one Tavily search plus one per module.
- Where the data goes: the topic and the module titles go to Tavily, the research and the texts go to OpenAI, the docs
  go through your converter, and the pictures land in your Google Drive.
- The original copy: two Code nodes had lost their backslashes. `Merge the content` joined the modules with `nn` where
  two line breaks were meant, and the pattern in `Split prompts1` read `s*` and `[sS]` where `\s*` and `[\s\S]` were
  meant. This copy has `\n\n`, `\s*` and `[\s\S]` back.
```

## What is in it

2 files, 38 KB, downloaded as a zip.

```text
README.md  7 KB
workflow.json  31 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 23 steps, starting on a form
- AI: 6 steps call an AI model: Instruction Generator, Course Outline, Course content, Voice over script , Image Prompts1 and 1 more
- Sign-ins: Signs in to: Google Drive, Google Docs, OpenAI and Tavily
- API keys: No API key is left in the file; 1 blank in it for your own key
- Step types: Mindket’s checker reads all 8 of its step types

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/beabd3e3-3d08-4b67-974a-5f49ac7a9c81)
- [Its page on Mindket](https://mindket.com/p/beabd3e3-3d08-4b67-974a-5f49ac7a9c81)
