Back to Alchemy
Alchemy RecipeIntermediateworkflow

Children's Educational App Content from Learning Objectives

24 March 2026

Introduction

Creating engaging educational content for children's apps is time-consuming when done manually. You're juggling learning objectives, scriptwriting, voice generation, illustration briefs, and colouring page layouts. Each step traditionally requires human judgment, manual file transfers, and quality checks. This friction means either you produce content slowly, or you compromise on consistency and pedagogical rigour.

What if you could feed a single learning objective into an automated system and receive a complete content package: a finished story script, professional narration, character artwork, and a ready-to-print colouring page? No copy-pasting between tools. No waiting for voice files to download and re-upload. No manual image resizing.

This workflow combines four specialist AI services into a unified content generation pipeline using n8n or Make, turning a two-hour manual process into a five-minute automated one. You'll maintain full control over the learning outcomes whilst dramatically reducing the busywork.

The Automated Workflow

The workflow follows this sequence: your learning objective enters the system, a narrative structure is generated, a voice actor narrates it, visual assets are created, and a printable colouring page is assembled. All handoffs happen automatically.

Step 1: Define Your Trigger and Initial Input

You'll set up a simple webhook or form submission as the entry point. When you submit a learning objective (for example, "KS1 Maths: Understanding addition through 10"), this becomes the seed for the entire process.

For Make, create a new scenario and select "Custom Webhook" as the trigger module. For n8n, use the "Webhook" node set to POST requests.


POST /webhook/learning-objective
Content-Type: application/json

{
  "learning_objective": "Understanding addition through 10",
  "age_group": "4-6 years",
  "subject": "Mathematics",
  "story_length": "medium",
  "character_name": "Luna the Owl"
}

Store these fields in a variable for reference throughout the workflow. In n8n, this data flows into subsequent nodes automatically. In Make, you'll reference the webhook payload using {{n.data.learning_objective}} syntax.

Step 2: Generate the Story Script with Fairytail AI

FairyTail AI specialises in creating age-appropriate narrative content. You'll send your learning objective and receive a structured story script that naturally incorporates the educational concept.

Register at FairyTail AI and obtain your API key. In your orchestration tool, add an HTTP request node that calls their story generation endpoint.


POST https://api.fairytail-ai.com/v1/generate-story
Authorization: Bearer YOUR_FAIRYTAIL_API_KEY
Content-Type: application/json

{
  "prompt": "Create a children's story for ages 4-6 about {{learning_objective}}. Use the character {{character_name}}. Story should be 200-250 words. Include clear learning moments but keep it playful.",
  "age_group": "4-6",
  "tone": "whimsical",
  "story_format": "narrative_with_dialogue"
}

The API returns a JSON object containing the full story script. You'll extract the story_text field and pass it forward. In Make, create a JSON Parser module immediately after to extract the response body cleanly.

{
  "id": "story_abc123",
  "story_text": "Luna the Owl was sitting in her tree when she noticed she had three acorns and found two more. 'How many do I have now?' she wondered...",
  "word_count": 245,
  "reading_level": "early-primary"
}

Step 3: Convert Script to Speech with ElevenLabs

ElevenLabs provides natural-sounding voice synthesis. Rather than letting a human narrator record and edit audio, their API handles narration in seconds.

Get your ElevenLabs API key from their dashboard. Configure a new HTTP request node targeting their text-to-speech endpoint. You'll specify a child-friendly voice and ensure the audio format works for your app.


POST https://api.elevenlabs.io/v1/text-to-speech/21m00Tcm4TlvDq8ikWAM
Authorization: xi-api-key: YOUR_ELEVENLABS_API_KEY
Content-Type: application/json

{
  "text": "{{story_text}}",
  "model_id": "eleven_monolingual_v1",
  "voice_settings": {
    "stability": 0.5,
    "similarity_boost": 0.75
  }
}

This endpoint returns audio in MP3 format by default. Configure the response to save as binary data. In Make, use the "Download File" module to convert the returned stream into a usable file. In n8n, the HTTP node with "Full Response" enabled captures the audio buffer directly.

Save the audio file path or content into a variable; you'll need it later for the app bundle.

Step 4: Generate Character Artwork with Aicut AI

Aicut AI produces illustrative artwork suitable for children's content. You'll generate the main character illustration based on the story and learning objective.

Obtain your Aicut API credentials and set up another HTTP request node. The prompt should reference your character and the story context to ensure visual consistency.


POST https://api.aicut-ai.com/v1/generate-image
Authorization: Bearer YOUR_AICUT_API_KEY
Content-Type: application/json

{
  "prompt": "Illustration of {{character_name}}, a friendly character, in a scene showing {{learning_objective}}. Style: children's book illustration, bright colours, warm and encouraging, suitable for ages 4-6. Include clear educational context.",
  "style": "children_illustration",
  "dimensions": "1024x768",
  "seed": 42
}

The response includes a URL to the generated image. In your orchestration tool, immediately download this image to your file storage (AWS S3, Google Drive, or your local server) using a file download module. Store the file path.

{
  "image_url": "https://output.aicut-ai.com/images/xyz789.png",
  "dimensions": "1024x768",
  "generation_time_ms": 3200
}

Step 5: Create a Colouring Page with iColoring

