🎬 Google Veo 3 Flow Generator

สร้างไฟล์ JSON สำหรับวีดีโอ AI 3 ฉาก พร้อมบทพูดภาษาไทย

📚 ข้อมูลการสอน

🎥 การตั้งค่าวีดีโอ

👩‍🏫 การตั้งค่าตัวละครหลัก

🌐 การตั้งค่าโกลบอล (Globals)

🎬 การตั้งค่า 3 ฉาก

ฉากที่ 1: เปิดบทเรียน

ฉากที่ 2: อธิบายเนื้อหา

ฉากที่ 3: สรุปและปิดท้าย

"project_name": `${subjectEn}_${topic.replace(/\s+/g, '_')}_complete_flow`.replace(/[^a-zA-Z0-9_]/g, ''), "total_scenes": 3, "total_duration": 24, "created_at": new Date().toISOString(), "educational_subject": subjectEn, "target_grade": gradeEn }, "globals": globalsJSON.globals, "character_definitions": globalsJSON.character_definitions, "educational_context": globalsJSON.educational_context, "scenes": scenes, "flow_settings": { "auto_transition": true, "background_music": false, "subtitle_display": true, "scene_order": [1, 2, 3], "loop_playback": false } } }; // แสดงผลลัพธ์ document.getElementById('globalsOutput').textContent = JSON.stringify(globalsJSON, null, 2); document.getElementById('scene1Output').textContent = JSON.stringify(scenes[0], null, 2); document.getElementById('scene2Output').textContent = JSON.stringify(scenes[1], null, 2); document.getElementById('scene3Output').textContent = JSON.stringify(scenes[2], null, 2); document.getElementById('completeOutput').textContent = JSON.stringify(completeFlowJSON, null, 2); document.getElementById('resultSection').style.display = 'block'; document.getElementById('resultSection').scrollIntoView({ behavior: 'smooth' }); } // ฟังก์ชันแปลภาษา function translateSubject(subject) { const subjectMap = { 'คณิตศาสตร์': 'Mathematics', 'วิทยาศาสตร์': 'Science', 'ภาษาไทย': 'Thai Language', 'ภาษาอังกฤษ': 'English Language', 'สังคมศึกษา': 'Social Studies', 'ประวัติศาสตร์': 'History', 'ศิลปะ': 'Art', 'ดนตรี': 'Music', 'พลศึกษา': 'Physical Education', 'คอมพิวเตอร์': 'Computer Science' }; return subjectMap[subject] || subject; } function translateGrade(grade) { const gradeMap = { 'ประถมศึกษาตอนต้น': 'Elementary Early (Grade 1-3)', 'ประถมศึกษาตอนปลาย': 'Elementary Late (Grade 4-6)', 'มัธยมศึกษาตอนต้น': 'Middle School (Grade 7-9)', 'มัธยมศึกษาตอนปลาย': 'High School (Grade 10-12)' }; return gradeMap[grade] || grade; } function translateSetting(setting) { const settingMap = { 'classroom': 'Modern classroom', 'laboratory': 'Science laboratory', 'library': 'Library', 'outdoor': 'Outdoor natural environment', 'home': 'Home study area', 'museum': 'Museum', 'studio': 'Professional studio', 'digital': 'Digital cyber environment' }; return settingMap[setting] || setting; } function translateMood(mood) { const moodMap = { 'ร่าเริง สนุกสนาน': 'cheerful and fun', 'สงบ เงียบสงัด': 'calm and peaceful', 'กระปรี้กระเปร่า': 'energetic and dynamic', 'เป็นทางการ': 'professional', 'สร้างแรงบันดาลใจ': 'inspiring and motivational' }; return moodMap[mood] || mood; } function translateAppearance(appearance) { if (!appearance) return ''; // Simple translation - ในการใช้งานจริงอาจต้องใช้ translation API return appearance.replace(/ครู/g, 'teacher') .replace(/ผม/g, 'hair') .replace(/สั้น/g, 'short') .replace(/ยาว/g, 'long') .replace(/สีดำ/g, 'black') .replace(/สีน้ำตาล/g, 'brown') .replace(/เสื้อ/g, 'shirt') .replace(/สีขาว/g, 'white') .replace(/สีฟ้า/g, 'blue') .replace(/ยิ้ม/g, 'smile'); } function getDefaultScenePrompt(sceneNum) { const prompts = { 1: "Scene 1: Teacher introduction", 2: "Scene 2: Main content explanation", 3: "Scene 3: Lesson conclusion" }; return prompts[sceneNum]; } function getDefaultThaiVoiceLine(sceneNum) { const voiceLines = { 1: "สวัสดีค่ะนักเรียน วันนี้เราจะเรียนรู้เรื่องใหม่ที่น่าสนใจมาก", 2: "เรามาดูตัวอย่างนี้กัน เพื่อให้เข้าใจมากยิ่งขึ้น", 3: "สรุปแล้วในบทเรียนนี้ เราได้เรียนรู้สิ่งสำคัญมากมาย เจอกันใหม่บทหน้านะคะ" }; return voiceLines[sceneNum]; } let enhancedPrompt = ''; // เพิ่มคำบรรยายตัวละคร (ภาษาอังกฤษ) const genderText = teacherGender === 'male' ? 'male teacher' : 'female teacher'; const ageText = teacherAge || '30-35 years old'; enhancedPrompt += `A ${genderText} aged ${ageText}`; if (teacherAppearance) { enhancedPrompt += `, ${translateAppearance(teacherAppearance)}`; } // เพิ่มการกระทำตามฉาก (ภาษาอังกฤษ) if (sceneNum === 1) { enhancedPrompt += `, standing in front of the class, greeting students with a warm smile`; } else if (sceneNum === 2) { enhancedPrompt += `, actively teaching and demonstrating concepts using educational materials`; } else { enhancedPrompt += `, concluding the lesson with an encouraging and positive expression`; } // เพิ่มสถานที่ (ภาษาอังกฤษ) const settingMap = { 'classroom': 'in a modern bright classroom', 'laboratory': 'in a well-equipped science laboratory', 'library': 'in a quiet library setting', 'outdoor': 'in a natural outdoor environment', 'home': 'in a comfortable home study area', 'museum': 'in an educational museum space', 'studio': 'in a professional studio setting', 'digital': 'in a futuristic digital environment' }; if (setting && settingMap[setting]) { enhancedPrompt += ` ${settingMap[setting]}`; } // เพิ่ม base prompt ถ้ามี if (basePrompt) { enhancedPrompt += `. ${basePrompt}`; } // เพิ่มสไตล์และอารมณ์ (ภาษาอังกฤษ) if (videoStyle) { enhancedPrompt += `. Visual style: ${videoStyle}`; } if (mood) { const moodMap = { 'cheerful': 'cheerful and engaging atmosphere', 'calm': 'calm and peaceful atmosphere', 'energetic': 'energetic and dynamic atmosphere', 'professional': 'professional and focused atmosphere', 'inspiring': 'inspiring and motivational atmosphere' }; const translatedMood = translateMood(mood); enhancedPrompt += `. ${moodMap[translatedMood] || translatedMood}`; } // เพิ่มคำแนะนำทางเทคนิค (ภาษาอังกฤษ) enhancedPrompt += '. High quality 8-second video with cinematic lighting and professional camera work. Character consistency maintained throughout.'; return enhancedPrompt; = teacherGender === 'male' ? 'male teacher' : 'female teacher'; const ageText = teacherAge || '30-35 years old'; enhancedPrompt += `A ${genderText} aged ${ageText}`; if (teacherAppearance) { enhancedPrompt += `, ${teacherAppearance}`; } // เพิ่มการกระทำตามฉาก if (sceneNum === 1) { enhancedPrompt += `, standing in front of the class, greeting students with a warm smile`; } else if (sceneNum === 2) { enhancedPrompt += `, actively teaching and demonstrating concepts using educational materials`; } else { enhancedPrompt += `, concluding the lesson with an encouraging and positive expression`; } // เพิ่มสถานที่ const settingMap = { 'classroom': 'in a modern bright classroom', 'laboratory': 'in a well-equipped science laboratory', 'library': 'in a quiet library setting', 'outdoor': 'in a natural outdoor environment', 'home': 'in a comfortable home study area', 'museum': 'in an educational museum space', 'studio': 'in a professional studio setting', 'digital': 'in a futuristic digital environment' }; if (setting && settingMap[setting]) { enhancedPrompt += ` ${settingMap[setting]}`; } // เพิ่ม base prompt ถ้ามี if (basePrompt) { enhancedPrompt += `. ${basePrompt}`; } // เพิ่มสไตล์และอารมณ์ if (videoStyle) { enhancedPrompt += `. Visual style: ${videoStyle}`; } if (mood) { const moodMap = { 'cheerful': 'cheerful and engaging atmosphere', 'calm': 'calm and peaceful atmosphere', 'energetic': 'energetic and dynamic atmosphere', 'professional': 'professional and focused atmosphere', 'inspiring': 'inspiring and motivational atmosphere' }; enhancedPrompt += `. ${moodMap[mood] || mood}`; } // ฟังก์ชันแปลภาษา function translateSubject(subject) { const subjectMap = { 'คณิตศาสตร์': 'Mathematics', 'วิทยาศาสตร์': 'Science', 'ภาษาไทย': 'Thai Language', 'ภาษาอังกฤษ': 'English Language', 'สังคมศึกษา': 'Social Studies', 'ประวัติศาสตร์': 'History', 'ศิลปะ': 'Art', 'ดนตรี': 'Music', 'พลศึกษา': 'Physical Education', 'คอมพิวเตอร์': 'Computer Science' }; return subjectMap[subject] || subject; } function translateGrade(grade) { const gradeMap = { 'ประถมศึกษาตอนต้น': 'Elementary Early (Grade 1-3)', 'ประถมศึกษาตอนปลาย': 'Elementary Late (Grade 4-6)', 'มัธยมศึกษาตอนต้น': 'Middle School (Grade 7-9)', 'มัธยมศึกษาตอนปลาย': 'High School (Grade 10-12)' }; return gradeMap[grade] || grade; } function translateSetting(setting) { const settingMap = { 'classroom': 'Modern classroom', 'laboratory': 'Science laboratory', 'library': 'Library', 'outdoor': 'Outdoor natural environment', 'home': 'Home study area', 'museum': 'Museum', 'studio': 'Professional studio', 'digital': 'Digital cyber environment' }; return settingMap[setting] || setting; } function translateMood(mood) { const moodMap = { 'cheerful': 'cheerful', 'calm': 'calm', 'energetic': 'energetic', 'professional': 'professional', 'inspiring': 'inspiring' }; return moodMap[mood] || mood; } function translateAppearance(appearance) { if (!appearance) return ''; // Simple translation for common Thai words return appearance.replace(/ครู/g, 'teacher') .replace(/ผมสั้น/g, 'short hair') .replace(/ผมยาว/g, 'long hair') .replace(/สีดำ/g, 'black') .replace(/สีน้ำตาล/g, 'brown') .replace(/เสื้อเชิ้ต/g, 'shirt') .replace(/สีขาว/g, 'white') .replace(/สีฟ้า/g, 'blue') .replace(/ยิ้มแย้ม/g, 'smiling') .replace(/แจ่มใส/g, 'cheerful') .replace(/สวมแว่น/g, 'wearing glasses') .replace(/เรียบร้อย/g, 'neat'); } function getDefaultScenePrompt(sceneNum) { const prompts = { 1: "Teacher introduction and greeting", 2: "Main content explanation with teaching materials", 3: "Lesson conclusion and encouragement" }; return prompts[sceneNum]; } function getDefaultThaiVoiceLine(sceneNum) { const voiceLines = { 1: "สวัสดีค่ะนักเรียน วันนี้เราจะเรียนรู้เรื่องใหม่ที่น่าสนใจมาก", 2: "เรามาดูตัวอย่างนี้กัน เพื่อให้เข้าใจมากยิ่งขึ้น", 3: "สรุปแล้วในบทเรียนนี้ เราได้เรียนรู้สิ่งสำคัญมากมาย เจอกันใหม่บทหน้านะคะ" }; return voiceLines[sceneNum]; } } function copyJSON(outputId) { const jsonText = document.getElementById(outputId).textContent; navigator.clipboard.writeText(jsonText).then(function() { const btn = event.target; const originalText = btn.textContent; btn.textContent = '✅ คัดลอกแล้ว!'; btn.style.background = '#28a745'; setTimeout(() => { btn.textContent = originalText; btn.style.background = '#28a745'; }, 2000); }); } function downloadJSON(filename, outputId) { const jsonText = document.getElementById(outputId).textContent; const blob = new Blob([jsonText], { type: 'application/json' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `${filename}.json`; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); } // เพิ่ม Event Listeners สำหรับการอัพเดทแบบเรียลไทม์ document.getElementById('subject').addEventListener('change', function() { updateTopicSuggestions(); }); function updateTopicSuggestions() { const subject = document.getElementById('subject').value; const topicInput = document.getElementById('topic'); const topicSuggestions = { 'คณิตศาสตร์': 'เศษส่วน, ทศนิยม, เรขาคณิต, พีชคณิต, สมการ', 'วิทยาศาสตร์': 'ระบบย่อยอาหาร, พันธุกรรม, แรงและการเคลื่อนที่, สสาร, พลังงาน', 'ภาษาไทย': 'อักษรไทย, ประโยค, ความเรียง, วรรณกรรม, คำศัพท์', 'ภาษาอังกฤษ': 'Grammar, Vocabulary, Conversation, Reading Comprehension', 'สังคมศึกษา': 'ภูมิศาสตร์, เศรษฐกิจ, การปกครอง, วัฒนธรรม, ประชากร', 'ประวัติศาสตร์': 'ประวัติศาสตร์ไทย, ประวัติศาสตร์โลก, อารยธรรม, สงคราม', 'ศิลปะ': 'จิตรกรรม, ประติมากรรม, หัตถกรรม, ดีไซน์, สีและแสง', 'ดนตรี': 'ทฤษฎีดนตรี, การเล่นเครื่องดนตรี, การร้องเพลง, จังหวะ', 'พลศึกษา': 'กีฬา, การออกกำลังกาย, สุขภาพ, โภชนาการ', 'คอมพิวเตอร์': 'การเขียนโปรแกรม, อินเทอร์เน็ต, ซอฟต์แวร์, AI' }; if (topicSuggestions[subject]) { topicInput.placeholder = `เช่น ${topicSuggestions[subject]}`; } } // เพิ่มการตั้งค่าเริ่มต้น document.addEventListener('DOMContentLoaded', function() { // ตั้งค่าเริ่มต้น document.getElementById('aspectRatio').value = '16:9'; document.getElementById('qualityPreset').value = 'high'; document.getElementById('globalSeed').value = Math.floor(Math.random() * 99999); });