Class_generator/content/chapters/sbs-7-8.json
StillHammer 4714a4a1c6 Add TTS support and improve content compatibility system
Major improvements:
- Add TTSHelper utility for text-to-speech functionality
- Enhance content compatibility scoring across all games
- Improve sentence extraction from multiple content sources
- Update all game modules to support diverse content formats
- Refine MarioEducational physics and rendering
- Polish UI styles and remove unused CSS

Games updated: AdventureReader, FillTheBlank, FlashcardLearning,
GrammarDiscovery, MarioEducational, QuizGame, RiverRun, WhackAMole,
WhackAMoleHard, WizardSpellCaster, WordDiscovery, WordStorm

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-18 02:49:48 +08:00

406 lines
21 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"id": "sbs-7-8",
"book_id": "sbs",
"name": "Daily Life & Vocabulary",
"description": "Side by Side Level 7-8 vocabulary with language-agnostic format",
"difficulty": "intermediate",
"language": "en-US",
"chapter_number": "7-8",
"metadata": {
"version": "1.0",
"created": "2025-09-23",
"updated": "2025-09-23",
"source": "Side by Side English Learning Series",
"target_level": "intermediate",
"estimated_hours": 25,
"prerequisites": ["sbs-5-6"],
"learning_objectives": [
"Master intermediate vocabulary for daily situations",
"Understand clothing and body parts terminology",
"Learn emotional expressions and feelings",
"Practice technology and social media vocabulary"
],
"content_tags": ["vocabulary", "daily-life", "practical-english", "conversational"],
"completion_criteria": {
"vocabulary_mastery": 80,
"quiz_score": 75,
"games_completed": 5
}
},
"vocabulary": {
"central": { "user_language": "中心的;中央的", "type": "adjective", "pronunciation": "/ˈsentrəl/" },
"avenue": { "user_language": "大街;林荫道", "type": "noun", "pronunciation": "/ˈævənjuː/" },
"refrigerator": { "user_language": "冰箱", "type": "noun", "pronunciation": "/rɪˈfrɪdʒəreɪtər/" },
"closet": { "user_language": "衣柜;壁橱", "type": "noun", "pronunciation": "/ˈklɒzɪt/" },
"elevator": { "user_language": "电梯", "type": "noun", "pronunciation": "/ˈeləveɪtər/" },
"building": { "user_language": "建筑物;大楼", "type": "noun", "pronunciation": "/ˈbɪldɪŋ/" },
"air conditioner": { "user_language": "空调", "type": "noun", "pronunciation": "/ɛr kənˈdɪʃənər/" },
"superintendent": { "user_language": "主管;负责人", "type": "noun", "pronunciation": "/ˌsuːpərɪnˈtendənt/" },
"bus stop": { "user_language": "公交车站", "type": "noun", "pronunciation": "/bʌs stɒp/" },
"jacuzzi": { "user_language": "按摩浴缸", "type": "noun", "pronunciation": "/dʒəˈkuːzi/" },
"machine": { "user_language": "机器;设备", "type": "noun", "pronunciation": "/məˈʃiːn/" },
"two and a half": { "user_language": "两个半", "type": "number", "pronunciation": "/tuː ænd ə hæf/" },
"in the center of": { "user_language": "在……中心", "type": "preposition", "pronunciation": "/ɪn ðə ˈsentər ʌv/" },
"town": { "user_language": "城镇", "type": "noun", "pronunciation": "/taʊn/" },
"a lot of": { "user_language": "许多", "type": "determiner", "pronunciation": "/ə lɑt ʌv/" },
"noise": { "user_language": "噪音", "type": "noun", "pronunciation": "/nɔɪz/" },
"sidewalks": { "user_language": "人行道", "type": "noun", "pronunciation": "/ˈsaɪdwɔːks/" },
"all day and all night": { "user_language": "整日整夜", "type": "adverb", "pronunciation": "/ɔːl deɪ ænd ɔːl naɪt/" },
"convenient": { "user_language": "便利的", "type": "adjective", "pronunciation": "/kənˈviːniənt/" },
"shirt": { "user_language": "衬衫", "type": "noun", "pronunciation": "/ʃɜːrt/" },
"coat": { "user_language": "外套、大衣", "type": "noun", "pronunciation": "/koʊt/" },
"pants": { "user_language": "裤子", "type": "noun", "pronunciation": "/pænts/" },
"shoes": { "user_language": "鞋子", "type": "noun", "pronunciation": "/ʃuːz/" },
"hat": { "user_language": "帽子", "type": "noun", "pronunciation": "/hæt/" },
"dress": { "user_language": "连衣裙", "type": "noun", "pronunciation": "/drɛs/" },
"suit": { "user_language": "套装", "type": "noun", "pronunciation": "/suːt/" },
"tie": { "user_language": "领带", "type": "noun", "pronunciation": "/taɪ/" },
"socks": { "user_language": "袜子", "type": "noun", "pronunciation": "/sɑːks/" },
"blouse": { "user_language": "女式衬衫", "type": "noun", "pronunciation": "/blaʊs/" },
"skirt": { "user_language": "裙子", "type": "noun", "pronunciation": "/skɜːrt/" },
"sweater": { "user_language": "毛衣", "type": "noun", "pronunciation": "/ˈswɛtər/" },
"jacket": { "user_language": "夹克", "type": "noun", "pronunciation": "/ˈdʒækɪt/" },
"jeans": { "user_language": "牛仔裤", "type": "noun", "pronunciation": "/dʒiːnz/" },
"shorts": { "user_language": "短裤", "type": "noun", "pronunciation": "/ʃɔːrts/" },
"sneakers": { "user_language": "运动鞋", "type": "noun", "pronunciation": "/ˈsniːkərz/" },
"boots": { "user_language": "靴子", "type": "noun", "pronunciation": "/buːts/" },
"gloves": { "user_language": "手套", "type": "noun", "pronunciation": "/ɡlʌvz/" },
"scarf": { "user_language": "围巾", "type": "noun", "pronunciation": "/skɑːrf/" },
"belt": { "user_language": "腰带", "type": "noun", "pronunciation": "/bɛlt/" },
"head": { "user_language": "头", "type": "noun", "pronunciation": "/hɛd/" },
"hair": { "user_language": "头发", "type": "noun", "pronunciation": "/hɛr/" },
"eyes": { "user_language": "眼睛", "type": "noun", "pronunciation": "/aɪz/" },
"nose": { "user_language": "鼻子", "type": "noun", "pronunciation": "/noʊz/" },
"mouth": { "user_language": "嘴", "type": "noun", "pronunciation": "/maʊθ/" },
"ears": { "user_language": "耳朵", "type": "noun", "pronunciation": "/ɪrz/" },
"face": { "user_language": "脸", "type": "noun", "pronunciation": "/feɪs/" },
"neck": { "user_language": "脖子", "type": "noun", "pronunciation": "/nɛk/" },
"shoulders": { "user_language": "肩膀", "type": "noun", "pronunciation": "/ˈʃoʊldərz/" },
"arms": { "user_language": "胳膊", "type": "noun", "pronunciation": "/ɑːrmz/" },
"hands": { "user_language": "手", "type": "noun", "pronunciation": "/hændz/" },
"fingers": { "user_language": "手指", "type": "noun", "pronunciation": "/ˈfɪŋɡərz/" },
"chest": { "user_language": "胸部", "type": "noun", "pronunciation": "/tʃɛst/" },
"back": { "user_language": "背部", "type": "noun", "pronunciation": "/bæk/" },
"stomach": { "user_language": "腹部、肚子", "type": "noun", "pronunciation": "/ˈstʌmək/" },
"legs": { "user_language": "腿", "type": "noun", "pronunciation": "/lɛɡz/" },
"feet": { "user_language": "脚", "type": "noun", "pronunciation": "/fiːt/" },
"happy": { "user_language": "快乐的", "type": "adjective", "pronunciation": "/ˈhæpi/" },
"sad": { "user_language": "悲伤的", "type": "adjective", "pronunciation": "/sæd/" },
"angry": { "user_language": "生气的", "type": "adjective", "pronunciation": "/ˈæŋɡri/" },
"worried": { "user_language": "担心的", "type": "adjective", "pronunciation": "/ˈːrid/" },
"excited": { "user_language": "兴奋的", "type": "adjective", "pronunciation": "/ɪkˈsaɪtɪd/" },
"tired": { "user_language": "疲劳的", "type": "adjective", "pronunciation": "/ˈtaɪərd/" },
"hungry": { "user_language": "饥饿的", "type": "adjective", "pronunciation": "/ˈhʌŋɡri/" },
"thirsty": { "user_language": "口渴的", "type": "adjective", "pronunciation": "/ˈθɜːrsti/" },
"cold": { "user_language": "寒冷的", "type": "adjective", "pronunciation": "/koʊld/" },
"hot": { "user_language": "炎热的", "type": "adjective", "pronunciation": "/hɑːt/" },
"computer": { "user_language": "电脑", "type": "noun", "pronunciation": "/kəmˈpjuːtər/" },
"laptop": { "user_language": "笔记本电脑", "type": "noun", "pronunciation": "/ˈlæptɑːp/" },
"phone": { "user_language": "电话", "type": "noun", "pronunciation": "/foʊn/" },
"tablet": { "user_language": "平板电脑", "type": "noun", "pronunciation": "/ˈtæblət/" },
"internet": { "user_language": "互联网", "type": "noun", "pronunciation": "/ˈɪntərnet/" },
"email": { "user_language": "电子邮件", "type": "noun", "pronunciation": "/ˈiːmeɪl/" },
"website": { "user_language": "网站", "type": "noun", "pronunciation": "/ˈwɛbsaɪt/" },
"app": { "user_language": "应用程序", "type": "noun", "pronunciation": "/æp/" },
"social media": { "user_language": "社交媒体", "type": "noun", "pronunciation": "/ˈsoʊʃəl ˈmidiə/" },
"password": { "user_language": "密码", "type": "noun", "pronunciation": "/ˈpæswərd/" }
},
"phrases": {
"I live in a two-bedroom apartment": { "user_language": "我住在一间两居室的公寓", "context": "housing", "pronunciation": "/aɪ lɪv ɪn ə tuː ˈbɛdruːm əˈpɑːrtmənt/" },
"It's in the center of town": { "user_language": "它在城镇中心", "context": "location", "pronunciation": "/ɪts ɪn ðə ˈsentər ʌv taʊn/" },
"There's a lot of noise": { "user_language": "有很多噪音", "context": "complaint", "pronunciation": "/ðɛrz ə lɑt ʌv nɔɪz/" },
"It's very convenient": { "user_language": "这很便利", "context": "advantage", "pronunciation": "/ɪts ˈvɛri kənˈviniənt/" },
"What are you wearing?": { "user_language": "你穿的是什么?", "context": "clothing", "pronunciation": "/wʌt ɑr ju ˈwɛrɪŋ/" },
"I'm wearing a blue shirt": { "user_language": "我穿着一件蓝色的衬衫", "context": "clothing", "pronunciation": "/aɪm ˈwɛrɪŋ ə blu ʃɜrt/" },
"How do you feel?": { "user_language": "你感觉怎么样?", "context": "emotions", "pronunciation": "/haʊ du ju fil/" },
"I feel happy today": { "user_language": "我今天感觉很开心", "context": "emotions", "pronunciation": "/aɪ fil ˈhæpi təˈdeɪ/" },
"Do you have internet access?": { "user_language": "你有网络连接吗?", "context": "technology", "pronunciation": "/du ju hæv ˈɪntərnet ˈækses/" },
"I need to check my email": { "user_language": "我需要查看我的电子邮件", "context": "technology", "pronunciation": "/aɪ nid tu tʃɛk maɪ ˈimeɪl/" }
},
"dialogs": {
"apartment_search": {
"title": "Looking for an Apartment",
"participants": ["Alex", "Manager"],
"lines": [
{ "speaker": "Alex", "text": "I'm looking for a two-bedroom apartment.", "user_language": "我在找一间两居室的公寓。" },
{ "speaker": "Manager", "text": "We have one available on Central Avenue.", "user_language": "我们在中央大道有一间可用的。" },
{ "speaker": "Alex", "text": "Is it convenient for transportation?", "user_language": "交通方便吗?" },
{ "speaker": "Manager", "text": "Yes, there's a bus stop right outside.", "user_language": "是的,外面就有一个公交车站。" }
]
},
"clothing_shopping": {
"title": "Shopping for Clothes",
"participants": ["Customer", "Salesperson"],
"lines": [
{ "speaker": "Customer", "text": "I need a shirt for work.", "user_language": "我需要一件工作穿的衬衫。" },
{ "speaker": "Salesperson", "text": "What size do you wear?", "user_language": "你穿什么尺码?" },
{ "speaker": "Customer", "text": "Medium. Do you have it in blue?", "user_language": "中码。你们有蓝色的吗?" },
{ "speaker": "Salesperson", "text": "Yes, here's a nice blue shirt.", "user_language": "有,这里有一件漂亮的蓝色衬衫。" }
]
}
},
"exercises": {
"vocabulary_matching": {
"type": "matching",
"instructions": "Match the English words with their Chinese meanings",
"pairs": [
{ "english": "shirt", "chinese": "衬衫" },
{ "english": "happy", "chinese": "快乐的" },
{ "english": "computer", "chinese": "电脑" },
{ "english": "apartment", "chinese": "公寓" }
]
},
"fill_in_blanks": {
"type": "fill_blanks",
"instructions": "Fill in the blanks with the correct words",
"sentences": [
{ "text": "I live in a two-bedroom _______", "answer": "apartment", "user_language": "我住在一间两居室的_______" },
{ "text": "I'm wearing a blue _______", "answer": "shirt", "user_language": "我穿着一件蓝色的_______" }
]
}
},
"grammar": {
"articles": {
"title": "Articles (a, an, the)",
"explanation": "Articles are used before nouns. 'A' and 'an' are indefinite articles (any one), 'the' is the definite article (a specific one).",
"examples": [
{
"chinese": "I'm wearing a blue shirt",
"translation": "我穿着一件蓝色的衬衫",
"explanation": "We use 'a' before singular countable nouns"
},
{
"chinese": "I live in the center of town",
"translation": "我住在城镇中心",
"explanation": "We use 'the' when talking about a specific location"
}
]
},
"present-continuous": {
"title": "Present Continuous Tense (am/is/are + -ing)",
"explanation": "Used to describe actions happening right now or temporary situations. Form: subject + am/is/are + verb-ing",
"examples": [
{
"chinese": "She is wearing a dress",
"translation": "她正穿着一件连衣裙",
"explanation": "Present continuous shows what someone is wearing now"
},
{
"chinese": "What are you wearing?",
"translation": "你穿的是什么?",
"explanation": "Question form: Question word + am/is/are + subject + verb-ing"
}
]
},
"adjectives-emotions": {
"title": "Adjectives for Feelings and Emotions",
"explanation": "Adjectives describe how someone feels. After 'feel' or 'be', we use adjectives (not adverbs).",
"examples": [
{
"chinese": "I feel happy today",
"translation": "我今天感觉很开心",
"explanation": "After 'feel', use adjective 'happy' not adverb 'happily'"
},
{
"chinese": "Are you hungry?",
"translation": "你饿吗?",
"explanation": "We use 'are' with adjectives like hungry, tired, cold"
}
]
},
"there-is-are": {
"title": "There is / There are",
"explanation": "Use 'there is' for singular or uncountable nouns, 'there are' for plural countable nouns.",
"examples": [
{
"chinese": "There is a lot of noise",
"translation": "有很多噪音",
"explanation": "'Noise' is uncountable, so we use 'is' not 'are'"
},
{
"chinese": "There's a bus stop right outside",
"translation": "外面就有一个公交车站",
"explanation": "Use 'there's' (there is) for a single bus stop"
}
]
}
},
"fillInBlanks": [
{
"sentence": "I live in a two-bedroom ___",
"options": ["apartment", "building", "elevator", "closet"],
"correctAnswer": "apartment",
"explanation": "We use 'apartment' to describe a living space with bedrooms",
"grammarFocus": "housing-vocabulary"
},
{
"sentence": "The apartment is in the ___ of town",
"options": ["center", "noise", "sidewalk", "building"],
"correctAnswer": "center",
"explanation": "'Center' means the middle or main part of town",
"grammarFocus": "location"
},
{
"sentence": "I'm wearing a blue ___",
"options": ["shirt", "pants", "shoes", "hat"],
"correctAnswer": "shirt",
"explanation": "A shirt is a piece of clothing for the upper body",
"grammarFocus": "clothing-vocabulary"
},
{
"sentence": "She is wearing a beautiful ___",
"options": ["dress", "tie", "belt", "gloves"],
"correctAnswer": "dress",
"explanation": "A dress is a one-piece garment typically worn by women",
"grammarFocus": "clothing-vocabulary"
},
{
"sentence": "My ___ hurts from typing all day",
"options": ["fingers", "eyes", "ears", "nose"],
"correctAnswer": "fingers",
"explanation": "Fingers are used for typing on a keyboard",
"grammarFocus": "body-parts"
},
{
"sentence": "I feel very ___ today",
"options": ["happy", "shirt", "computer", "building"],
"correctAnswer": "happy",
"explanation": "Happy is an emotion/feeling adjective",
"grammarFocus": "emotions"
},
{
"sentence": "Are you ___? You haven't eaten all day",
"options": ["hungry", "tired", "cold", "hot"],
"correctAnswer": "hungry",
"explanation": "Hungry describes the feeling of needing food",
"grammarFocus": "emotions"
},
{
"sentence": "I need to check my ___",
"options": ["email", "password", "website", "laptop"],
"correctAnswer": "email",
"explanation": "We 'check email' to read messages",
"grammarFocus": "technology"
},
{
"sentence": "Do you have ___ access?",
"options": ["internet", "computer", "phone", "tablet"],
"correctAnswer": "internet",
"explanation": "We say 'internet access' to mean connection to the web",
"grammarFocus": "technology"
},
{
"sentence": "There's a lot of ___ in the city",
"options": ["noise", "building", "elevator", "machine"],
"correctAnswer": "noise",
"explanation": "Noise refers to unwanted or loud sounds",
"grammarFocus": "housing-vocabulary"
},
{
"sentence": "The bus ___ is right outside",
"options": ["stop", "building", "town", "sidewalk"],
"correctAnswer": "stop",
"explanation": "'Bus stop' is the place where buses pick up passengers",
"grammarFocus": "location"
},
{
"sentence": "I'm wearing ___ because it's cold",
"options": ["gloves", "shorts", "sandals", "sunglasses"],
"correctAnswer": "gloves",
"explanation": "Gloves keep your hands warm in cold weather",
"grammarFocus": "clothing-vocabulary"
},
{
"sentence": "She looks ___ about the test",
"options": ["worried", "exciting", "convenience", "building"],
"correctAnswer": "worried",
"explanation": "Worried describes feeling anxious or concerned",
"grammarFocus": "emotions"
},
{
"sentence": "I need a new ___ for my job interview",
"options": ["suit", "jeans", "shorts", "sneakers"],
"correctAnswer": "suit",
"explanation": "A suit is formal clothing appropriate for interviews",
"grammarFocus": "clothing-vocabulary"
},
{
"sentence": "My ___ are tired from walking all day",
"options": ["feet", "hands", "eyes", "ears"],
"correctAnswer": "feet",
"explanation": "Feet are used for walking",
"grammarFocus": "body-parts"
}
],
"corrections": [
{
"correct": "I'm wearing a blue shirt",
"incorrect": "I'm wearing blue shirt",
"explanation": "We need the article 'a' before singular countable nouns",
"grammarFocus": "articles"
},
{
"correct": "There is a lot of noise",
"incorrect": "There are a lot of noise",
"grammarFocus": "subject-verb-agreement",
"explanation": "'Noise' is uncountable, so we use 'is' not 'are'"
},
{
"correct": "I feel happy today",
"incorrect": "I feel happily today",
"explanation": "After 'feel', we use an adjective (happy) not an adverb (happily)",
"grammarFocus": "adjectives-adverbs"
},
{
"correct": "She is wearing a dress",
"incorrect": "She wearing a dress",
"explanation": "We need the verb 'is' in present continuous tense",
"grammarFocus": "present-continuous"
},
{
"correct": "I need to check my email",
"incorrect": "I need check my email",
"explanation": "After 'need', we use 'to' + infinitive verb",
"grammarFocus": "infinitives"
},
{
"correct": "Do you have internet access?",
"incorrect": "Are you have internet access?",
"explanation": "We use 'do' not 'are' for questions with the verb 'have'",
"grammarFocus": "questions"
},
{
"correct": "My fingers hurt",
"incorrect": "My fingers hurts",
"explanation": "Plural subjects take plural verbs (hurt, not hurts)",
"grammarFocus": "subject-verb-agreement"
},
{
"correct": "The apartment is convenient",
"incorrect": "The apartment is convenience",
"explanation": "We need the adjective 'convenient', not the noun 'convenience'",
"grammarFocus": "adjectives-nouns"
},
{
"correct": "I live in the center of town",
"incorrect": "I live in center of town",
"explanation": "We need 'the' before 'center' when talking about a specific location",
"grammarFocus": "articles"
},
{
"correct": "Are you hungry?",
"incorrect": "Do you hungry?",
"explanation": "We use 'are' with adjectives, not 'do'",
"grammarFocus": "questions"
}
],
"statistics": {
"vocabulary_count": 67,
"phrases_count": 10,
"dialogs_count": 2,
"exercises_count": 2,
"fillInBlanks_count": 15,
"corrections_count": 10,
"estimated_completion_time": 25
}
}