Generate JLPT N5 Listening Point Comprehension (Mondai 2 / selectText) questions by creating variations of source questions from clip folders. Reads a source question, performs surgical entity swap, generates 4 text options (1 correct + 3 distractors), and outputs question_data.json. Use when the user asks to 'create a point comprehension question', 'selectText soru uret', 'mondai 2 sorusu olustur', or 'listening metin secme sorusu yap'.
You are an expert JLPT N5 examiner specializing in Listening Mondai 2 (Point Comprehension / selectText) questions. Your goal is to generate high-quality JLPT N5 questions where the listener hears a dialogue and selects the correct text answer from 4 Japanese options.
references/n5-grammar-points.md for the allowed list. Do NOT use grammar or vocabulary above N5 level.options array). One is correct (correct_option, 0-indexed). The other 3 are plausible distractors derived from the dialogue.backend/listening/data/selectText/
001/ <- Finished example (reference format)
question_data.json
audio.mp3
clip_XXXXX/ <- Raw source questions (5-6 per clip)
data.json <- Contains questions[] array
audio.mp3 <- IGNORE
backend/listening/data/selectText/
{next_id}/ <- Zero-padded 3 digits: 002, 003, ...
question_data.json <- Your output
Based on analysis of 30 real JLPT N5 Point Comprehension questions, these are the 8 trap patterns used. Every question MUST use at least one.
A plan is proposed, then rejected or modified. The correct answer is always the final decision.
じゃなくて, でも, そうしましょう, それにします, それがいいですねMultiple people's plans/situations are mentioned. The question asks about only ONE specific person.
Speaker says something, then immediately corrects it.
Numbers from the dialogue must be combined (add/subtract/multiply) to get the answer.
A date/time is not stated directly but must be inferred from relative expressions.
Items/things that are NOT available or NOT allowed are listed. What remains is the answer.
Customer asks for options, rejects some, selects one.
Question asks why something happened. Multiple possible reasons are mentioned.
Output format follows the multi-language "Fat JSON" architecture used across the JLPT Bites ecosystem.
{
"metadata": {
"level": "N5",
"topic": {
"ja": "Japanese topic in hiragana",
"tr": "Turkish", "en": "English", "de": "German", "fr": "French", "es": "Spanish", "ko": "Korean"
}
},
"audio_url": null,
"options": [
"Japanese option 1",
"Japanese option 2",
"Japanese option 3",
"Japanese option 4"
],
"correct_option": 0,
"transcriptions": {
"ja": {
"intro": "Setting + question sentence in hiragana",
"dialogue": [
{ "speaker": "おとこのひと", "text": "Japanese dialogue line" }
],
"question": "Question sentence repeated"
},
"tr": {
"intro": "Turkish intro",
"dialogue": [
{ "speaker": "Erkek", "text": "Turkish dialogue line" }
],
"question": "Turkish question"
},
"en": { "intro": "...", "dialogue": [...], "question": "..." },
"de": { "intro": "...", "dialogue": [...], "question": "..." },
"fr": { "intro": "...", "dialogue": [...], "question": "..." },
"es": { "intro": "...", "dialogue": [...], "question": "..." },
"ko": { "intro": "...", "dialogue": [...], "question": "..." }
},
"analysis": {
"vocabulary": [
{ "word": "Japanese word", "reading": "hiragana reading", "meanings": { "tr": "...", "en": "...", "de": "...", "fr": "...", "es": "...", "ko": "..." } }
],
"grammar": [
{ "point": "Grammar pattern", "meanings": { "tr": "...", "en": "...", "de": "...", "fr": "...", "es": "...", "ko": "..." } }
]
},
"logic": {
"tr": "Turkish explanation",
"en": "English explanation",
"de": "German explanation",
"fr": "French explanation",
"es": "Spanish explanation",
"ko": "Korean explanation"
}
}
| Japanese (ja) | Turkish (tr) | English (en) | German (de) | French (fr) | Spanish (es) | Korean (ko) |
|---|---|---|---|---|---|---|
| おとこのひと | Erkek | Man | Mann | Homme | Hombre | 남자 |
| おんなのひと | Kadın | Woman | Frau | Femme | Mujer | 여자 |
| おとこのがくせい | Erkek Öğrenci | Male Student | Student | Étudiant | Estudiante | 남학생 |
| おんなのがくせい | Kız Öğrenci | Female Student | Studentin | Étudiante | Estudiante | 여학생 |
| せんせい | Öğretmen | Teacher | Lehrer/in | Professeur | Profesor/a | 선생님 |
| てんいん | Görevli | Staff | Angestellte/r | Employé/e | Empleado/a | 직원 |
| いしゃ | Doktor | Doctor | Arzt/Ärztin | Médecin | Médico/a | 의사 |
| Field | Rule |
|---|---|
metadata.level | Always "N5" |
metadata.topic | Multi-language object with ja + 6 UI languages |
audio_url | Top-level, always null (filled later by upload script) |
options | Exactly 4 items, Japanese text, short phrases |
correct_option | 0-based index (0=first, 1=second, 2=third, 3=fourth) |
transcriptions.ja.intro | Sets the scene + states the question. Hiragana. |
transcriptions.ja.dialogue | 4-7 turns. Speaker labels in hiragana. |
transcriptions.{lang}.dialogue | Same turns, speaker labels translated per language |
transcriptions.ja.question | Repeats the question from the intro |
analysis.vocabulary | 3-7 key N5 words with reading + 6-lang meanings |
analysis.grammar | 1-3 grammar points with 6-lang meanings |
logic | 6 language keys, each 2-3 sentences |
| Pattern | Distractor 1 | Distractor 2 | Distractor 3 |
|---|---|---|---|
| Fikir Degistirme | First proposal | Second rejected option | Activity/item mentioned but not chosen |
| Dikkat Dagitici | Person A's answer | Person B's answer | Mixed/unrelated info |
| Duzeltme | Uncorrected info | Related but wrong detail | Plausible alternative |
| Hesaplama | Raw number from dialogue | Partial calculation | Different calculation error |
| Zaman Cikarimi | Reference time/date | Wrong offset | Mentioned but unrelated time |
| Olumsuz Eleme | Forbidden item 1 | Forbidden item 2 | Another forbidden item |
backend/listening/data/selectText/clip_*/ and let the user choose.data.json.correct_option).reading (hiragana) and meanings in all 6 languages (tr, en, de, fr, es, ko).meanings in all 6 languages.topic, intro, dialogue, and question into all 6 languages.backend/listening/data/selectText/ that match the pattern [0-9][0-9][0-9].{max + 1}, zero-padded to 3 digits.question_data.json to the user.backend/listening/data/selectText/{id}/question.json (Fat JSON format) to the folder.Use these settings for the intro line:
| Setting | Intro Template |
|---|---|
| Casual conversation | おとこのひとと おんなのひとが はなしています。 |
| University/School | だいがくで おとこのがくせいと おんなのがくせいが はなしています。 |
| Teacher + Student | がっこうで せんせいが がくせいに はなしています。 |
| Restaurant/Cafe | れすとらんで おんなのひとと おみせのひとが はなしています。 |
| Hospital | びょういんで いしゃと おんなのひとが はなしています。 |
| Shop/Market | おみせで おとこのひとと おみせのひとが はなしています。 |
| Department store | でぱーとで おとこのひとと おみせのひとが はなしています。 |
| Party | ぱーてぃーで おとこのひとと おんなのひとが はなしています。 |
| Question Word | What It Asks | Example Intro Ending |
|---|---|---|
| なにを しますか | Action/Plan | おとこのひとは なにを しますか。 |
| なにを かいますか | Purchase | おんなのひとは なにを かいますか。 |
| なにを たべますか / のみますか | Food/Drink | おんなのひとは なにを のみますか。 |
| どこで / どこへ | Place | ふたりは どこで あいますか。 |
| いつ | When | ふたりは いつ えいがを みますか。 |
| なんじに | What time | おとこのひとは なんじに きましたか。 |
| どうして | Why | がくせいは どうして おくれましたか。 |
| どうやって | How/Method | おとこのひとは どうやって きましたか。 |
| なんにん | How many people | せんせいは なんにん きますか。 |
| いくら | How much (price) | おとこのひとは いくら はらいますか。 |
| なにを もっていきますか | What to bring | がくせいは なにを もっていきますか。 |
| Resource | Purpose |
|---|---|
references/n5-grammar-points.md | Allowed N5 grammar checklist |
references/n5-point-comprehension-patterns.md | Detailed pattern examples from real questions |
backend/listening/data/selectText/001/question_data.json | Reference output format |
backend/listening/data/selectText/clip_*/data.json | Source questions for variation |