iColoring transforms illustrations into print-ready colouring pages by intelligently outlining areas and removing fills. Feed it the artwork from step 4.

Register with iColoring and obtain your API key. Create an HTTP request module that accepts the image URL and returns a colouring page.


POST https://api.icoloring.com/v1/create-coloring-page
Authorization: Bearer YOUR_ICOLORING_API_KEY
Content-Type: application/json

{
  "image_url": "{{aicut_image_url}}",
  "outline_style": "bold_lines",
  "thickness": 2.5,
  "remove_background": true,
  "output_format": "pdf",
  "page_size": "A4"
}

iColoring returns a PDF file ready for printing. Download and store this in the same location as your other assets.

Step 6: Assemble and Deliver the Content Package

Create a final aggregation step that collects all four outputs: story script, narration audio, character artwork, and colouring page PDF. Store them in a folder structure and optionally send a notification email or Slack message confirming completion.

In Make, use the "Google Drive" or "Dropbox" module to create a new folder named after your learning objective, then upload each asset. In n8n, use the "Write Binary File" node to save each item locally or to your storage backend.


Folder Structure:
/learning-objectives/addition-through-10/
├── story_script.txt
├── narration.mp3
├── character_artwork.png
└── coloring_page.pdf

Create a summary JSON file that documents the workflow execution. This helps with tracking, auditing, and feeding data into your app's backend later.

{
  "learning_objective": "Understanding addition through 10",
  "generated_at": "2024-01-15T10:30:00Z",
  "character_name": "Luna the Owl",
  "assets": {
    "story_script": "/storage/addition-through-10/story_script.txt",
    "narration_audio": "/storage/addition-through-10/narration.mp3",
    "character_art": "/storage/addition-through-10/character_artwork.png",
    "coloring_page": "/storage/addition-through-10/coloring_page.pdf"
  },
  "word_count": 245,
  "audio_duration_seconds": 87,
  "status": "complete"
}

Finally, send a notification. In Make, add an Email module or Slack module that summarises what was created. In n8n, use the Slack node or Email node to alert your content team that new assets are ready for review.

The Manual Alternative

If you prefer tighter creative control over each stage, you can run this workflow semi-automatically. Generate the story script through FairyTail AI, then manually review and edit it before sending to ElevenLabs. This adds 15-20 minutes per learning objective but ensures every word aligns with your pedagogy.

For artwork, run Aicut AI and iColoring automatically, but review the character design before adding it to your final package. Some educators prefer generating multiple character variations and hand-selecting the best one.

You can also skip full automation and use each tool individually without orchestration. This removes the zero-handoff benefit but works well if you're still evaluating which tools suit your content style. Most tools provide web interfaces, so you can test-drive them before committing to API integration.

Pro Tips

Monitor Rate Limits and Costs

ElevenLabs charges per character generated. A 250-word story typically costs around £0.03-£0.05 depending on voice model. Aicut AI charges per image generation, usually £0.01-£0.03 per image. In your orchestration tool, add error handling that catches rate limit responses (HTTP 429) and queues requests for retry after a delay.

In n8n, use the "Wait" node set to 60 seconds before retrying. In Make, use the "Sleep" module. This prevents your workflow from failing mid-execution.

Validate Output Quality Before Storage

Add a conditional node after each AI generation step that checks for empty responses or errors. If Aicut AI returns a malformed image URL, you don't want that polluting your asset folder.


IF response.status == "success" AND response.image_url exists
  THEN proceed to next step
  ELSE send error notification to admin

Batch Process Multiple Learning Objectives

Rather than triggering the workflow once per objective, submit a batch of 10-20 learning objectives and process them sequentially. This distributes API calls across time and reduces the chance of hitting rate limits. Use your orchestration tool's "Loop" or "Iterator" module to process an array.

Cache Generated Assets

If you ever repeat a learning objective (for instance, "addition through 10" appears in multiple age groups), store the previously generated story script and artwork. Query your asset database before generating new content. This saves API costs and ensures consistency.

Test with a Dry Run

Before automating, manually run through the entire workflow with a single learning objective. Verify that each tool's output is actually usable by your app. Check that ElevenLabs audio plays smoothly, that iColoring's PDF looks print-ready, and that Aicut's artwork fits your visual style. This takes 30 minutes and prevents automated failures downstream.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
FairyTail AIPay-as-you-go£10-£20~50-100 stories per month at £0.15-£0.20 per story
ElevenLabsProfessional£991 million characters included; sufficient for 4,000-5,000 stories
Aicut AIPay-as-you-go£15-£25~100-150 images per month at £0.10-£0.20 per image
iColoringProfessional£29Unlimited colouring page conversions
n8n (self-hosted)Free£0You run it on your own server; zero per-execution cost
Make (Integromat)Standard£10-£20~10,000 operations per month included in Standard plan
Total£163-£193Covers 100-150 complete content packages monthly

The cost per learning objective works out to approximately £1.10-£1.90, excluding your orchestration tool licensing. This is substantially lower than hiring a freelance content creator, who might charge £50-£150 per complete package.

If you generate fewer than 50 objectives per month, consider FairyTail AI's pay-as-you-go model exclusively and skip subscriptions. If you generate 200+ per month, negotiate volume discounts directly with FairyTail AI and Aicut AI, which often offer custom pricing.