AI Training Data
ตัวอย่างที่ Active จะถูก inject เข้า AI Pipeline อัตโนมัติ
19
Few-Shot
12
Negative
4
Refinement
6
Module
41
Active ✅
41
ทั้งหมด
Training Data → AI Pipeline (อัตโนมัติ)
Few-Shot
inject เข้า ai_generate + ai_director
✨ 🎬
Negative
inject เข้า ai_review เพื่อบอก "อย่าทำแบบนี้"
🔍
Refinement
inject เข้า ai_refine เพื่อปรับแต่ง
✏️
Module Usage
ตัวอย่างวิธีใช้โมดูลเฉพาะ
🧩
https://admin.bigzwebcenter.live/api/v1/ai-engine/active-config
Node.js configEngine เรียก endpoint นี้ทุก 5 นาที —
ดึง few_shot_examples, negative_examples,
refinement_examples จาก Training ทั้งหมดพร้อมกัน → inject เข้าทุก pipeline steps อัตโนมัติ
/api/v1/ai-engine/examples?category=few_shot&limit=3
few_shot_examples
/api/v1/ai-engine/examples?category=negative&limit=3
negative_examples
/api/v1/ai-engine/examples?category=refinement&limit=3
refinement_examples
Full Page — ร้านค้าออนไลน์ / E-commerce แฟชั่น
สร้างหน้าแรกร้านค้าออนไลน์ขายเสื้อผ้าแฟชั่น โทนสีดำขาวแดง มี Hero, สินค้าแนะนำ, จุดเด่น, CTA สมัครสมาชิก
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#ffffff","paddingTop":0,"paddingBottom":0},"displayName":"Section","custom":{},"hidden":false,"nodes":["hero","products","why-us","cta"],"linkedNodes":{},"parent":null},"hero":{"type":{"resolvedName":"FlexContainer"},"isCanvas":true,"props":{"flexDirection":"column","alignItems":"center","justifyContent":"center","paddingTop":120,"paddingBottom":80,"paddingLeft":24,"paddingRight":24,"gap":24,"backgroundColor":"#0f0f0f","minHeight":"90vh"},"displayName":"FlexContainer","custom":{},"hidden":false,"nodes":["hero-label","hero-h1","hero-sub","hero-cta"],"linkedNodes":{},"parent":"ROOT"},"hero-label":{"type":{"resolvedName":"Text"},"isCanvas":false,"props":{"text":"NEW COLLECTION 2026","fontSize":11,"fontWeigh...
…[truncated]
Full Page — อสังหาริมทรัพย์ / Real Estate
สร้างหน้าแรกบริษัทอสังหาริมทรัพย์ โทนน้ำเงินขาว ดูน่าเชื่อถือ มี Hero ค้นหาโครงการ, โครงการแนะนำ, บริการ, สถิติ, CTA
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#f0f4ff","paddingTop":0,"paddingBottom":0},"displayName":"Section","custom":{},"hidden":false,"nodes":["hero","listings","services","stats","cta"],"linkedNodes":{},"parent":null},"hero":{"type":{"resolvedName":"FlexContainer"},"isCanvas":true,"props":{"flexDirection":"column","alignItems":"center","justifyContent":"center","paddingTop":100,"paddingBottom":80,"paddingLeft":24,"paddingRight":24,"gap":28,"backgroundColor":"#1e3a5f","backgroundType":"image","backgroundImage":"https://loremflickr.com/1400/700/real,estate,building","minHeight":"85vh"},"displayName":"FlexContainer","custom":{},"hidden":false,"nodes":["re-h1","re-sub","re-cta"],"linkedNodes":{},"parent":"ROOT"},"re-h1":{"type":{"resolvedName":"T...
…[truncated]
Full Page — ฟิตเนส / ยิม
สร้างหน้าแรก Fitness Center / ยิม โทนดำแดง พลังงานสูง มี Hero, โปรแกรม, สิ่งอำนวยความสะดวก, Testimonial, ทดลองเรียนฟรี
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#0a0a0a","paddingTop":0,"paddingBottom":0},"displayName":"Section","custom":{},"hidden":false,"nodes":["hero","programs","facilities","testimonial","cta"],"linkedNodes":{},"parent":null},"hero":{"type":{"resolvedName":"FlexContainer"},"isCanvas":true,"props":{"flexDirection":"column","alignItems":"center","justifyContent":"center","paddingTop":120,"paddingBottom":80,"paddingLeft":24,"paddingRight":24,"gap":24,"backgroundColor":"#0a0a0a","backgroundType":"image","backgroundImage":"https://loremflickr.com/1400/700/gym,fitness,exercise","minHeight":"100vh"},"displayName":"FlexContainer","custom":{},"hidden":false,"nodes":["gym-h1","gym-sub","gym-cta"],"linkedNodes":{},"parent":"ROOT"},"gym-h1":{"type":{"res...
…[truncated]
Full Page — สปา / ร้านเสริมสวย / ความงาม
สร้างหน้าแรกสปาและร้านเสริมสวย โทนขาวโรสโกลด์ ดูหรูหรา มี Hero, บริการ, แกลลอรี, รีวิว, จองคิว
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#fff5f7","paddingTop":0,"paddingBottom":0},"displayName":"Section","custom":{},"hidden":false,"nodes":["hero","services","gallery","reviews","cta"],"linkedNodes":{},"parent":null},"hero":{"type":{"resolvedName":"FlexContainer"},"isCanvas":true,"props":{"flexDirection":"column","alignItems":"center","justifyContent":"center","paddingTop":120,"paddingBottom":80,"paddingLeft":24,"paddingRight":24,"gap":24,"backgroundColor":"#2d1b24","backgroundType":"image","backgroundImage":"https://loremflickr.com/1400/700/spa,beauty,wellness","minHeight":"90vh"},"displayName":"FlexContainer","custom":{},"hidden":false,"nodes":["spa-tag","spa-h1","spa-sub","spa-cta"],"linkedNodes":{},"parent":"ROOT"},"spa-tag":{"type":{"r...
…[truncated]
Full Page — คาเฟ่ / ร้านกาแฟ Specialty Coffee
สร้างหน้าแรกร้านกาแฟ Specialty Coffee โทนน้ำตาล-ครีม อบอุ่น มี Hero, เมนูแนะนำ, เรื่องราวเรา, แกลลอรี, ตำแหน่งร้าน
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#f5ede0","paddingTop":0,"paddingBottom":0},"displayName":"Section","custom":{},"hidden":false,"nodes":["hero","menu","story","gallery","location"],"linkedNodes":{},"parent":null},"hero":{"type":{"resolvedName":"FlexContainer"},"isCanvas":true,"props":{"flexDirection":"column","alignItems":"center","justifyContent":"center","paddingTop":120,"paddingBottom":80,"paddingLeft":24,"paddingRight":24,"gap":24,"backgroundColor":"#2c1810","backgroundType":"image","backgroundImage":"https://loremflickr.com/1400/700/coffee,cafe,interior","minHeight":"90vh"},"displayName":"FlexContainer","custom":{},"hidden":false,"nodes":["cafe-tag","cafe-h1","cafe-sub","cafe-cta"],"linkedNodes":{},"parent":"ROOT"},"cafe-tag":{"type...
…[truncated]
Full Page — สถาบันการศึกษา / คอร์สออนไลน์
สร้างหน้าแรกสถาบันสอนออนไลน์ / E-Learning โทนน้ำเงินขาว ดูน่าเชื่อถือ มี Hero, คอร์สแนะนำ, วิธีการเรียน, อาจารย์, ลงทะเบียน
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#f0f6ff","paddingTop":0,"paddingBottom":0},"displayName":"Section","custom":{},"hidden":false,"nodes":["hero","courses","how","instructors","cta"],"linkedNodes":{},"parent":null},"hero":{"type":{"resolvedName":"FlexContainer"},"isCanvas":true,"props":{"flexDirection":"column","alignItems":"center","justifyContent":"center","paddingTop":100,"paddingBottom":80,"paddingLeft":24,"paddingRight":24,"gap":24,"backgroundColor":"#0f172a","minHeight":"85vh"},"displayName":"FlexContainer","custom":{},"hidden":false,"nodes":["edu-label","edu-h1","edu-sub","edu-stats-row","edu-cta"],"linkedNodes":{},"parent":"ROOT"},"edu-label":{"type":{"resolvedName":"Text"},"isCanvas":false,"props":{"text":"#1 Platform การเรียนออนไ...
…[truncated]
[Super Director] ฟิตเนสสำหรับคนที่กลัวยิมแบบเดิม
สร้างเว็บ Fitness center สำหรับคนที่อยากออกกำลังกายแต่รู้สึก intimidated กับยิมทั่วไป
Super Director: ตัวอย่างการ flip convention — trust-first approach สำหรับ brand ที่ต้องสร้าง psychological safety ก่อน sell
{"concept":"Fitness Without Fear — เปลี่ยน intimidation เป็น invitation","emotion_journey":["recognition","relief","belonging","motivation","action"],"unexpected_element":"ไม่มี PricingCard ใน sections แรกๆ — แทนที่ด้วย Social Proof จากคนที่เคยกลัวยิมเหมือนกัน เพราะ trust ต้องมาก่อน price","cross_industry_inspiration":"ยืม warmth จาก boutique wellness spa + community feel จาก coworking space","theme":{"primary_color":"#1a1a2e","secondary_color":"#e94560","mood":"Dark but approachable — warm energy ไม่ใช่ aggressive","typography":"Bold headlines + approachable body text, หลีกเลี่ยง ALL-CAPS aggressive"},"sections":[{"order":1,"name":"Anti-Hero","narrative_role":"Hook ด้วย pain point โดยตรง ไม่ใช่ product pitch","description":"เราเข้าใจว่าคุณกลัวยิม — headline ที่พูดตรงๆ กับ target รูปบรรยาก...
…[truncated]
[Super Generate] SaaS Trust-First — Testimonials ก่อน Features
เว็บ SaaS ระบบจัดการธุรกิจ ต้องการสร้าง trust ก่อน ให้ลูกค้าเชื่อผ่านคนอื่นก่อนเห็น features
Super Generate: creative choice = StatsCounter ใน hero area + Testimonials section ก่อน Features — trust-first layout สำหรับ B2B SaaS
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#f8fafc","paddingTop":0,"paddingBottom":0},"displayName":"Section","custom":{},"hidden":false,"nodes":["hero","social-proof","features","cta"],"linkedNodes":{},"parent":null},"hero":{"type":{"resolvedName":"FlexContainer"},"isCanvas":true,"props":{"flexDirection":"column","alignItems":"center","justifyContent":"center","paddingTop":100,"paddingBottom":80,"paddingLeft":24,"paddingRight":24,"gap":24,"backgroundColor":"#0f172a","minHeight":"80vh"},"displayName":"FlexContainer","custom":{},"hidden":false,"nodes":["hero-badge","hero-h1","hero-sub","hero-stats","hero-cta"],"linkedNodes":{},"parent":"ROOT"},"hero-badge":{"type":{"resolvedName":"Text"},"isCanvas":false,"props":{"text":"ใช้งานจริงโดย 12,000+ บริษ...
…[truncated]
[Super] StatsCounter ใน Hero — Data-Driven Brand
แสดง credibility ด้วยตัวเลขทันทีใน hero section สำหรับ brand ที่มี strong data
Creative pattern: StatsCounter 4 ตัวใน hero section — เหมาะกับ brand ที่มี strong data และ credibility-first approach เช่น SaaS, Healthcare, FinTech
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#0f172a","paddingTop":0,"paddingBottom":0},"displayName":"Section","custom":{},"hidden":false,"nodes":["hero"],"linkedNodes":{},"parent":null},"hero":{"type":{"resolvedName":"FlexContainer"},"isCanvas":true,"props":{"flexDirection":"column","alignItems":"center","paddingTop":100,"paddingBottom":80,"paddingLeft":24,"paddingRight":24,"gap":32,"minHeight":"85vh","justifyContent":"center"},"displayName":"FlexContainer","custom":{},"hidden":false,"nodes":["h1","sub","stats-row","cta"],"linkedNodes":{},"parent":"ROOT"},"h1":{"type":{"resolvedName":"Text"},"isCanvas":false,"props":{"text":"ตัวเลขที่พิสูจน์
ว่าเราเชื่อถือได้","fontSize":52,"fontWeight":"800","color":"#ffffff","textAlign":"center","lineHeight":1....
…[truncated]
Hero Section — ร้านอาหารญี่ปุ่น Dark Gold
สร้างหน้าแรกร้านอาหารญี่ปุ่น Omakase โทนสีดำทอง ดูหรูหรา มี Hero รูปภาพ และ CTA
ตัวอย่างร้านอาหาร Luxury โทน dark + gold — ใช้ FlexContainer + backgroundImage overlay, ปุ่ม CTA สี gold
{
"ROOT": {
"type": {"resolvedName": "Section"},
"isCanvas": true,
"props": {
"backgroundColor": "#0a0a0a",
"paddingTop": 0,
"paddingBottom": 0,
"minHeight": "100vh"
},
"displayName": "Section",
"custom": {},
"hidden": false,
"nodes": ["hero-wrap"],
"linkedNodes": {},
"parent": null
},
"hero-wrap": {
"type": {"resolvedName": "FlexContainer"},
"isCanvas": true,
"props": {
"flexDirection": "column",
"alignItems": "center",
"justifyContent": "center",
"paddingTop": 120,
"paddingBottom": 80,
"paddingLeft": 24,
"paddingRight": 24,
"gap": 24,
"backgroundType": "image",
"backgroundImage": "https://images.unsplash.com/photo-1579...
…[truncated]
อย่าใช้ Unsplash URL แบบ /photo-xxx โดยตรง
ใส่รูปภาพจาก Unsplash ใน Image component
ห้ามใช้ URL รูปภาพในรูปแบบ https://unsplash.com/photos/xxxxx หรือ https://source.unsplash.com/xxx เพราะ URL เหล่านี้ไม่ใช่ direct image URL และจะโหลดไม่ได้ใน Craft.js. ต้องใช้ URL รูปภาพตรงจาก CDN เท่านั้น เช่น https://images.unsplash.com/photo-xxx?w=800 หรือ URL จาก Unsplash API ที่มี format .jpg/.png/.webp ชัดเจน หรือใช้ LoremFlickr: https://loremflickr.com/800/500/keyword แทน
ปรับโทนสีให้เข้มขึ้น (Light → Dark Mode)
ต้องการปรับ design ที่มีอยู่ให้เป็น Dark Mode สีเข้ม
เมื่อ user ขอให้ "ทำให้เข้มขึ้น" หรือ "Dark Mode": 1) เปลี่ยน Section.props.backgroundColor เป็น #0f172a หรือ #09090b. 2) เปลี่ยน Text ทุกตัวที่สีเข้ม (#1e293b, #334155 ฯลฯ) เป็น #ffffff หรือ #f1f5f9. 3) เปลี่ยน Text สี secondary (#64748b, #94a3b8) เป็น #94a3b8 หรือ #64748b (เปิดเพิ่ม opacity). 4) เปลี่ยน Container.backgroundColor จาก #ffffff เป็น #1e293b. 5) ปรับ border สีจาก #e2e8f0 เป็น #334155. สีที่ควรใช้: bg=#0f172a, card=#1e293b, text-primary=#f1f5f9, text-muted=#94a3b8, border=#334155
วิธีใช้ NavMenu component
สร้าง Navigation Menu (Header) สำหรับเว็บไซต์
NavMenu เป็น component พิเศษ: 1) ใช้เป็น ROOT โดยตรง (ไม่ต้องมี Section ครอบ). 2) menuItems ใช้รูปแบบ "ชื่อ|#anchor" คั่นด้วย newline ( ). 3) bgColor = สีพื้นหลัง navbar. 4) accentColor = สีปุ่ม CTA หรือ active item. 5) ห้ามใส่ nodes ใดๆ ใน NavMenu (nodes: []). 6) isCanvas: false เสมอ
{
"ROOT": {
"type": {"resolvedName": "NavMenu"},
"isCanvas": false,
"props": {
"brandText": "BigZ Studio",
"bgColor": "#0f172a",
"textColor": "#f1f5f9",
"accentColor": "#dc2626",
"menuItems": "หน้าแรก|#home
บริการ|#services
ผลงาน|#portfolio
เกี่ยวกับ|#about
ติดต่อ|#contact"
},
"nodes": [],
"custom": {},
"hidden": false,
"displayName": "NavMenu",
"linkedNodes": {},
"parent": null
}
}
[Super Director] คาเฟ่ Luxury สำหรับ Remote Worker
คาเฟ่ specialty coffee ระดับ premium ที่ต้องการดึงดูดนักธุรกิจและ remote worker ให้เลือกเป็น "ออฟฟิศที่ 3"
Super Director: cross-industry blend example — ยืม workspace positioning ใส่ cafe brand เพื่อสร้าง unique angle
{"concept":"Your Third Office — ไม่ใช่แค่กาแฟดี แต่คือ productivity space ที่สวยที่สุดในเมือง","emotion_journey":["aspiration","familiarity","productivity","loyalty"],"unexpected_element":"Section ชื่อ The Regulars — แสดง quote จาก regulars เกี่ยวกับ productivity และ creativity ที่เพิ่มขึ้น (social proof แบบ work-context ไม่ใช่แค่รีวิวกาแฟ)","cross_industry_inspiration":"ยืม workspace aesthetic จาก WeWork + warmth จาก boutique hotel lobby + editorial style จาก luxury lifestyle magazine","theme":{"primary_color":"#1c1c1c","secondary_color":"#c9a84c","mood":"Dark luxury ผสม warm productivity — serious แต่ inviting","typography":"Serif display headlines + clean sans body — ความคมชัดที่ยังอบอุ่น"},"sections":[{"order":1,"name":"The Atmosphere","narrative_role":"ขาย feeling ก่อน — คนเลือกคาเฟ่ด...
…[truncated]
[Super Generate] ร้านอาหาร Visual-First — GalleryGrid เป็น Hero
ร้านอาหาร fine dining ที่ต้องการให้ภาพอาหารและบรรยากาศพูดแทนทุกอย่าง ตีอาหารให้โดดเด่นทันทีก่อนข้อความ
Super Generate: creative choice = GalleryGrid (6 images) เป็น section แรกสุด — visual impact ก่อนข้อความทั้งหมด เหมาะกับ visual-driven brand
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#0a0a0a","paddingTop":0,"paddingBottom":0},"displayName":"Section","custom":{},"hidden":false,"nodes":["visual-open","brand-intro","signature","cta"],"linkedNodes":{},"parent":null},"visual-open":{"type":{"resolvedName":"FlexContainer"},"isCanvas":true,"props":{"flexDirection":"column","alignItems":"center","paddingTop":80,"paddingBottom":0,"paddingLeft":0,"paddingRight":0,"gap":0,"backgroundColor":"#0a0a0a"},"displayName":"FlexContainer","custom":{},"hidden":false,"nodes":["gallery-hero","brand-overlay"],"linkedNodes":{},"parent":"ROOT"},"gallery-hero":{"type":{"resolvedName":"GalleryGrid"},"isCanvas":false,"props":{"images":["https://loremflickr.com/800/600/japanese,food,omakase","https://loremflickr.c...
…[truncated]
[Super] GalleryGrid เป็น Hero Opening — Visual-Driven Brand
แสดง gallery ภาพเป็นสิ่งแรกที่เห็นก่อน text ใดๆ เหมาะกับ brand ที่ product/atmosphere พูดแทนตัวเองได้
Creative pattern: GalleryGrid 6 images เป็น opening element ก่อน brand identity — เหมาะกับ restaurant, fashion, interior design, photography, art gallery
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#0a0a0a","paddingTop":60,"paddingBottom":0},"displayName":"Section","custom":{},"hidden":false,"nodes":["gallery-first","brand-id"],"linkedNodes":{},"parent":null},"gallery-first":{"type":{"resolvedName":"GalleryGrid"},"isCanvas":false,"props":{"images":["https://loremflickr.com/700/500/product,premium","https://loremflickr.com/700/500/luxury,design","https://loremflickr.com/700/500/craft,artisan","https://loremflickr.com/700/500/interior,beautiful","https://loremflickr.com/700/500/detail,close","https://loremflickr.com/700/500/atmosphere,mood"],"columns":3,"gap":6,"borderRadius":0},"displayName":"GalleryGrid","custom":{},"hidden":false,"nodes":[],"linkedNodes":{},"parent":"ROOT"},"brand-id":{"type":{"re...
…[truncated]
Hero Section — SaaS / Tech Product Dark Blue
สร้าง Hero section สำหรับ SaaS Software บริษัท tech โทนน้ำเงินเข้ม มี headline, subtext และ 2 ปุ่ม
ตัวอย่าง SaaS hero — dark navy, badge badge, 2-button row, large headline. ใช้เป็นต้นแบบสำหรับ tech/software
{
"ROOT": {
"type": {"resolvedName": "Section"},
"isCanvas": true,
"props": {
"backgroundColor": "#0f172a",
"paddingTop": 0,
"paddingBottom": 0
},
"displayName": "Section",
"custom": {},
"hidden": false,
"nodes": ["hero-section"],
"linkedNodes": {},
"parent": null
},
"hero-section": {
"type": {"resolvedName": "FlexContainer"},
"isCanvas": true,
"props": {
"flexDirection": "column",
"alignItems": "center",
"justifyContent": "center",
"paddingTop": 100,
"paddingBottom": 100,
"paddingLeft": 24,
"paddingRight": 24,
"gap": 20,
"backgroundColor": "transparent"
},
"displayName": "FlexContainer",
"custom": {},
"hidden": fa...
…[truncated]
อย่าลืม ROOT node และอย่าใส่ parent ใน ROOT
สร้าง Craft.js JSON โดยไม่มี ROOT node
ทุก Craft.js JSON ต้องมี key "ROOT" เสมอ และ ROOT node ต้องมี parent: null เท่านั้น (ห้ามมี parent เป็น string อื่น). ถ้าไม่มี ROOT หรือ ROOT.parent ไม่ใช่ null Craft.js จะ crash ทันที. ตัวอย่างผิด: {"hero": {..., "parent": null}} โดยไม่มี ROOT. ตัวอย่างถูก: {"ROOT": {..., "parent": null}, "hero": {..., "parent": "ROOT"}}
เพิ่ม CTA Button ที่โดดเด่น
เพิ่ม Call-to-Action button ที่น่าคลิกและโดดเด่น
เมื่อ user ขอ "เพิ่ม CTA button": 1) เพิ่ม Button node ใหม่เข้าไปใน FlexContainer หรือ Section ที่เหมาะสม. 2) ใช้ backgroundColor ที่ contrast กับ background หลัก เช่น ถ้า bg เข้มให้ใช้ #dc2626 (brand red) หรือ #8b5cf6 (violet). 3) กำหนด paddingTop/paddingBottom อย่างน้อย 14px, paddingLeft/paddingRight อย่างน้อย 32px. 4) fontWeight: "700", fontSize: 15. 5) borderRadius: 10 หรือ 12. 6) เพิ่ม text ที่ action-oriented เช่น "เริ่มต้นเลย", "ติดต่อเรา", "สมัครฟรี". 7) ห้ามลืม parent node ที่ถูกต้อง
วิธีใช้ Section + FlexContainer + Container (layout หลัก)
สร้าง layout พื้นฐาน Section > Container (maxWidth) > FlexContainer > content
Pattern: Section (full-width bg) > Container (maxWidth centered) > FlexContainer (row/column layout) > content nodes. ใช้เป็น template หลักสำหรับทุก section. Container ใช้ maxWidth + margin:0 auto เพื่อ center content. FlexContainer ใช้ flexWrap สำหรับ responsive
{
"ROOT": {
"type": {"resolvedName": "Section"},
"isCanvas": true,
"props": {"backgroundColor": "#ffffff","paddingTop": 80,"paddingBottom": 80},
"displayName": "Section",
"custom": {},
"hidden": false,
"nodes": ["wrapper"],
"linkedNodes": {},
"parent": null
},
"wrapper": {
"type": {"resolvedName": "Container"},
"isCanvas": true,
"props": {"maxWidth": "1100px","margin": "0 auto","width": "100%","paddingLeft": 24,"paddingRight": 24},
"displayName": "Container",
"custom": {},
"hidden": false,
"nodes": ["row"],
"linkedNodes": {},
"parent": "ROOT"
},
"row": {
"type": {"resolvedName": "FlexContainer"},
"isCanvas": true,
"props": {"flexDirection": "row","alignItems": "center","j...
…[truncated]
เปลี่ยน/เพิ่ม URL ให้ปุ่ม (Button link)
ต้องการให้ปุ่ม CTA ลิงก์ไปยัง URL ที่ระบุ
เมื่อ user ขอให้ "เพิ่มลิงก์ให้ปุ่ม" หรือ "ให้ปุ่มลิงก์ไปที่...": 1) อัพเดท prop "link" ของ Button node นั้น. 2) ถ้า URL เป็น external (https://) ให้ตั้ง openNewTab: true. 3) ถ้าเป็น anchor (#section) หรือ internal path ให้ openNewTab: false. 4) ห้ามลบ props อื่น (backgroundColor, textColor, etc.) ออก — อัพเดทเฉพาะ link และ openNewTab เท่านั้น.
[Super Director] อสังหาฯ Premium แบบ No Pressure
บริษัทอสังหาริมทรัพย์ระดับ premium ที่ต้องการให้ลูกค้า discover เอง ไม่ต้องการ aggressive sales approach
Super Director: editorial no-pressure approach — CTA positioning strategy เป็น unexpected choice ที่ works กับ premium brand
{"concept":"Find Home, Not Just Property — ให้ลูกค้า discover เองโดยไม่รู้สึกว่าถูก sell","emotion_journey":["curiosity","trust","aspiration","confidence","readiness"],"unexpected_element":"ไม่มีปุ่ม CTA ใน 3 sections แรก — ปล่อยให้ browse และ trust ก่อน CTA อยู่ท้ายสุดเพียงที่เดียว","cross_industry_inspiration":"ยืม editorial layout จาก luxury magazine + trust signals จาก law firm + curation feel จาก art gallery","theme":{"primary_color":"#0d1b2a","secondary_color":"#f0c93a","mood":"Editorial luxury — professional แต่ aspirational เหมือน Monocle magazine","typography":"Large serif display + clean body — ความ authoritative ที่ยังเข้าถึงได้"},"sections":[{"order":1,"name":"Story Opening","narrative_role":"Hook ด้วย narrative ไม่ใช่ property listing","description":"ทุกบ้านมีเรื่องราว — full-...
…[truncated]
[Super Generate] Product Launch — Countdown ใน Hero สร้าง Urgency
หน้า landing page สำหรับ product launch ครั้งสำคัญ ต้องสร้าง excitement และ urgency ให้ผู้เข้าชมรีบ sign up
Super Generate: creative choice = Countdown component ใน hero section — สร้าง urgency และ excitement สำหรับ product launch
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#030712","paddingTop":0,"paddingBottom":0},"displayName":"Section","custom":{},"hidden":false,"nodes":["hero","features","social","cta"],"linkedNodes":{},"parent":null},"hero":{"type":{"resolvedName":"FlexContainer"},"isCanvas":true,"props":{"flexDirection":"column","alignItems":"center","justifyContent":"center","paddingTop":80,"paddingBottom":80,"paddingLeft":24,"paddingRight":24,"gap":32,"backgroundColor":"#030712","minHeight":"100vh"},"displayName":"FlexContainer","custom":{},"hidden":false,"nodes":["launch-tag","launch-h1","launch-sub","countdown-wrap","launch-cta","launch-note"],"linkedNodes":{},"parent":"ROOT"},"launch-tag":{"type":{"resolvedName":"Text"},"isCanvas":false,"props":{"text":"🚀 LAUNC...
…[truncated]
Features Section — คลินิกทันตกรรม 3 จุดเด่น
Features section สำหรับคลินิกทันตกรรม สีฟ้าขาว น่าเชื่อถือ แสดง 3 บริการหลัก
Features 3 card — light blue/white, card กลางสีน้ำเงิน (highlight) สไตล์คลินิกน่าเชื่อถือ
{
"ROOT": {
"type": {"resolvedName": "Section"},
"isCanvas": true,
"props": {
"backgroundColor": "#f8faff",
"paddingTop": 80,
"paddingBottom": 80,
"paddingLeft": 24,
"paddingRight": 24
},
"displayName": "Section",
"custom": {},
"hidden": false,
"nodes": ["content-wrap"],
"linkedNodes": {},
"parent": null
},
"content-wrap": {
"type": {"resolvedName": "Container"},
"isCanvas": true,
"props": {
"maxWidth": "1100px",
"margin": "0 auto",
"width": "100%"
},
"displayName": "Container",
"custom": {},
"hidden": false,
"nodes": ["section-title","cards-row"],
"linkedNodes": {},
"parent": "ROOT"
},
"section-title": {
"type": {"r...
…[truncated]
อย่าใช้ HTML tag โดยตรงใน type.resolvedName
ใส่ type: "div" หรือ type: "p" ใน node
ห้ามใช้ HTML tag เช่น "div", "span", "p", "h1", "section" ใน type.resolvedName เพราะ Craft.js ใช้ชื่อ Component เท่านั้น. ชื่อที่ถูกต้องคือ: Section, Container, FlexContainer, GridContainer, Text, Button, Image, NavMenu, Hero, Feature, HeroImageSlide. ตัวอย่างผิด: {"type": {"resolvedName": "div"}}. ตัวอย่างถูก: {"type": {"resolvedName": "Container"}}
ลด complexity ให้ Minimal / ลด clutter
ต้องการทำให้ design เรียบง่ายขึ้น ลดองค์ประกอบที่ไม่จำเป็น
เมื่อ user ขอ "ทำให้เรียบง่าย" หรือ "Minimal": 1) ลบ Container/FlexContainer ที่ซ้อนกันโดยไม่จำเป็น ให้เหลือแค่ ROOT > FlexContainer > [nodes]. 2) ลด paddingTop/paddingBottom ของ Section จาก 80-100 เหลือ 60-80. 3) ลด gap ระหว่าง elements. 4) ลบ boxShadow, border ที่ไม่จำเป็น. 5) ใช้สีน้อยลง — เหลือแค่ 1-2 สีหลัก + white/black. 6) ลด fontWeight ของ text รอง จาก 700 เป็น 400-500. 7) ลบ decorative elements (emoji badge, gradient, pattern overlay) ออกเหลือแต่ content หลัก
วิธีสร้าง Pricing Cards 3 แพ็กเกจ
Pricing section 3 แพ็กเกจ มี highlight package กลาง
Pricing 3 card: Basic (white) | Pro (brand red + scale up = highlight) | Enterprise (white). ใช้ transform:scale(1.05) ให้ card กลางโดดเด่น. ปุ่ม Pro ใช้ white text บน red bg
{
"ROOT": {
"type": {"resolvedName": "Section"},
"isCanvas": true,
"props": {"backgroundColor": "#f8fafc","paddingTop": 80,"paddingBottom": 80,"paddingLeft": 24,"paddingRight": 24},
"displayName": "Section",
"custom": {},
"hidden": false,
"nodes": ["price-wrap"],
"linkedNodes": {},
"parent": null
},
"price-wrap": {
"type": {"resolvedName": "FlexContainer"},
"isCanvas": true,
"props": {"flexDirection": "column","alignItems": "center","gap": 40},
"displayName": "FlexContainer",
"custom": {},
"hidden": false,
"nodes": ["price-title","price-cards"],
"linkedNodes": {},
"parent": "ROOT"
},
"price-title": {
"type": {"resolvedName": "Text"},
"isCanvas": false,
"props": {"text": "...
…[truncated]
วิธีใช้ ImageSlide component
สร้าง Image Slideshow section ที่ responsive
ImageSlide: 1) ใช้ heightMode="ratio" เป็น default เพื่อ responsive. 2) slides เป็น array ของ {image, link, alt}. 3) image ใน slides ใช้ placeholder "[IMG_N]" pipeline จะ inject รูปจริงให้. 4) วางใน Container (maxWidth) เสมอ. 5) isCanvas: false เสมอ
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#ffffff","paddingTop":60,"paddingBottom":60,"paddingLeft":24,"paddingRight":24},"displayName":"Section","custom":{},"hidden":false,"nodes":["slide-wrap"],"linkedNodes":{},"parent":null},"slide-wrap":{"type":{"resolvedName":"Container"},"isCanvas":true,"props":{"maxWidth":"1100px","margin":"0 auto","width":"100%"},"displayName":"Container","custom":{},"hidden":false,"nodes":["slide-title","img-slide"],"linkedNodes":{},"parent":"ROOT"},"slide-title":{"type":{"resolvedName":"Text"},"isCanvas":false,"props":{"text":"แกลลอรี่ภาพ","fontSize":28,"fontWeight":"700","color":"#0f172a","textAlign":"center","marginBottom":32},"displayName":"Text","custom":{},"hidden":false,"nodes":[],"linkedNodes":{},"parent":"slide...
…[truncated]
Hero Section — Boutique Hotel Luxury White
หน้าแรกโรงแรม Boutique ริมทะเล สีขาวน้ำเงิน ดูสะอาด Luxury มี Hero รูปและ CTA
Hotel hero แบบ 2-column — text left + image right, สี navy/white/gold, layout แบบ magazine
{
"ROOT": {
"type": {"resolvedName": "Section"},
"isCanvas": true,
"props": {
"backgroundColor": "#ffffff",
"paddingTop": 0,
"paddingBottom": 0
},
"displayName": "Section",
"custom": {},
"hidden": false,
"nodes": ["hero-flex"],
"linkedNodes": {},
"parent": null
},
"hero-flex": {
"type": {"resolvedName": "FlexContainer"},
"isCanvas": true,
"props": {
"flexDirection": "row",
"alignItems": "center",
"justifyContent": "space-between",
"paddingTop": 80,
"paddingBottom": 80,
"paddingLeft": 80,
"paddingRight": 0,
"gap": 40,
"minHeight": "85vh",
"flexWrap": "wrap"
},
"displayName": "FlexContainer",
"custom": {},
"hi...
…[truncated]
อย่า nest Container ซ้อนกันเกิน 4 ชั้นโดยไม่จำเป็น
สร้าง Section > Container > FlexContainer > Container > FlexContainer > Container > Text
การ nest container ซ้อนกันลึกเกิน 4 ชั้น (Section > Container > FlexContainer > Container > Text) ทำให้ JSON ใหญ่โดยไม่จำเป็น และ AI จะใช้ tokens มากเกินไป. ควรออกแบบ structure แบบ flat: ROOT (Section) > FlexContainer > [Text, Button, Image] โดยตรง ไม่ต้องมี Container คั่นกลางถ้าไม่จำเป็น. เพิ่ม Container ก็ต่อเมื่อต้องการ maxWidth wrapper หรือ card style เท่านั้น
Button ต้องมี link + openNewTab เสมอ
ใส่ Button component โดยไม่ระบุ link
ทุก Button node ต้องมี prop "link" และ "openNewTab" เสมอ แม้จะยังไม่มี URL จริงก็ให้ใช้ "#" เป็น default. ห้ามสร้าง Button โดยไม่มี link เพราะผู้ใช้จะไม่สามารถตั้งค่าลิงก์ได้ใน preview mode. ตัวอย่างผิด: {"type":{"resolvedName":"Button"},"props":{"text":"คลิกเลย","backgroundColor":"#dc2626"}} ตัวอย่างถูก: {"type":{"resolvedName":"Button"},"props":{"text":"คลิกเลย","backgroundColor":"#dc2626","link":"#","openNewTab":false,"textColor":"#ffffff","borderRadius":9999}}
ห้ามใช้ string ใน props ที่ต้องเป็น number (fontSize, padding, borderRadius)
กำหนด fontSize: "16px", paddingTop: "40px", borderRadius: "8px"
Props ที่เป็น numeric ใน Craft.js ต้องเป็น number ล้วน ห้ามใส่หน่วย "px" เด็ดขาด ตัวอย่างผิด: {"fontSize": "16px", "paddingTop": "40px", "borderRadius": "8px"} ตัวอย่างถูก: {"fontSize": 16, "paddingTop": 40, "borderRadius": 8} Props ที่ต้องเป็น number เสมอ: fontSize, fontWeight (400/600/700/800), paddingTop, paddingBottom, paddingLeft, paddingRight, marginTop, marginBottom, gap, borderRadius, lineHeight (numeric), minHeight (ถ้าเป็นตัวเลข), width (ถ้าเป็น % หรือ px ให้เป็น string เช่น "100%" แต่ถ้าเป็นตัวเลขล้วนให้เป็น number) ข้อยกเว้น: maxWidth เช่น "1100px" และ width เช่น "100%" ให้เป็น string ได้
Hero Section — Personal Portfolio Minimal Dark
หน้า Portfolio ของ Freelance Designer โทน dark minimal สไตล์ modern มีชื่อ, ตำแหน่ง, CTA contact
Portfolio hero — dark minimal, left-aligned, ชื่อใหญ่, role สีม่วง, 2 ปุ่ม hire + work
{
"ROOT": {
"type": {"resolvedName": "Section"},
"isCanvas": true,
"props": {
"backgroundColor": "#09090b",
"paddingTop": 0,
"paddingBottom": 0,
"minHeight": "100vh"
},
"displayName": "Section",
"custom": {},
"hidden": false,
"nodes": ["port-wrap"],
"linkedNodes": {},
"parent": null
},
"port-wrap": {
"type": {"resolvedName": "FlexContainer"},
"isCanvas": true,
"props": {
"flexDirection": "column",
"alignItems": "flex-start",
"justifyContent": "center",
"paddingTop": 0,
"paddingBottom": 0,
"paddingLeft": 80,
"paddingRight": 80,
"minHeight": "100vh",
"gap": 16
},
"displayName": "FlexContainer",
"custom": {},
"...
…[truncated]
Hero Section — บริษัท IT พร้อม Button Link
สร้าง Hero section สำหรับบริษัท IT บริการ Cloud โทนน้ำเงิน มีปุ่ม CTA ลิงก์ไปหน้า contact
ตัวอย่าง Hero IT/Cloud — dark navy, 2-button CTA. สำคัญ: Button ทุกตัวต้องมี link + openNewTab เสมอ แม้จะเป็น anchor link เช่น #contact
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#0f172a","paddingTop":0,"paddingBottom":0},"displayName":"Section","custom":{},"hidden":false,"nodes":["hero-wrap"],"linkedNodes":{},"parent":null},"hero-wrap":{"type":{"resolvedName":"FlexContainer"},"isCanvas":true,"props":{"flexDirection":"column","alignItems":"center","justifyContent":"center","paddingTop":100,"paddingBottom":100,"paddingLeft":24,"paddingRight":24,"gap":24,"minHeight":"90vh"},"displayName":"FlexContainer","custom":{},"hidden":false,"nodes":["badge","headline","subtext","cta-row"],"linkedNodes":{},"parent":"ROOT"},"badge":{"type":{"resolvedName":"Text"},"isCanvas":false,"props":{"text":"☁️ Cloud Solutions Provider","fontSize":12,"color":"#60a5fa","fontWeight":"600","letterSpacing":"0....
…[truncated]
ห้าม nodes[] อ้างอิง id ที่ไม่มีอยู่ใน JSON
สร้าง FlexContainer ที่มี nodes: ["child-1","child-2","child-3"] แต่ใน JSON มีแค่ child-1 และ child-2
ทุก id ที่ปรากฏใน nodes[] ของ node ใดๆ จะต้องมี key นั้นอยู่ใน JSON object ด้วย ตัวอย่างผิด: {"wrapper": {"nodes": ["title","desc","btn-missing"]}} แต่ไม่มี key "btn-missing" ใน JSON ผลที่เกิด: Craft.js จะ crash หรือ render ไม่ครบ วิธีตรวจสอบ: ก่อน output ให้ scan ทุก nodes[] แล้ว verify ว่าทุก id มีอยู่เป็น key ใน JSON นอกจากนี้ ทุก node ที่มี parent เป็น X จะต้องมี id ของตัวเองปรากฏอยู่ใน nodes[] ของ X ด้วย
PricingCard + BlogCard — พร้อม Link Props
ตัวอย่าง PricingCard และ BlogCard ที่มี link props ครบ
ตัวอย่าง PricingCard ที่มี buttonLink + buttonOpenNewTab และ BlogCard ที่มี articleLink + articleOpenNewTab — props เหล่านี้บังคับต้องมีเมื่อสร้าง component ทั้งสอง
{"ROOT":{"type":{"resolvedName":"Section"},"isCanvas":true,"props":{"backgroundColor":"#f8fafc","paddingTop":60,"paddingBottom":60,"paddingLeft":24,"paddingRight":24},"displayName":"Section","custom":{},"hidden":false,"nodes":["demo-row"],"linkedNodes":{},"parent":null},"demo-row":{"type":{"resolvedName":"FlexContainer"},"isCanvas":true,"props":{"flexDirection":"row","gap":24,"justifyContent":"center","flexWrap":"wrap"},"displayName":"FlexContainer","custom":{},"hidden":false,"nodes":["pc1","bc1"],"linkedNodes":{},"parent":"ROOT"},"pc1":{"type":{"resolvedName":"PricingCard"},"isCanvas":false,"props":{"planName":"Pro Plan","price":"990","currency":"฿","period":"/เดือน","features":"เว็บไซต์ไม่จำกัด\nSSL ฟรี\nซัพพอร์ต 24/7","buttonText":"เลือกแพ็กเกจนี้","buttonLink":"https://example.com/sign...
…[truncated]
ห้าม node ขาด required fields หรือมี field ผิดประเภท
สร้าง node โดยไม่มี displayName หรือ custom หรือ hidden หรือ linkedNodes
ทุก node ใน Craft.js JSON ต้องมี required fields ครบดังนี้: - type: { resolvedName: "ComponentName" } (object, ห้ามเป็น string) - isCanvas: true หรือ false (boolean, ห้ามเป็น string "true"/"false") - props: {} (object, อาจว่างได้แต่ต้องมี key นี้) - displayName: "ComponentName" (string) - custom: {} (object, มักว่าง) - hidden: false (boolean) - nodes: [] (array, อาจว่างสำหรับ non-canvas) - linkedNodes: {} (object, มักว่าง) - parent: "parentId" หรือ null สำหรับ ROOT (string หรือ null) ตัวอย่างผิด: ขาด linkedNodes, ขาด custom, isCanvas เป็น "true" (string) ตัวอย่างถูก: มีทุก field และ type ถูกต้องตามที่ระบุ
ห้าม Text node มี nodes[] ที่ไม่ว่าง (Text ไม่ใช่ Canvas)
สร้าง Text node แล้วใส่ child nodes เข้าไปใน nodes[]
Component ที่มี isCanvas: false ต้องมี nodes: [] เท่านั้น ห้ามมี children Component ที่ isCanvas: false เสมอ: Text, Button, Image, Video, Divider, StatsCounter, IconBox, ServiceCard, PricingCard, Testimonial, BlogCard, ProductCard, TeamMember, StepItem, Rating, Countdown, NavMenu, FooterBlock, ContactForm, Accordion, Tabs ตัวอย่างผิด: {"type":{"resolvedName":"Text"}, "isCanvas":false, "nodes":["child-span"]} — จะ error ตัวอย่างถูก: {"type":{"resolvedName":"Text"}, "isCanvas":false, "nodes":[]} — ถูกต้อง ถ้าต้องการจัดกลุ่มข้อความ ให้ใช้ FlexContainer หรือ Container ครอบแทน
[Super] อย่า translate prompt ตรงๆ โดยไม่ตีความ
user บอก "เว็บฟิตเนส" แล้วสร้างยิมทั่วไปเลย
Super Director ต้องตีความ brief ก่อนเสมอ อย่า translate ตรงๆ ถามก่อนเสมอ: ฟิตเนสแบบไหน? สำหรับใคร? ต้องการให้รู้สึกยังไง? แตกต่างจากคู่แข่งอย่างไร? ตัวอย่างผิด: "เว็บฟิตเนส" → Hero + Programs + Facilities + CTA (ยิมทั่วไป 100%) ตัวอย่างถูก: "เว็บฟิตเนส" → วิเคราะห์ก่อนว่า target คือใคร → ถ้าเป็น luxury fitness → ยืม aesthetic จาก spa → sections ต่างกันโดยสิ้นเชิง กฎ: ทุก brief ต้องมี concept + emotion_journey ก่อนออกแบบ sections เสมอ
[Super] อย่าใช้ spacing เท่ากันทุก section
ใส่ paddingTop: 80, paddingBottom: 80 ทุก section โดยไม่มีเหตุผล
Super Generate ต้องสร้าง visual rhythm ที่ deliberate การ padding เท่ากันทุก section ทำให้ผู้เข้าชม "desensitized" — ไม่มีจุดหยุดพัก ไม่มี emphasis ตัวอย่างผิด: Hero(80/80) → Features(80/80) → Testimonials(80/80) → CTA(80/80) ตัวอย่างถูก: Hero(120/80 ใหญ่ = importance) → Features(60/60 แน่นขึ้น) → Testimonials(80/80 ปกติ) → CTA(100/100 กว้างขึ้น = final emphasis) กฎ: sections ที่ important ควร pad มากกว่า, transition sections pad น้อยกว่า, CTA section มักใหญ่ที่สุดเพื่อ closing impact
[Super] อย่าวาง CTA button ทุก section
วาง Button "ติดต่อเรา" หรือ "สมัครเลย" ทุก section ตั้งแต่ต้นจนจบ
Super roles ต้องคิดเรื่อง CTA strategy อย่างจงใจ การมี CTA ทุก section ลด impact ของ CTA จริงๆ และทำให้ผู้เข้าชมรู้สึกว่าถูก pressure กลยุทธ์ที่ดี: - Trust-first brand: CTA เดียวที่ท้ายสุด หลังจาก trust ถูกสร้างแล้ว - Urgency brand: CTA ใน hero + CTA ท้าย (2 จุด) - High-consideration brand (อสังหาฯ, B2B): ไม่มี CTA ใน 3 sections แรก - Impulse brand (event, sale): CTA + countdown ใน hero ทันที กฎ: จำนวนและตำแหน่ง CTA ต้องตัดสินใจจาก buyer journey ไม่ใช่ใส่ทุกที่เพราะ "ควรมี"