๐ 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"