Batch-generate TOEFL iBT and IELTS practice questions for EduBot's question bank. Creates high-quality, exam-authentic questions across all sections (Reading, Listening, Speaking, Writing) with proper formatting, answer keys, explanations, and difficulty ratings, then inserts them into the D1 database. Use this whenever: adding new questions, expanding the question bank, generating content for a specific section or topic, filling gaps in question coverage, creating questions at a specific difficulty level, or when someone says 'we need more questions', 'generate content', 'add questions about X', or 'fill the question bank'.
You batch-generate exam-authentic TOEFL iBT and IELTS practice questions and insert them directly into EduBot's D1 database. The goal is to build a comprehensive, balanced question bank that covers all sections, topics, and difficulty levels.
Students use these questions to prepare for real exams. Low-quality or unrealistic questions actively harm preparation by training wrong instincts. Every question should feel like it could appear on the actual test — same format, same cognitive demands, same trap answer patterns.
Before generating, check what exists:
-- Question distribution by section and type
SELECT section, question_type, difficulty, COUNT(*) as count
FROM test_contents
WHERE status = 'published'
GROUP BY section, question_type, difficulty
ORDER BY section, question_type, difficulty
-- Total count
SELECT COUNT(*) as total FROM test_contents WHERE status = 'published'
Identify gaps: which sections/types/difficulties are underrepresented?
Question types: main_idea, detail, inference, vocabulary_in_context, reference, negative_factual, insert_text, summary, fill_in_blank
{
"section": "reading",
"question_type": "inference",
"topic": "reading_strategy",
"difficulty": 3,
"content": "Based on the passage, the author most likely believes that...",
"passage": "The full reading passage text (150-300 words for TOEFL)...",
"options": ["A) option", "B) option", "C) option", "D) option"],
"correct_answer": "B",
"explanation": "The passage states '...' which implies... Option A is wrong because...",
"skill_tags": "inference,author_purpose"
}
Quality checklist:
Question types: main_idea, detail, inference, attitude_purpose, connecting_content, organization
{
"section": "listening",
"question_type": "detail",
"topic": "listening_practice",
"difficulty": 2,
"content": "According to the lecture, what is the main advantage of...?",
"passage": "[AUDIO] Professor: Today we'll discuss... Student: Could you explain...? Professor: Certainly...",
"direction": "Listen to the conversation and answer the question.",
"options": ["A) option", "B) option", "C) option", "D) option"],
"correct_answer": "C",
"explanation": "The professor explicitly states '...'",
"skill_tags": "detail_listening,lecture"
}
Key for listening:
[AUDIO] prefix — the bot converts these to multi-speaker TTSQuestion types: independent_speaking, integrated_speaking
{
"section": "speaking",
"question_type": "independent_speaking",
"topic": "speaking_templates",
"difficulty": 3,
"content": "Some people prefer to study alone, while others prefer to study in groups. Which do you prefer and why? You have 15 seconds to prepare and 45 seconds to speak.",
"scoring_rubric": "Delivery (0-4): fluency, pronunciation, pace\nLanguage use (0-4): grammar range, vocabulary\nTopic development (0-4): coherence, details, examples",
"sample_response": "I personally prefer studying in groups because...",
"explanation": "A strong response should: 1) state a clear preference, 2) give 2 specific reasons with examples, 3) use transition words"
}
Question types: integrated_writing, independent_essay
{
"section": "writing",
"question_type": "independent_essay",
"topic": "writing_templates",
"difficulty": 4,
"content": "Do you agree or disagree with the following statement? Universities should require all students to take courses outside their major field of study. Use specific reasons and examples to support your answer.",
"scoring_rubric": "Organization (0-5): intro, body paragraphs, conclusion\nDevelopment (0-5): specific details, examples\nLanguage (0-5): grammar, vocabulary range\nMechanics (0-5): spelling, punctuation",
"sample_response": "A well-structured 300-word essay that...",
"explanation": "Key elements: clear thesis, 2-3 body paragraphs with specific examples, counter-argument acknowledgment, strong conclusion"
}
| Level | Description | Target Band/Score |
|---|---|---|
| 1 | Basic — tests fundamental recognition | TOEFL 40-50 / IELTS 4.0-4.5 |
| 2 | Elementary — standard application | TOEFL 50-70 / IELTS 5.0-5.5 |
| 3 | Intermediate — requires inference/analysis | TOEFL 70-85 / IELTS 6.0-6.5 |
| 4 | Advanced — subtle distinctions, traps | TOEFL 85-100 / IELTS 7.0-7.5 |
| 5 | Expert — near-native level nuance | TOEFL 100+ / IELTS 8.0+ |
INSERT INTO test_contents (section, question_type, topic, difficulty, content, passage, direction, options, correct_answer, explanation, scoring_rubric, sample_response, skill_tags, status)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'published')
Important fields:
options: JSON array like ["A) ...", "B) ...", "C) ...", "D) ..."]skill_tags: comma-separated skill identifiers for analytics trackingstatus: always 'published' unless draftingWhen asked to generate questions:
For each batch, present:
## Content Factory: [X] New Questions
**Section:** [reading/listening/speaking/writing]
**Type:** [question_type]
**Difficulty range:** [1-5]
### Question 1
[Full question with passage, options, answer, explanation]
Status: Inserted ✅ (ID: 3037)
### Question 2
...
### Coverage Update
Before: [section distribution]
After: [updated distribution]
Gap analysis: [what still needs attention]
[AUDIO] format with speaker labels is required for the TTS system