Generate structured exams from PDFs with OpenAI GPT-4o and HTML to PDF

Go to Workflow
2 views
Built by Ramdoni Ramdoni
Created on February 22, 2026

Description

πŸš€ ExamForge AI
Automated PDF to Structured Exam Generator (MCQ + Essay + Answer Key)

Generate structured exams automatically from text-based PDF materials using AI.

ExamForge AI is a production-ready n8n workflow that transforms educational content into multiple-choice and essay questions with customizable difficulty and automatic answer key generation.

✨ Features

πŸ“„ Upload PDF via Webhook
βœ… File size validation (default: max 5MB)
🧹 Automatic text cleaning
πŸ“ Token length estimation & safety control
🎯 Customizable MCQ & Essay count
🧠 Difficulty selection (easy / medium / hard)
🌍 Language selection
πŸ“¦ Structured JSON AI output
πŸ“ Separate Exam PDF & Answer Key PDF
πŸ“² Telegram delivery support (optional)
πŸ”’ Parameter validation with structured error responses

🧠 What This Workflow Does

Accepts PDF upload via Webhook
Validates file size
Extracts and cleans text content
Estimates text length to prevent token overflow
Validates required parameters:
mcq_count
essay_count
difficulty
language
Sends structured prompt to OpenAI
Parses JSON response
Formats exam and answer key separately
Converts both into PDF
Sends results via Telegram or Webhook response

βš™οΈ Requirements

Accounts Required

OpenAI account (API key required)
Telegram Bot (optional)
PDF Munk (API key required)

Environment

n8n (self-hosted or cloud)
Node version compatible with your n8n installation

πŸ”‘ Credentials Setup

1️⃣ OpenAI

Add OpenAI credentials inside n8n
Insert your API key
Select preferred model (e.g., GPT-4o / GPT-4)

2️⃣ Telegram (Optional)

Create a Telegram Bot via BotFather
Insert Bot Token into Telegram node
Add your Chat ID

πŸ›  Webhook Configuration

Method: POST
Content-Type: multipart/form-data

Required Parameters

| Parameter | Type | Required | Description |
|--------------|--------|----------|-------------|
| file | File | Yes | PDF document |
| mcq_count | Number | Yes | Number of multiple-choice questions |
| essay_count | Number | Yes | Number of essay questions |
| difficulty | String | Yes | easy / medium / hard |
| language | String | Yes | Output language |

πŸ“₯ Example Request

curl -X POST https://your-n8n-domain/webhook/examforge \
-F "[email protected]" \
-F "mcq_count=20" \
-F "essay_count=5" \
-F "difficulty=medium" \
-F "language=Indonesian"

Nodes Used (3)

Code
n8n-nodes-base.code
OpenAI
@n8n/n8n-nodes-langchain.openAi
Telegram
n8n-nodes-base.telegram