AI Visibility & Website Audit Report
[โดเมนลูกค้า]
[ชื่อลูกค้า] ([ชื่อลูกค้า] [จังหวัด])
16 สิงหาคม 2569
Profile C — AI-Native
Methodology: v2.0
Overall Score: 46/100 — Grade D — Poor
0 Executive Summary ภาพรวมผลการตรวจสอบ
0.1 สรุปผลการวิเคราะห์
[ชื่อลูกค้า] คือร้านอาหารไทยพื้นบ้า[ชื่อลูกค้ารายอื่น] ชุมชน[อำเภอ/ตำบล] จ.[จังหวัด] เจ้าของรางวัลระดับโลก [รางวัลออกแบบระดับสากล] (Social Impact) จาก [สื่อออกแบบต่างประเทศ], [รางวัลร้านอาหารระดับสากล] จาก [นิตยสารต่างประเทศ] และ [รางวัลอาหารไทยระดับประเทศ] ซึ่งเป็นร้านเดียวในประเทศไทยที่ได้รับ เว็บเป็น PHP ล้วนไม่มี CMS อยู่บน Hostinger (PHP 7.4.33) คะแนน AI Visibility ด้วย Profile C (AI-Native) สูตร v2.0 อยู่ที่ 46/100 เกรด D ภาพรวมของงานนี้ชัดเจนมาก คือแบรนด์แข็งแรงมากในโลกภายนอก (AI Citation 85 · Off-Site 90) แต่ตัวเว็บอ่อนแรงเกือบทุกจุด (Content Understandability เหลือ 15 · AI Overview 19) ปัญหาที่ร้ายแรงที่สุด 3 ข้อคือ หนึ่ง หน้าเมนูไม่มีเมนู มีแค่หัวข้อกับปุ่ม LINE ทั้งที่ราคาสำรับจริง 2,400–3,300 บาท ถูกเผยแพร่อยู่บน Wongnai และเว็บรีวิวภายนอกแล้ว สอง ลิงก์ภาษาอังกฤษ TH/EN บนทุกหน้าเป็นทางตัน ทุก URL ใต้ /en/ ตอบ 301 วนกลับหน้าไทย แปลว่าเว็บนี้ไม่มีภาษาอังกฤษอยู่จริงเลยสำหรับเมืองมรดกโลกที่นักท่องเที่ยวต่างชาติเป็นตลาดหลัก และสาม Hostinger บล็อก GPTBot ของ OpenAI กับ meta-externalagent ที่ระดับ CDN ด้วย HTTP 429 ทำให้ ChatGPT เก็บเว็บนี้เข้าคลังความรู้ไม่ได้เลย จุดที่ต้องย้ำกับลูกค้าคือคะแนน 46 นี้ไม่ได้แปลว่าแบรนด์อ่อน แต่แปลว่าเว็บของตัวเองกำลังเป็นช่องทางที่อ่อนที่สุดในบรรดาช่องทางทั้งหมดที่แบรนด์มี
0.2 Alerts
|
[BLOCKER] หน้าเมนูไม่มีเมนู — ร้านอาหารที่ AI ตอบไม่ได้ว่าขายอะไร ราคาเท่าไร หน้า /menu.php ทั้งหน้ามีแค่หัวข้อ 'เมนู' ข้อความบรรยาย 3 บรรทัด และปุ่ม LINE หนึ่งปุ่ม ไม่มีชื่ออาหารสักจาน ไม่มีราคาสักตัว ไม่มี Menu schema ขณะที่ข้อมูลจริงถูกเผยแพร่อยู่แล้วบนเว็บภายนอก คือ สำรับป้าอี้ 3,300++ บาท สำรับป้าขันทอง 2,900++ บาท สำรับรองท้อง (2 ท่าน) 2,400++ บาท a la carte เริ่ม 320 บาท และล่องเรือ 3,500++ บาทต่อชั่วโมง (สูงสุด 6 ท่าน) ผลคือเมื่อมีคนถาม AI ว่า '[ชื่อลูกค้า] ราคาเท่าไร' AI จะไปหยิบคำตอบจาก Wongnai และเว็บรีวิว ไม่ใช่จากเว็บของร้าน แบรนด์จึงเสียสิทธิ์ควบคุมข้อมูลราคาของตัวเองทั้งหมด นี่คือ ticket ที่ให้ผลตอบแทนสูงที่สุดในรายงานฉบับนี้ |
|
[BLOCKER] เว็บภาษาอังกฤษไม่มีอยู่จริง — ลิงก์ TH/EN ทุกหน้าเป็นทางตัน ทุกหน้าบนเว็บมีปุ่มสลับภาษา TH/EN ชี้ไป /en/ รวมทั้งสิ้น 45 ลิงก์ทั่วทั้งเว็บ แต่ทดสอบแล้วทุก URL ใต้ /en/ ตอบ HTTP 301 ไปที่ http://www.[โดเมนลูกค้า]/ (สังเกตว่าเป็น http ไม่ใช่ https) แล้ววิ่งต่ออีก 2 ครั้งจนกลับมาจบที่หน้าภาษาไทยเดิม รวม 3 redirect ต่อการคลิกหนึ่งครั้ง แปลว่านักท่องเที่ยวต่างชาติที่กดปุ่ม EN จะถูกโยนกลับมาหน้าไทยโดยไม่มีอะไรอธิบาย สำหรับร้านอาหารในเมืองมรดกโลกที่ตลาดหลักคือชาวต่างชาติ นี่คือการปิดประตูใส่ลูกค้ากลุ่มใหญ่ที่สุดกลุ่มหนึ่ง และทำให้ AI ที่ตอบคำถามภาษาอังกฤษไม่มีเนื้อหาของแบรนด์ให้อ้างอิงเลย |
|
[BLOCKER] Hostinger บล็อก GPTBot ของ OpenAI และ meta-externalagent ด้วย HTTP 429 ที่ระดับ CDN ทดสอบซ้ำ 3 รอบได้ผลเหมือนกันทุกครั้ง คือ User-Agent ที่มีเลขเวอร์ชันจริงอย่าง GPTBot/1.2 และ meta-externalagent/1.1 ถูกตอบกลับด้วย HTTP 429 พร้อม content-length เป็น 0 และ header ระบุ server: hcdn ซึ่งเป็น edge ของ Hostinger ไม่ใช่ตัว PHP ขณะที่ ClaudeBot, PerplexityBot, Googlebot, Bingbot, Applebot, Amazonbot, OAI-SearchBot และ ChatGPT-User ผ่านหมดด้วย HTTP 200 นี่ไม่ใช่ rate limit ชั่วคราวเพราะผลคงที่ทุกรอบและ UA ตัวอื่นที่มีเลขเวอร์ชันเหมือนกันกลับผ่านได้ สรุปคือ GPTBot ซึ่งเป็นตัวที่ OpenAI ใช้เก็บเนื้อหาเข้าคลังความรู้ถูกปิดกั้น 100% ต้องเข้า hPanel ไปปิดสวิตช์บล็อก AI crawler |
|
[BLOCKER] ไม่มี robots.txt และไม่มี sitemap.xml — ทั้งสองไฟล์ตอบ 404 ตรวจ /robots.txt, /sitemap.xml, /sitemap_index.xml และ /sitemap.txt ได้ HTTP 404 ทั้งหมด สิ่งที่เสิร์ฟกลับมาคือหน้า 'This Page Does Not Exist' ของ Hostinger ผลคือ search engine และ AI crawler ไม่มีแผนที่เว็บให้เดิน ต้องเดาจากการไล่ลิงก์เอาเอง และเว็บเสียคะแนน Sitemap/Indexability ไป 0 เต็มๆ ข้อดีคือการไม่มี robots.txt ไม่ได้บล็อกใคร Google-Extended จึงยังได้เต็ม 100 แต่การมี sitemap ที่ถูกต้องคือของที่ต้องมี ไม่ใช่ของแถม |
|
[WARNING] หน้าแกลเลอรี่ไม่มีรูปสักรูปในสายตา AI — เห็นเป็นชื่อไฟล์ 21 บรรทัด หน้า /gallery.php ไม่มี tag <img> สำหรับรูปแกลเลอรี่เลยแม้แต่ตัวเดียว โครงสร้างจริงคือ <div class='gl-item'>Image39.jpg</div> แล้วใช้ jQuery อ่านชื่อไฟล์จากข้อความในกล่อง เอาไปตั้งเป็น CSS background-image แล้วลบข้อความทิ้ง ผลคือถ้า JS ไม่ทำงาน ผู้ใช้และ crawler จะเห็นชื่อไฟล์ 21 บรรทัดเรียงกันเป็นเนื้อหาหน้า แต่ถ้า JS ทำงาน รูปจะกลายเป็น background ที่ใส่ alt ไม่ได้และ Google Images เก็บไม่ได้ ทั้งสองทางเว็บไม่ได้อะไรจากรูป 21 รูปนี้เลย ซ้ำยังได้ข้อความขยะเพิ่มมาอีก 21 บรรทัด |
|
[WARNING] title และ meta description ซ้ำกันหมดทั้ง 15 หน้า ทุกหน้าตั้งแต่หน้าแรก เกี่ยวกับเรา เมนู บทความ วิดีโอ แกลเลอรี่ รางวัล ติดต่อเรา ไปจนถึงบทความทั้ง 7 บท ใช้ <title>[ชื่อลูกค้า]</title> เหมือนกันทุกตัวอักษร และใช้ meta description ก้อนเดียวกันทั้งหมด ผลคือ Google และ AI แยกไม่ออกว่าหน้าไหนพูดเรื่องอะไร และ SERP จะแสดงผลลัพธ์ที่หน้าตาเหมือนกันหมดจนคนไม่รู้จะคลิกอันไหน นี่คือ quick win ที่แก้ได้ใน 1 ชั่วโมงและได้คะแนนกลับมาเยอะ |
|
[WARNING] ไม่มี canonical, ไม่มี OG tag, ไม่มี hreflang บนทุกหน้า ตรวจครบทั้ง 15 หน้าไม่พบ <link rel='canonical'> สักหน้า ไม่พบ og:title / og:description / og:image / og:url สักตัว ไม่พบ twitter:card และไม่พบ hreflang ผลที่เห็นได้ทันทีคือเมื่อแชร์ลิงก์ร้านลง LINE, Facebook หรือ Messenger จะไม่มีรูปและไม่มีคำบรรยายขึ้นให้เลย สำหรับร้านที่ลูกค้าส่งลิงก์ต่อกันผ่าน LINE เป็นหลัก นี่คือการเสียโอกาสทุกครั้งที่มีคนแชร์ |
|
[WARNING] หน้าแรกไม่มี heading tag เลยแม้แต่ตัวเดียว และหน้าวิดีโอมี H1 ซ้อน 2 ตัว นับ h1 ถึง h6 บนหน้าแรกได้ 0 ทั้งที่มีเนื้อหาบรรยายร้านยาว 3 ย่อหน้า AI จึงไม่มีสัญญาณโครงสร้างว่าอะไรคือหัวข้อของหน้า ส่วน [หน้าวิดีโอ] มี H1 สองตัวคือ 'วิดีโอ' และ 'Video Clip' ซึ่งขัดกัน นอกจากนี้ 8 จาก 15 หน้ามีแค่ H1 ตัวเดียวแล้วไม่มี H2 หรือ H3 ต่อเลย ทำให้โครงสร้างหัวข้อทั้งเว็บแบนราบ ไม่มีลำดับชั้นให้ AI ไล่ |
|
[WARNING] หน้าติดต่อไม่มีที่อยู่และไม่มีอีเมล ทำให้ directory ภายนอกกรอกที่อยู่กันเองคนละแบบ หน้า /contact.php มีเบอร์โทร [เบอร์โทรลูกค้า] มี LINE มีแผนที่ฝัง และมีคำบอกทาง แต่ไม่มีที่อยู่แบบไปรษณีย์เป็นข้อความเลย และไม่มีอีเมล ผลที่ตามมาวัดได้จริง คือ directory ภายนอกแต่ละเจ้ากรอกที่อยู่กันคนละแบบ TripAdvisor ระบุ [ที่อยู่ลูกค้า], [อำเภอ] · Wongnai ระบุ '1 ตำบล [อำเภอ/ตำบล] อำเภอ[อำเภอ/ตำบล]' · [ไดเรกทอรีภายนอก] ระบุ '[บ้านเลขที่], [จังหวัด]' · [ลิงก์ภายนอก] ระบุอำเภอ [อำเภอ] · [ไดเรกทอรีภายนอก] ระบุ [ตำบล] Subdistrict ซึ่งเป็นคนละอำเภอกันหมด ต้นเหตุคือเว็บของแบรนด์เองไม่เคยประกาศที่อยู่ที่ถูกต้องไว้ให้ยึด |
|
[WARNING] listing บน Wongnai ใช้ชื่อปนกับอีกแบรนด์ว่า '[ชื่อลูกค้ารายอื่น] [จังหวัด] [ชื่อลูกค้า]' หน้า Wongnai ID [listing ID] แสดงชื่อร้านเป็น '[ชื่อลูกค้ารายอื่น] [จังหวัด][ชื่อลูกค้า]' คือชื่อสองแบรนด์ต่อกันในบรรทัดเดียว พร้อมที่อยู่ที่ตัดเหลือ '1 ตำบล [อำเภอ/ตำบล]' และเวลาเปิดที่ไม่ตรงกับเว็บ (เสาร์-อาทิตย์ 10:00 ขณะที่เว็บระบุ 11:00 ทุกวัน) สำหรับ AI ที่กำลังไล่ว่า entity นี้คือใคร หน้าเดียวที่มีสองชื่อแบรนด์คือสัญญาณสับสนโดยตรง ควรติดต่อ Wongnai ให้แยก listing และแก้ชื่อกับที่อยู่ให้ถูก |
|
[WARNING] วิดีโอหน้าแรก 42.8 MB เปิดเล่นอัตโนมัติพร้อม preload='auto' ไฟล์ /mp4/about-preview.mp4 มีขนาด 44,863,739 ไบต์ หรือ 42.8 MB ถูกตั้ง autoplay ร่วมกับ preload='auto' บนหน้าแรกสำหรับจอตั้งแต่ 728px ขึ้นไป ฝั่งมือถือใช้ไฟล์ -sm ขนาด 5.4 MB คะแนน Lighthouse ยังออกมาดี (Desktop 99 · Mobile 69) เพราะ lab test ตัดจบก่อนวิดีโอโหลดครบ แต่ผู้ใช้จริงบนเน็ตมือถือแบบจ่ายตามปริมาณจะโดนดูดดาต้าหลายสิบเมกะไบต์โดยไม่ได้ขอ ควรเปลี่ยนเป็น preload='metadata' และตัดความยาวหรือบีบไฟล์ลง |
|
[WARNING] Alt text ต้องแก้ 79 จาก 203 รูป (coverage 61%) และแกลเลอรี่อีก 21 รูปใส่ alt ไม่ได้เลย นับ tag <img> ทั้งหมด 203 ตัวจาก 15 หน้าที่ crawl ได้ แยกเป็น alt='' บนรูปเนื้อหา 59 ตัว และ alt ที่กว้างเกินไปจนไม่มีความหมาย 20 ตัว (เช่น alt='Youtube' บน thumbnail วิดีโอทั้ง 6 ตัว และ alt='อาหาร' / 'รางวัล' บน thumbnail บทความ) ไฟล์ที่ต้องแก้จริงมี 28 ไฟล์ที่ไม่ซ้ำกัน ตัวที่หนักที่สุดคือโลโก้ /svg/aa-color.svg ที่ปรากฏ 45 ครั้งทั่วเว็บโดยตั้ง alt='' ทุกครั้ง แปลว่าสัญลักษณ์แบรนด์ที่ปรากฏถี่ที่สุดบนเว็บ AI มองไม่เห็นเลย นอกจากนี้ยังมีรูปแกลเลอรี่อีก 21 รูปที่เป็น CSS background จึงใส่ alt ไม่ได้ตั้งแต่ต้น |
|
[WARNING] บทความ 7 บทเนื้อหาบางมาก และไม่มีการอัปเดตมา 21 เดือน บทความทั้ง 7 บทมีความยาว 18 ถึง 156 คำเท่านั้น โดยบทที่สั้นที่สุดคือ 'การแสดง' มีแค่ 18 คำ และทุกบทเขียนคำโปรยซ้ำกับย่อหน้าแรกของเนื้อหาแบบคำต่อคำ ทุกบทลงวันที่ 21–28 พฤศจิกายน 2024 คือไม่มีบทความใหม่มา 21 เดือน ไม่มี author ไม่มี BlogPosting schema ไม่มี dateModified และไม่มี H2 หรือ H3 ในบทความเลยสักบท นอกจากนี้ slug ยังไม่ตรงกับเนื้อหา 2 บท คือ /blog/3/pet-friendly/ มีหัวข้อจริงว่า 'รางวัล' และ /blog/6/ingredients/ มีหัวข้อจริงว่า 'อาหาร' |
|
[WARNING] มี Instagram 2 บัญชี และไม่มีลิงก์ YouTube บนเว็บทั้งที่มีช่องอยู่จริง ค้นเจอ Instagram สองบัญชีคือ [บัญชีโซเชียลลูกค้า] (2,807 ผู้ติดตาม ตัวที่เว็บลิงก์ไป) และ [บัญชีโซเชียลลูกค้า] อีกบัญชี ควรรวมหรือประกาศให้ชัดว่าบัญชีไหนคือตัวจริง ส่วน YouTube แบรนด์มีช่อง [บัญชีโซเชียลลูกค้า] อยู่จริงและหน้า [หน้าวิดีโอ] ก็ฝังวิดีโอจากช่องนี้ 6 คลิป แต่แถบ social ที่ footer มีแค่ Instagram, Facebook และ LINE ไม่มี YouTube เลย ทำให้เสียสะพานเชื่อม entity ไปหนึ่งเส้นโดยไม่จำเป็น |
|
[WARNING] CSS ถูก cache-bust ทุกนาที และ header สั่ง no-store ทำให้เบราว์เซอร์แคชอะไรไม่ได้ ทุกหน้าเรียก /styles.css?nc=YYYYMMDDHHmm ซึ่งเปลี่ยนค่าทุกนาที ประกอบกับ response header ตั้ง Cache-Control: no-store, no-cache, must-revalidate (ค่า default ของ PHP session) ผลคือผู้ใช้ที่กลับมาเยี่ยมเว็บซ้ำต้องโหลดใหม่ทั้งหมดทุกครั้ง แม้ไฟล์จะไม่ได้เปลี่ยนเลยก็ตาม จุดดีคือเซิร์ฟเวอร์เร็วมาก TTFB วัดได้ 6 มิลลิวินาที ปัญหาจึงอยู่ที่นโยบายแคชกับขนาดไฟล์ ไม่ใช่ที่ตัวเซิร์ฟเวอร์ |
|
[WARNING] โครงสร้าง <html> ตั้ง translate='no' ปิดการแปลอัตโนมัติทั้งเว็บ ทุกหน้าประกาศ <html lang='th' class='notranslate' translate='no'> ซึ่งเป็นคำสั่งบอกเบราว์เซอร์และ Google Translate ว่าห้ามแปลหน้านี้ เมื่อรวมกับการที่เว็บภาษาอังกฤษไม่มีอยู่จริง เท่ากับปิดทางเข้าถึงเนื้อหาสำหรับผู้อ่านต่างชาติทั้งสองทางพร้อมกัน คือไม่มีฉบับแปลของตัวเอง และห้ามเครื่องมือแปลให้ด้วย ควรถอด translate='no' และ class='notranslate' ออก |
0.3 ตารางคะแนน
|
หมวดหมู่ |
Crawlability |
Content |
AI Citation |
Technical |
AI Overview |
|
น้ำหนัก |
15% |
20% |
25% |
10% |
30% |
|
คะแนนที่ได้ |
52 |
15 |
85 |
87 |
19 |
|
คะแนนรวม (Weighted): 46/100 — เกรด D — Poor |
0.4 จุดแข็ง
0.5 จุดอ่อนหลัก
1 ข้อมูล Website
|
URL |
https://[โดเมนลูกค้า] (http → https และ www → apex ทำ 301 ถูกต้อง) |
|
ชื่อธุรกิจ |
[ชื่อลูกค้า] — [ชื่อลูกค้า] [จังหวัด] |
|
ประเภทธุรกิจ |
ร้านอาหารไทยพื้นบ้า[ชื่อลูกค้ารายอื่น] (fine dining แบบสำรับ) พร้อมบริการล่องเรือและกิจกรรมวัฒนธรรม |
|
ที่อยู่ |
[WARNING] ไม่พบบนเว็บ — หน้าติดต่อมีแค่คำบอกทาง ([ถนนเลี่ยงเมือง][จังหวัด]-[จังหวัดใกล้เคียง] [ทางหลวง] ลงสะพาน[ชื่อลูกค้ารายอื่น][ชื่อสถานที่]) · แหล่งภายนอกระบุ [เลขที่] [อำเภอ/ตำบล] อ.[อำเภอ/ตำบล] จ.[จังหวัด] [รหัสไปรษณีย์] |
|
อีเมล |
[WARNING] ไม่พบบนเว็บ — แหล่งภายนอกระบุ [อีเมลลูกค้า] |
|
โทรศัพท์ |
[เบอร์โทรลูกค้า] (tel:[เบอร์โทรลูกค้า]) — อยู่บนหน้า /contact.php หน้าเดียว |
|
Line / Social บนเว็บ |
LINE: [LINE ลูกค้า] · Instagram: [บัญชีโซเชียลลูกค้า] · Facebook: [ชื่อลูกค้า] — [WARNING] ไม่มีลิงก์ YouTube ทั้งที่มีช่อง [บัญชีโซเชียลลูกค้า] อยู่จริง |
|
ภาษา |
[CRITICAL] ไทยอย่างเดียว — html lang='th' ทุกหน้า พร้อม translate='no' และ class='notranslate' · ลิงก์ /en/ ทั้ง 45 จุดตอบ 301 กลับหน้าไทย |
|
จำนวนหน้าทั้งหมด |
15 หน้าที่ crawl ได้จริง (8 หน้าหลัก + บทความ 7 บท) — [CRITICAL] ไม่มี sitemap.xml ให้ยืนยันจำนวนที่แท้จริง |
|
บริการหลัก |
สำรับอาหารไทยพื้นบ้าน · ล่องเรือย้อนรอยแม่น้ำ 3 สาย · ห่อข้าวต้มมัด · ลอยดอกบัว · บาร์ชนบท · การแสดงศิลปวัฒนธรรมไทยเสาร์-อาทิตย์ |
|
Blog |
[WARNING] 7 บทความ ทั้งหมดลงวันที่ 21–28 พฤศจิกายน 2024 — ไม่มีบทความใหม่มา 21 เดือน · ความยาว 18–156 คำต่อบท |
|
วันเวลาทำการ |
มื้ออาหาร 11.00–21.00 น. ทุกวัน · มื้อรองท้อง 13.00–16.00 น. (สำรองที่นั่งล่วงหน้าเท่านั้น) — [WARNING] Wongnai ระบุเสาร์-อาทิตย์เปิด 10.00 ไม่ตรงกับเว็บ |
|
ราคาสินค้า / บริการ |
[CRITICAL] ไม่พบบนเว็บเลย — แหล่งภายนอกระบุ สำรับป้าอี้ 3,300++ · สำรับป้าขันทอง 2,900++ · สำรับรองท้อง 2 ท่าน 2,400++ · a la carte จาก 320 · ล่องเรือ 3,500++ ต่อชั่วโมง |
|
Promotion |
ไม่พบแบนเนอร์โปรโมชั่นบนหน้าเว็บ — มีบทความหมวด 'โปรโมชั่น' 1 บทเรื่องล่องเรือ ลงวันที่ 21 พ.ย. 2024 |
|
หน้าสำคัญ |
หน้าแรก · เกี่ยวกับเรา · เมนู · บทความ · วิดีโอ · แกลเลอรี่ · รางวัล · ติดต่อเรา |
|
รางวัลที่ประกาศบนเว็บ |
[รางวัลออกแบบระดับสากล] สาขา Social Impact ([สื่อออกแบบต่างประเทศ], Italy) · [รางวัลร้านอาหารระดับสากล] ([นิตยสารต่างประเทศ], UK) · [รางวัลอาหารไทยระดับประเทศ] (ร้านเดียวในประเทศไทย) |
|
บุคคลสำคัญที่ปรากฏบนเว็บ |
ผศ. [สถาปนิก] (สถาปนิกผู้ก่อตั้ง [สตูดิโอออกแบบ]) · คุณแม่สรวีย์ (ผู้ก่อตั้ง) · '[ชื่อบุคคล]' ช่างปั้นดินเผาคนสุดท้ายแห่ง[ตำบล] |
2 Technical Data
|
CMS Platform |
PHP 7.4.33 ล้วน ไม่มี CMS และไม่มี plugin — โฮสต์บน Hostinger (platform: hostinger, panel: hpanel, server: hcdn) · ทุก fix ต้องแก้ที่ไฟล์โดยตรง |
|
HTTPS / SSL |
HTTPS (HTTP/2 + HTTP/3 alt-svc) พร้อมใช้งาน · Content-Security-Policy: upgrade-insecure-requests |
|
robots.txt |
[CRITICAL] HTTP 404 — เสิร์ฟหน้า 'This Page Does Not Exist' ของ Hostinger แทน |
|
Sitemap |
[CRITICAL] HTTP 404 ทั้ง /sitemap.xml, /sitemap_index.xml และ /sitemap.txt |
|
Bot Simulation |
[CRITICAL] GPTBot/1.2 → 429 · meta-externalagent/1.1 → 429 (บล็อกที่ CDN, content-length 0) · ClaudeBot 200 · PerplexityBot 200 · Googlebot 200 · Bingbot 200 · Applebot 200 · Amazonbot 200 · OAI-SearchBot 200 · ChatGPT-User 200 |
|
Canonical Tag |
[CRITICAL] ไม่พบบนหน้าใดเลยทั้ง 15 หน้า |
|
Structured Data (JSON-LD) |
[CRITICAL] พบ 1 block บนหน้าแรกหน้าเดียวเป็น VideoObject (name, description, thumbnailUrl, uploadDate, contentUrl ครบ ยิงจาก server-side จริง) — อีก 14 หน้าไม่มี JSON-LD เลย และไม่มี Organization / LocalBusiness / Restaurant / Menu / BreadcrumbList / WebSite / FAQPage / BlogPosting สักตัว |
|
ภาษา / hreflang |
[CRITICAL] html lang='th' ทุกหน้า พร้อม class='notranslate' translate='no' · ไม่มี hreflang · ลิงก์ /en/ ทั้ง 45 จุดตอบ 301 → http://www → https://www → apex (3 redirect วนกลับหน้าไทย) |
|
Title / Meta Description |
[WARNING] title = '[ชื่อลูกค้า]' เหมือนกันทั้ง 15 หน้า และ meta description เป็นข้อความเดียวกันทั้ง 15 หน้า |
|
Meta Robots (Homepage) |
ไม่พบ meta robots — ไม่มี noindex ถือว่า index ได้ตามค่าเริ่มต้น |
|
OG / Twitter Meta |
[WARNING] ไม่พบ og:title, og:description, og:image, og:url และไม่พบ twitter:card เลยสักหน้า — แชร์ลิงก์แล้วไม่ขึ้นรูปและคำบรรยาย |
|
Viewport Meta |
width=device-width, initial-scale=1, maximum-scale=5.0 |
|
Google Site Verification |
[WARNING] ไม่พบ meta google-site-verification — มีแต่ Google Tag Manager (GTM-W7SPKHD2) |
|
Heading Structure |
[WARNING] หน้าแรก h1–h6 = 0 · [หน้าวิดีโอ] มี H1 ซ้อน 2 ตัว · 8 จาก 15 หน้ามีแค่ H1 ตัวเดียวไม่มี H2/H3 ต่อ · มีเพียง /blog/ และ /contact.php ที่มี H2 จริง |
|
Alt Text Coverage |
[WARNING] รูปทั้งหมด 203 · ควรแก้ alt 79 · coverage 61% · ไฟล์ที่ไม่ซ้ำกันที่ต้องแก้ 28 ไฟล์ — เพิ่มเติมมีรูปแกลเลอรี่อีก 21 รูปที่เป็น CSS background จึงใส่ alt ไม่ได้เลย |
|
Gallery Rendering |
[WARNING] /gallery.php ไม่มี <img> สำหรับรูปแกลเลอรี่ — ใช้ <div class='gl-item'>Image39.jpg</div> แล้ว jQuery อ่านชื่อไฟล์ไปทำ background-image และลบข้อความทิ้ง · ไม่มี JS = เห็นชื่อไฟล์ 21 บรรทัด |
|
Page Weight / Media |
[WARNING] /mp4/about-preview.mp4 = 42.8 MB (44,863,739 ไบต์) ตั้ง autoplay + preload='auto' บนจอ ≥728px · ฉบับมือถือ -sm = 5.4 MB · poster.jpg 217 KB · hero_ab.jpg 197 KB ถูกโหลดทั้งที่อยู่ใน <video> และไม่เคยแสดงผล |
|
Caching Policy |
[WARNING] Cache-Control: no-store, no-cache, must-revalidate (ค่า default ของ PHP session) ร่วมกับ CSS cache-bust ?nc=YYYYMMDDHHmm ที่เปลี่ยนทุกนาที = เบราว์เซอร์แคชอะไรไม่ได้เลย |
|
Duplicate Navigation |
[WARNING] nav ซ้ำ 3 ชุดใน DOM ทุกหน้า (ftmenu + floatmenu + floatmenu-sm-open) และมีลิงก์ javascript:; สำหรับเปิดปิดเมนู 30 จุดทั่วเว็บ |
|
Server Performance |
TTFB 6 ms (x-hcdn-upstream-rt: 0.006) · หน้าเว็บตอบกลับใน 0.11–0.21 วินาที — เซิร์ฟเวอร์ไม่ใช่คอขวด |
|
Page Speed (Lighthouse 13.4.1) |
Desktop 99 (99/99/98) · Mobile 69 (97/69/68) — median จาก 3 รอบต่อฝั่ง วัดเองด้วย headless Chrome เพราะ PageSpeed API โควตารายวันหมด (HTTP 429) |
|
Core Web Vitals (median) |
Mobile: FCP 2.8s · LCP 7.4s · SI 4.1s · TBT 110ms · CLS 0 — Desktop: FCP 0.6s · LCP 0.6s · SI 1.3s · TBT 0ms · CLS 0.003 |
|
HTML Size / Ratio |
[WARNING] หน้าแรก 9,618 ตัวอักษร · visible text 2,232 · ratio 0.232 — ต่ำเพราะ inline <style> และ inline script ไม่ใช่เพราะเป็น SPA (ยืนยันแล้วว่าเนื้อหาอยู่ใน raw HTML ครบ) |
|
Image Format / Lazy Load |
[WARNING] รูปเกือบทั้งหมดเป็น .jpg/.png — พบ .webp เพียงไฟล์เดียว ([ไฟล์รูปลูกค้า]) และไม่พบ loading='lazy' บนรูปเลยสักตัว (มีเฉพาะบน iframe แผนที่) |
|
Subdomain |
[WARNING] web.[โดเมนลูกค้า] ตอบ HTTP 200 เป็นหน้า 'Default page' ของ Hostinger โดยไม่มี noindex — เป็นที่เก็บรูปของ CMS หลังบ้าน (/ul/ และ /mce/) |
3 AI Visibility Score Breakdown
คะแนนรวม: 46/100 — เกรด D — Poor | Profile C — AI-Native | Methodology v2.0
|
Dimension |
น้ำหนัก |
คะแนน |
Bar Graph |
ข้อค้นพบ |
|
Crawlability |
15% |
52 |
██████████░░░░░░░░░░ 52/100 |
ไม่มี robots.txt และ sitemap.xml (404 ทั้งคู่) ทำให้ Indexability ได้ 0 และ GPTBot ถูกบล็อกที่ CDN ทำให้ Bot Simulation ได้ 0 เช่นกัน |
|
Content Understandability |
20% |
15 |
███░░░░░░░░░░░░░░░░░ 15/100 |
มิติที่ตกหนักที่สุด — หน้าแรกไม่มี heading เลย, ไม่มี OG tag, ไม่มี FAQ และ title ซ้ำทั้ง 15 หน้า |
|
AI Citation Presence |
25% |
85 |
█████████████████░░░ 85/100 |
จุดแข็งที่สุดของงานนี้ — แบรนด์ถูกพูดถึงในสื่อออกแบบระดับสากลและ Google Business Profile มีรีวิวกว่า 1,800 รายการ |
|
Technical Performance |
10% |
87 |
█████████████████░░░ 87/100 |
เซิร์ฟเวอร์เร็วมาก TTFB 6 ms และ Lighthouse Desktop 99 · Mobile 69 (median จาก 3 รอบ) ไม่ใช่จุดที่ต้องแก้ก่อน |
|
AI Overview Presence |
30% |
19 |
████░░░░░░░░░░░░░░░░ 19/100 |
Off-Site แข็งมาก 90 และ Google-Extended เต็ม 100 แต่ถูกฉุดจนจมด้วย Schema 15 และ Snippet Readiness 10 |
4 Per-Dimension Deep Dive
A. Crawlability 52/100
|
Sub-metric |
คะแนนที่ได้ |
คะแนนเต็ม |
|
Robots.txt (404 = ไม่มี directive บล็อกใคร) |
100 |
100 |
|
HTML Accessibility (ratio 0.232) |
30 |
100 |
|
Internal Linking (ทุกหน้าเข้าถึงได้ ≤ 2 ชั้น ไม่มี orphan) |
100 |
100 |
|
Sitemap / Indexability (sitemap 404 = 0 · canonical ไม่มี = 0) |
0 |
100 |
|
Page Speed (Lighthouse blended 87) |
70 |
100 |
|
Bot Simulation (GPTBot/1.2 → HTTP 429) |
0 |
100 |
ข้อค้นพบ: คะแนนมิตินี้ถูกฉุดจากสองจุดที่เป็นศูนย์เต็มๆ จุดแรกคือ Sitemap/Indexability ได้ 0 เพราะไม่มี sitemap.xml (404) และไม่มี canonical tag บนหน้าใดเลยทั้ง 15 หน้า จุดที่สองคือ Bot Simulation ได้ 0 เพราะ GPTBot/1.2 ถูกตอบด้วย HTTP 429 ที่ระดับ CDN ของ Hostinger ยืนยันแล้วว่าไม่ใช่ rate limit ชั่วคราวเพราะทดสอบซ้ำ 3 รอบได้ผลเหมือนกัน และ bot ตัวอื่นที่มีเลขเวอร์ชันเหมือนกันอย่าง PerplexityBot/1.0 กับ Amazonbot/0.1 กลับผ่านได้ปกติ ข้อสังเกตที่ต้องแยกให้ชัดคือ HTML ratio 0.232 ไม่ได้เกิดจากเว็บเป็น SPA แต่เกิดจาก inline <style> และ inline script ในหน้า ตรวจ raw HTML แล้วยืนยันว่าเนื้อหาทุกย่อหน้าอยู่ใน HTML ครบ ไม่ต้องรัน JS ก็อ่านได้ ส่วน Internal Linking ได้เต็มเพราะ nav ปรากฏทุกหน้าและบทความทั้ง 7 บทเข้าถึงได้จาก /blog/ ในชั้นเดียว ไม่พบหน้ากำพร้า
B. Content Understandability 15/100
|
Sub-metric |
คะแนนที่ได้ |
คะแนนเต็ม |
|
FAQ Structure (ไม่มี FAQ จริงบนหน้า) |
0 |
20 |
|
Schema.org Structured Data (มี VideoObject บนหน้าแรก) |
20 |
20 |
|
Heading Hierarchy (หน้าแรก 0 heading · video.php H1 ซ้อน 2) |
0 |
20 |
|
Entity / Keyword Coverage |
15 |
15 |
|
Brand Name Consistency |
10 |
10 |
|
OG / Social Meta (ไม่มีเลยสักตัว) |
0 |
10 |
|
Author Byline + datePublished/dateModified |
0 |
5 |
|
หัก: ไม่มี H1 บนหน้าแรก |
-15 |
— |
|
หัก: Multiple H1 (video.php) |
-10 |
— |
|
หัก: ไม่มี og:image |
-5 |
— |
ข้อค้นพบ: นี่คือมิติที่ตกหนักที่สุดของทั้งรายงาน และเป็นมิติที่แก้ได้เร็วที่สุดด้วย เพราะทุกข้อที่เสียคะแนนเป็นงาน markup ไม่ใช่งานเขียนเนื้อหาใหม่ Entity coverage ได้เต็ม 15 ซึ่งเป็นเรื่องดีมาก เนื้อหาบนเว็บอุดมด้วยชื่อเฉพาะที่ตรวจสอบได้จริงทั้ง[อำเภอ/ตำบล] [ตำบล] บางซ้าย [อำเภอ/ตำบล] ช่างตีเหล็กอรัญญิก วัดทำเลไทย และวัดโปรดสัตว์ แต่เนื้อหาชั้นดีนี้ถูกใส่ในภาชนะที่ AI อ่านโครงสร้างไม่ออก หน้าแรกซึ่งมีเนื้อหาบรรยายร้านยาว 3 ย่อหน้ากลับไม่มี heading tag เลยสักตัว จึงโดนหัก 15 และหน้า [หน้าวิดีโอ] มี H1 สองตัวคือ 'วิดีโอ' กับ 'Video Clip' จึงโดนหักอีก 10 ส่วน OG tag ไม่มีเลยแม้แต่ตัวเดียวทั้งเว็บ ซึ่งกระทบตรงกับพฤติกรรมลูกค้าจริง เพราะร้านนี้ลูกค้าส่งลิงก์ต่อกันทาง LINE เป็นหลัก แต่แชร์ไปแล้วไม่ขึ้นรูปและไม่ขึ้นคำบรรยาย ด้าน schema ได้ 20 เต็มตามกติกาที่นับแบบมี-ไม่มี เพราะพบ JSON-LD จริงและยิงจาก server-side แต่ต้องบันทึกไว้ให้ชัดว่าครอบคลุมแค่ 1 ใน 15 หน้า และเป็น VideoObject ที่ไม่ใช่ประเภทหลักของธุรกิจ
C. AI Citation Presence 85/100
|
Sub-metric |
คะแนนที่ได้ |
คะแนนเต็ม |
|
Search Proxy Evidence (พบหลักฐานจำนวนมาก) |
55 |
55 |
|
Google Knowledge Panel / Google entity record |
20 |
20 |
|
Verified Social Profiles Linked (บนหน้าเว็บ) |
10 |
10 |
|
Wikipedia / Wikidata |
0 |
15 |
ข้อค้นพบ: มิตินี้คือจุดแข็งที่สุดของงานและเป็นข่าวดีที่ต้องบอกลูกค้าให้ชัด ตามนิยาม v2.0 มิตินี้ถามว่า AI รู้จักแบรนด์นี้ไหม คำตอบคือรู้จักดีมาก การค้นชื่อร้านทั้งภาษาไทยและอังกฤษเจอสื่อภายนอกเขียนถึงเองจำนวนมากโดยไม่ต้องซื้อ ทั้ง [สื่อออนไลน์ A], [สื่อออนไลน์ B], [สื่อออนไลน์ C], [สื่อออนไลน์ D], [สื่อออนไลน์ E], [สื่อออนไลน์ F] และ [สื่อออนไลน์ G] ซึ่งเป็นสื่อสายออกแบบและไลฟ์สไตล์ที่มี authority สูง ส่วน Google entity record ได้เต็ม 20 เพราะยืนยันได้ว่ามี Google Business Profile ที่สมบูรณ์และมีชีวิต โดย aggregator หลายเจ้าดึงข้อมูล rating 4.9 พร้อมจำนวนรีวิวระดับ 1,345–1,836 รายการ เวลาเปิดปิด และรูปภาพจากระเบียน Google ออกมาแสดงซ้ำได้ตรงกัน และได้ 10 เต็มจากการที่ footer ทุกหน้าลิงก์ social จริง 3 ช่องคือ Instagram, Facebook และ LINE ส่วนที่ยังไม่ได้คือ 15 คะแนนจาก Wikipedia หรือ Wikidata ซึ่งเป็นเป้าที่เอื้อมถึงได้จริงสำหรับร้านที่มีรางวัลระดับสากล 3 รายการและมีสถาปนิกชื่อดังเป็นผู้ก่อตั้ง ประเด็นที่ต้องเน้นคือคะแนน 85 นี้เกิดจากงานที่คนอื่นทำให้ ไม่ใช่จากเว็บของแบรนด์เอง ทุนก้อนนี้จะแปลงเป็นการถูก cite ได้จริงก็ต่อเมื่อเว็บมี schema และเนื้อหาให้ AI ยึด
D. Technical Performance 87/100
|
Sub-metric |
คะแนนที่ได้ |
คะแนนเต็ม |
|
Desktop Speed (Lighthouse median 3 รอบ) |
99 |
100 |
|
Mobile Friendliness (Lighthouse median 3 รอบ) |
69 |
100 |
ข้อค้นพบ: มิตินี้ไม่ใช่จุดที่ต้องแก้ก่อน และควรบอกลูกค้าตรงๆ เพื่อไม่ให้เสียงบไปผิดที่ เซิร์ฟเวอร์เร็วมาก TTFB วัดได้เพียง 6 มิลลิวินาที และทุกหน้าตอบกลับภายใน 0.11–0.21 วินาที เนื่องจาก PageSpeed Insights API ตอบ HTTP 429 เพราะโควตารายวันหมด จึงวัดเองด้วย Lighthouse 13.4.1 บน headless Chrome ฝั่งละ 3 รอบแล้วเอาค่ามัธยฐาน ได้ Desktop 99 (99/99/98) และ Mobile 69 (97/69/68) รอบ re-audit ต้องใช้วิธีเดียวกันนี้เพื่อให้เทียบกันได้ ค่าที่ต้องจับตาคือ LCP ฝั่งมือถือที่ 7.4 วินาที ซึ่งมาจากวิดีโอ hero ที่โหลดทับเส้นทางการแสดงผล ข้อควรระวังสำคัญคือคะแนน Desktop 99 นี้สวยเกินจริงสำหรับผู้ใช้จริง เพราะ lab test ตัดจบก่อนที่วิดีโอ 42.8 MB จะโหลดครบ (trace จับได้แค่ 3.6–5.0 MB) ผู้ใช้จริงบนเดสก์ท็อปที่เปิดหน้าค้างไว้จะถูกดูดดาต้าเต็มไฟล์ ตัวเลข Lighthouse จึงวัดความเร็วได้ถูก แต่วัดต้นทุนดาต้าของผู้ใช้ไม่ได้
E. AI Overview Presence 19/100
|
Sub-metric |
คะแนนที่ได้ |
คะแนนเต็ม |
|
Schema Eligibility (25%) |
15 |
100 |
|
E-E-A-T Signals (20%) |
25 |
100 |
|
Featured Snippet Readiness (20%) |
10 |
100 |
|
Google-Extended Access (15%) |
100 |
100 |
|
Off-Site Presence (20%) — v2.0 |
90 |
100 |
|
หัก: ไม่มี dateModified ที่ไหนเลยบนเว็บ |
-10 |
— |
|
หัก: Thin content (หน้าเนื้อหาหลัก < 300 คำ) |
-15 |
— |
ข้อค้นพบ: มิตินี้เล่าเรื่องที่ตรงกันข้ามกันสองด้านอย่างชัดเจน ด้านที่แข็งคือสิ่งที่อยู่นอกเว็บ Off-Site Presence ได้ 90 จาก 100 โดยได้เต็ม 10 ถึง 6 จาก 8 ช่อง และ Google-Extended ได้เต็ม 100 ด้านที่พังคือสิ่งที่อยู่บนเว็บเอง Schema Eligibility ได้เพียง 15 จาก 100 เพราะ Tier 1 ได้แค่ 5 คะแนนจาก 50 (ได้เฉพาะข้อ JSON-LD ยิงจาก server-side ส่วน Organization, sameAs, BreadcrumbList และ WebSite ไม่มีเลย) และ Tier 2 ได้ 10 จาก 40 จาก VideoObject ตัวเดียว ส่วน Snippet Readiness ได้เพียง 10 จาก 100 เพราะทั้งเว็บไม่มีย่อหน้าที่ตอบคำถามตรงๆ ไม่มี heading ที่เป็นรูปคำถาม ไม่มีรายการหรือตารางให้ดึงไปตอบ ที่ได้มา 10 คะแนนคือเวลาเปิดปิดกับเบอร์โทรที่เขียนเป็นข้อความอ่านได้ แต่ตัวเลขที่คนค้นหามากที่สุดสำหรับร้านอาหารคือราคา ซึ่งไม่มีอยู่บนเว็บเลยสักตัว สุดท้ายโดนหักอีก 2 ข้อ คือไม่มี dateModified ที่ไหนเลยบนเว็บ หัก 10 และหน้าเนื้อหาหลักอย่างหน้าเมนูกับบทความทั้ง 7 บทมีน้อยกว่า 300 คำ หัก 15 สรุปคือแบรนด์มีวัตถุดิบครบทุกอย่างที่ AI Overview ต้องการ แต่ยังไม่ได้จัดวางให้ AI หยิบไปใช้ได้
E-i Schema Coverage — Tier 1 Core / Tier 2 best-4-of-6 / Tier 3 Bonus
|
Tier |
Schema |
พบ / ไม่พบ |
pts |
|
Tier 1 — Core |
Organization หรือ LocalBusiness |
ไม่พบ |
0 / 20 |
|
Tier 1 — Core |
sameAs ≥ 2 profiles |
ไม่พบ (ไม่มี Organization ให้ผูก) |
0 / 10 |
|
Tier 1 — Core |
BreadcrumbList |
ไม่พบ |
0 / 10 |
|
Tier 1 — Core |
WebSite |
ไม่พบ |
0 / 5 |
|
Tier 1 — Core |
JSON-LD ผ่าน validator + server-side |
พบใน raw HTML (VideoObject) |
5 / 5 |
|
Tier 2 — นับ 4 ตัวที่ดีที่สุด |
VideoObject (name + uploadDate + contentUrl) |
พบ ครบทุก field |
10 / 10 |
|
Tier 2 — นับ 4 ตัวที่ดีที่สุด |
Article / BlogPosting (author + datePublished + dateModified) |
ไม่พบ (มีบทความ 7 บทแต่ไม่มี markup) |
0 / 10 |
|
Tier 2 — นับ 4 ตัวที่ดีที่สุด |
FAQPage (≥ 3 Question) |
ไม่พบ |
0 / 10 |
|
Tier 2 — นับ 4 ตัวที่ดีที่สุด |
Review / AggregateRating |
ไม่พบ (ทั้งที่มีรีวิว Google กว่า 1,800) |
0 / 10 |
|
Tier 2 — ไม่ถูกนับ |
Product + Offer |
ไม่พบ |
— |
|
Tier 2 — ไม่ถูกนับ |
Service (serviceType + provider + areaServed) |
ไม่พบ |
— |
|
Tier 3 — Bonus |
Wikidata / Wikipedia ใน sameAs |
ไม่พบ |
0 / 5 |
|
Tier 3 — Bonus |
about / mentions ผูก Wikidata entity |
ไม่พบ |
0 / 3 |
|
Tier 3 — Bonus |
VideoObject มี transcript |
ไม่พบ |
0 / 2 |
Tier 2 เลือกนับ 4 ตัวที่ได้คะแนนสูงสุดตามกติกา best-4-of-6 รอบนี้ VideoObject เป็นตัวเดียวที่ได้คะแนน จึงถูกนับแน่นอน ส่วนอีก 3 ช่องที่นับได้ 0 เท่ากันหมดเลือก Article/BlogPosting, FAQPage และ Review/AggregateRating เป็นตัวแทน ไม่มี deduction ใดถูกใช้ เพราะ VideoObject ที่มีอยู่บรรยายวิดีโอที่ปรากฏบนหน้าแรกจริง ไม่ได้ระบุข้อมูลเกินจากที่ผู้ใช้เห็น และตรวจแล้วยิงจาก server-side ไม่ใช่ client-side JS · ข้อสังเกตที่ต้องบันทึกไว้สำหรับ re-audit คือ JSON-LD ปรากฏบนหน้าแรกหน้าเดียวจาก 15 หน้า
รวม Schema Eligibility: Tier 1 = 5 · Tier 2 = 10 · Tier 3 = 0 · deduction = 0 → 15 / 100
E-ii Off-Site Presence — 8 ช่องตายตัว (นับ best 5 of 8)
|
Channel |
คะแนน |
URL หลักฐาน |
หมายเหตุ |
|
1. Google Business Profile ★ |
10 |
[ไดเรกทอรีภายนอก].com/[ชื่อลูกค้า] |
active เต็มที่ — rating 4.9 จากรีวิวระดับ 1,345–1,836 รายการแล้วแต่ aggregator · มีเวลาเปิดปิด 11:00–21:00 และรูปภาพครบ · เบอร์ +66 61 195 9514 ตรงกับเว็บ |
|
2. YouTube (ช่องของแบรนด์) ★ |
10 |
youtube.com/[บัญชีโซเชียลลูกค้า] |
มีช่องอย่างเป็นทางการและมีเนื้อหาเกิน 3 ชิ้น (เว็บฝัง 6 คลิป) — แต่คลิปใหม่สุดที่ฝังบนเว็บลงวันที่ 29/02/2024 และเว็บไม่มีลิงก์ไปช่องนี้เลย |
|
3. Community forum |
0 |
— |
ค้น Pantip 2 รอบทั้งชื่อไทยและอังกฤษ รวมถึง Reddit และ Quora แล้วไม่พบกระทู้ที่พูดถึงแบรนด์นี้โดยตรงเลย |
|
4. Social page ★ |
10 |
facebook.com/[ชื่อลูกค้า] · instagram.com/[ชื่อลูกค้า] |
active จริง — Facebook 15,644 ถูกใจ · Instagram 2,807 ผู้ติดตาม โพสต์ต่อเนื่อง · มี TikTok discover page · [ข้อสังเกต] พบ Instagram บัญชีที่สอง [บัญชีโซเชียลลูกค้า] ควรรวมหรือประกาศตัวจริง |
|
5. LinkedIn |
0 |
— |
ค้นแล้วไม่พบ company page ของแบรนด์นี้ |
|
6. Marketplace / directory ★ |
10 |
[ลิงก์รีวิวภายนอก] · [ลิงก์รีวิวภายนอก] |
listing เยอะมาก — Wongnai, TripAdvisor (5.0 อันดับ 2 จาก 8 ร้านใน [อำเภอ]), [ไดเรกทอรีภายนอก], AutoReserve, Wanderlog, Evendo, [สื่อภายนอก] · [WARNING] ชื่อบน Wongnai ปนกับอีกแบรนด์ว่า '[ชื่อลูกค้ารายอื่น] [จังหวัด] [ชื่อลูกค้า]' |
|
7. Editorial & press ★ |
10 |
room.[ลิงก์สื่อภายนอก] · [ลิงก์สื่อภายนอก] |
แข็งมาก — สื่อสายออกแบบและไลฟ์สไตล์เขียนถึงเองอย่างน้อย 7 แหล่ง ทั้ง room.baanlaesuan, banidea, archello, 5000smag, manoottangwai, tripgether และ toptotravel |
|
8. UGC / รีวิวโดยบุคคลที่สาม ★ |
10 |
[ลิงก์รีวิวภายนอก] · [ลิงก์รีวิว Lemon8] |
มีเนื้อหาจากผู้ใช้จริงหลายแพลตฟอร์ม — รีวิว Wongnai 3 ชิ้น, Lemon8 3 ชิ้น และวิดีโอ YouTube จากช่องบุคคลที่สามอีกอย่างน้อย 4 คลิป |
★ = ช่องที่ถูกนับใน best 5 of 8
NAP: NAP ไม่สอดคล้องกันชัดเจน และต้นเหตุคือเว็บของแบรนด์เองไม่เคยประกาศที่อยู่ไว้ให้ยึด ทำให้ directory แต่ละเจ้ากรอกกันเอง — TripAdvisor ระบุ '[ที่อยู่ลูกค้า], [อำเภอ] [รหัสไปรษณีย์]' · Wongnai ระบุ '1 ตำบล [อำเภอ/ตำบล] อำเภอ[อำเภอ/ตำบล]' (บ้านเลขที่ตัดหาย) · [ไดเรกทอรีภายนอก] ระบุ '[บ้านเลขที่], [จังหวัด]' · [ลิงก์ภายนอก] ระบุอำเภอ '[อำเภอ]' · [ไดเรกทอรีภายนอก] ระบุ '[ตำบล] Subdistrict' ซึ่งเป็นคนละอำเภอกันทั้งหมด นอกจากนี้เวลาเปิดยังไม่ตรงกัน (Wongnai ระบุ เสาร์-อาทิตย์ 10:00 ขณะที่เว็บระบุ 11:00 ทุกวัน) และอีเมล [อีเมลลูกค้า] ปรากฏบนแหล่งภายนอกแต่ไม่มีบนเว็บ
เรียงคะแนน: 10, 10, 10, 10, 10, 10, 0, 0 → best 5 of 8 = 10+10+10+10+10 = 50 → ×2 = 100 → NAP ไม่ตรงกัน หัก 10 → 90 / 100
5 Action Plan แผนการแก้ไข
5.1 Critical Issues (ปัญหาวิกฤต — ต้องแก้ก่อน)
|
[1] ใส่เมนูจริงพร้อมราคาลงหน้า /menu.php แล้วผูก Menu + Restaurant schema +18 pts นี่คืองานที่ให้ผลตอบแทนสูงที่สุดในรายงานฉบับนี้ เพราะแก้ทีเดียวได้คะแนนจาก 3 มิติพร้อมกัน คือ Snippet Readiness (ตัวเลขราคาเป็นข้อความ), Schema Eligibility (Tier 2 Menu/Offer) และ Content Understandability (โครงสร้าง heading) ตอนนี้หน้า /menu.php ทั้งหน้ามีแค่ h1 'เมนู' ข้อความบรรยาย 3 บรรทัด และปุ่ม LINE หนึ่งปุ่ม ให้เพิ่มรายการอาหารจริงเป็นข้อความ HTML โดยจัด H2 ต่อหนึ่งหมวดสำรับ และใต้แต่ละหมวดใส่ชื่อจาน คำอธิบายสั้น และราคาเป็นตัวเลขอ่านได้ ห้ามฝังในรูปภาพเด็ดขาด ข้อมูลที่ยืนยันได้จากแหล่งภายนอกแล้วมี สำรับป้าอี้ 3,300++ บาท สำรับป้าขันทอง 2,900++ บาท สำรับรองท้อง 2 ท่าน 2,400++ บาท a la carte เริ่ม 320 บาท และล่องเรือ 3,500++ บาทต่อชั่วโมงสูงสุด 6 ท่าน แต่ต้องขอไฟล์เมนูฉบับจริงจากลูกค้ามายืนยันก่อนพิมพ์ จากนั้นครอบด้วย Restaurant schema ที่มี hasMenu, servesCuisine, priceRange และ acceptsReservations ย้ำเหตุผลเชิงธุรกิจให้ลูกค้าเข้าใจ วันนี้เมื่อมีคนถาม AI ว่าร้านนี้ราคาเท่าไร AI ไปหยิบคำตอบจาก Wongnai ไม่ใช่จากเว็บร้าน แบรนด์จึงเสียสิทธิ์ควบคุมข้อมูลราคาของตัวเอง |
|
[2] ตัดสินใจเรื่องเว็บภาษาอังกฤษ แล้วทำให้ลิงก์ TH/EN ตรงกับความจริง +12 pts ตอนนี้ทุกหน้ามีปุ่ม TH/EN ชี้ไป /en/ รวม 45 ลิงก์ แต่ทุก URL ใต้ /en/ ตอบ 301 ไปที่ http://www.[โดเมนลูกค้า]/ (เป็น http ไม่ใช่ https) แล้ววิ่งต่ออีก 2 ครั้งจนกลับมาหน้าไทย รวม 3 redirect ต่อคลิก มีสองทางเลือกและต้องเลือกทางใดทางหนึ่ง ทางที่ถูกต้องคือสร้างหน้าภาษาอังกฤษจริงทั้ง 8 หน้าใต้ /en/ พร้อมตั้ง html lang='en' และใส่ hreflang จับคู่ th-TH กับ en ทุกหน้า ซึ่งเป็นการลงทุนที่คุ้มที่สุดสำหรับร้านในเมืองมรดกโลกที่ตลาดหลักคือนักท่องเที่ยวต่างชาติ ทางที่เร็วกว่าแต่ยอมรับข้อจำกัดคือถอดปุ่ม TH/EN ออกจากทุกหน้าไปก่อน เพื่อไม่ให้สัญญาสิ่งที่ไม่มี ระหว่างนี้ให้ถอด translate='no' และ class='notranslate' ออกจาก <html> ทันทีไม่ว่าจะเลือกทางไหน เพราะสองค่านี้สั่งห้ามแม้แต่ Google Translate ไม่ให้แปลหน้าให้ผู้อ่านต่างชาติ |
|
[3] ปลดบล็อก GPTBot และ meta-externalagent ที่ Hostinger +15 pts (Crawlability) ทดสอบยืนยันแล้ว 3 รอบว่า User-Agent ที่มีเลขเวอร์ชันจริงอย่าง GPTBot/1.2 และ meta-externalagent/1.1 ถูกตอบด้วย HTTP 429 พร้อม content-length เป็น 0 และ header ระบุ server: hcdn ซึ่งเป็น edge ของ Hostinger ไม่ใช่ PHP ขณะที่ ClaudeBot, PerplexityBot, Googlebot, Bingbot, Applebot, Amazonbot, OAI-SearchBot และ ChatGPT-User ผ่านหมด แปลว่านี่คือกฎบล็อกที่จับ pattern ชื่อ bot ไม่ใช่ rate limit วิธีแก้คือเข้า hPanel ของ Hostinger ไปที่หมวด Security หรือ Website แล้วปิดสวิตช์บล็อก AI crawler (ชื่อเมนูประมาณ Block AI bots หรือ AI crawler protection) ถ้าหาไม่เจอให้เปิด ticket แจ้ง support ว่าต้องการอนุญาต GPTBot และ meta-externalagent จากนั้น verify ด้วย curl -A 'GPTBot/1.2' -o /dev/null -w '%{http_code}' https://[โดเมนลูกค้า]/ ต้องได้ 200 ไม่ใช่ 429 ผลกระทบที่ต้องอธิบายให้ลูกค้าเข้าใจคือ OAI-SearchBot กับ ChatGPT-User ที่ผ่านได้ทำให้ ChatGPT เปิดดูเว็บได้ตอนผู้ใช้ถาม แต่ GPTBot คือตัวที่เก็บเนื้อหาเข้าคลังความรู้ถาวร เมื่อถูกบล็อก ChatGPT จึงไม่มีวันจำร้านนี้ได้เอง |
|
[4] สร้าง robots.txt และ sitemap.xml +9 pts ทั้งสองไฟล์ตอบ 404 ตอนนี้ ให้สร้าง /robots.txt ที่อนุญาต bot ทุกตัวและประกาศบรรทัด Sitemap: https://[โดเมนลูกค้า]/sitemap.xml จากนั้นสร้าง sitemap.xml ที่ครอบคลุมทั้ง 15 URL คือ 8 หน้าหลักและบทความ 7 บท พร้อมใส่ lastmod ที่เป็นวันที่จริง เนื่องจากเว็บเป็น PHP ล้วนไม่มี CMS แนะนำให้เขียนเป็นไฟล์ static ไปก่อนแล้วอัปเดตมือเมื่อเพิ่มหน้า หรือทำเป็น sitemap.php ที่วนอ่านจากฐานข้อมูลบทความก็ได้ ข้อควรระวังคือ URL บทความมีอักขระไทยอยู่ใน path เช่น /blog/2/ภาชนะ/ ต้อง percent-encode ให้ถูกต้องใน sitemap ไม่งั้น XML จะไม่ผ่าน validator เสร็จแล้ว submit ที่ Google Search Console |
|
[5] ใส่ Restaurant + Organization schema พร้อม sameAs และ NAP ที่ถูกต้อง +11 pts ตอนนี้ Tier 1 ของ Schema Eligibility ได้เพียง 5 จาก 50 เพราะไม่มี Organization หรือ LocalBusiness เลย ให้ใส่ Restaurant schema (ซึ่งเป็น subtype ของ LocalBusiness และครอบคลุม Organization) ในทุกหน้า โดยระบุ name ทั้งชื่อไทยและอังกฤษ, address แบบ PostalAddress เต็มรูปแบบ, telephone [เบอร์โทรลูกค้า], email, geo ที่พิกัด [พิกัด], openingHoursSpecification 11:00–21:00 ทุกวัน, priceRange, servesCuisine, award ทั้ง 3 รายการ และ sameAs ที่ชี้ไป Facebook, Instagram, YouTube channel และ LINE OA พร้อมกันนี้ให้เพิ่ม BreadcrumbList และ WebSite schema ด้วย เพราะสองตัวนี้รวมกันได้อีก 15 คะแนนใน Tier 1 และใช้เวลาทำไม่ถึงชั่วโมง |
|
[6] ประกาศที่อยู่และอีเมลบนหน้าติดต่อ แล้วไล่แก้ NAP ให้ตรงกันทุกช่อง +10 pts หน้า /contact.php มีเบอร์โทรและคำบอกทาง แต่ไม่มีที่อยู่แบบไปรษณีย์เป็นข้อความและไม่มีอีเมล ผลที่วัดได้จริงคือ directory ภายนอกกรอกที่อยู่กันคนละแบบจนอำเภอไม่ตรงกัน มีทั้ง [อำเภอ], [อำเภอ], [ตำบล] และ [ตำบล] ให้เพิ่มที่อยู่ฉบับทางการเป็นข้อความบนหน้าติดต่อและใน footer ทุกหน้า พร้อมอีเมล [อีเมลลูกค้า] ที่ปรากฏบนแหล่งภายนอกอยู่แล้ว จากนั้นไล่แก้ให้ตรงกันทุกช่อง โดยเริ่มจากสองรายการที่เร่งด่วนที่สุด คือแจ้ง Wongnai แก้ชื่อ listing ที่ตอนนี้เป็น '[ชื่อลูกค้ารายอื่น] [จังหวัด] [ชื่อลูกค้า]' ซึ่งปนกับอีกแบรนด์ และแก้เวลาเปิดเสาร์-อาทิตย์จาก 10:00 เป็น 11:00 ให้ตรงกับเว็บ การแก้ NAP ให้ตรงกันจะปลดค่าปรับ 10 คะแนนใน Off-Site Presence คืนมาทันที |
5.2 Quick Wins (แก้ได้เร็ว 1–2 วัน)
|
[1] เขียน title และ meta description ใหม่ให้ไม่ซ้ำกันทั้ง 15 หน้า +8 pts ตอนนี้ทั้ง 15 หน้าใช้ <title>[ชื่อลูกค้า]</title> เหมือนกันทุกตัวอักษร และใช้ meta description ก้อนเดียวกัน ให้เขียนใหม่ทีละหน้าโดยใส่ทั้งชื่อหน้า ชื่อแบรนด์ และคำระบุที่ตั้ง เช่นหน้าเมนูใช้ 'เมนูและราคาสำรับ | [ชื่อลูกค้า] ร้านอาหารไทยพื้นบ้านริมน้ำ [จังหวัด]' หน้ารางวัลใช้ 'รางวัล [นิตยสารต่างประเทศ] และ [รางวัลอาหารไทยระดับประเทศ] 2024 | [ชื่อลูกค้า]' ส่วน meta description เขียนความยาว 150–160 ตัวอักษรให้ตรงกับเนื้อหาของหน้านั้นจริง งานนี้เป็น quick win ที่ชัดที่สุด ใช้เวลาไม่เกิน 1 ชั่วโมงสำหรับ 15 หน้า |
|
[2] ใส่ OG tag และ twitter:card ทุกหน้า +7 pts ทั้งเว็บไม่มี og:title, og:description, og:image, og:url และไม่มี twitter:card เลยสักตัว ผลตรงคือแชร์ลิงก์ร้านลง LINE, Facebook หรือ Messenger แล้วไม่ขึ้นรูปและไม่ขึ้นคำบรรยาย ซึ่งกระทบพฤติกรรมลูกค้าจริงเพราะร้านนี้ลูกค้าส่งลิงก์ต่อกันทาง LINE เป็นหลัก ให้ใส่ครบ 4 ตัวทุกหน้า พร้อม og:type=restaurant บนหน้าแรก og:locale=th_TH และ twitter:card=summary_large_image ส่วน og:image ให้เตรียมรูปขนาด 1200x630 ที่เห็นตัวอาคารบล็อกแก้วซึ่งเป็นเอกลักษณ์ที่จำได้ทันทีของร้าน |
|
[3] ใส่ H1 ให้หน้าแรก และแก้ H1 ซ้อนบนหน้าวิดีโอ +7 pts หน้าแรกไม่มี heading tag เลยแม้แต่ตัวเดียวทั้งที่มีเนื้อหาบรรยายร้าน 3 ย่อหน้า ให้ใส่ H1 เป็น '[ชื่อลูกค้า] — ร้านอาหารไทยพื้นบ้า[ชื่อลูกค้ารายอื่น] [จังหวัด]' และแปลง <div class='hi_p2'><b>...</b></div> ที่ทำหน้าที่หัวข้ออยู่แล้วให้เป็น H2 ส่วนหน้า [หน้าวิดีโอ] ตอนนี้มี H1 สองตัวคือ 'วิดีโอ' และ 'Video Clip' ให้เก็บ 'วิดีโอ' ไว้เป็น H1 แล้วเปลี่ยน 'Video Clip' เป็น H2 การแก้สองจุดนี้ปลดค่าปรับรวม 25 คะแนนใน Content Understandability |
|
[4] เพิ่ม alt text ให้รูปที่ขาดหรือกว้างเกินไป 79 จุด (28 ไฟล์ที่ไม่ซ้ำกัน) +6 pts ตัวที่ต้องแก้ก่อนคือโลโก้ /svg/aa-color.svg ที่ปรากฏ 45 ครั้งทั่วเว็บโดยตั้ง alt='' ทุกครั้ง ให้ใส่เป็น '[ชื่อลูกค้า] [ชื่อลูกค้า] [จังหวัด]' ถัดมาคือรูปรางวัลซึ่งเป็น alt ที่มีมูลค่าสูงสุดของทั้งเว็บเพราะผูกกับ entity ที่มี authority อยู่แล้ว ได้แก่ imgs/award-3-800.jpg, imgs/[ไฟล์รูปลูกค้า] และ imgs/[ไฟล์รูปลูกค้า] จากนั้นเป็นรูป hero และรูปเนื้อหาที่ตั้ง alt='' อยู่ 10 ไฟล์ คือ hero_rv3.jpg, hero_rv3_sm.jpg, hero_ab.jpg, hi_pic_rv4.jpg, gallery_cover_4-3_light.jpg และ ab-01.jpg ถึง ab-07.jpg สุดท้ายคือ thumbnail วิดีโอ 6 ตัวที่ตั้ง alt='Youtube' เหมือนกันหมด ให้เปลี่ยนเป็นชื่อเรื่องของคลิปนั้นจริง และ thumbnail บทความ 7 ตัวที่ตั้ง alt เป็นคำเดียวอย่าง 'อาหาร' หรือ 'รางวัล' ให้เขียนเป็นประโยคที่มีชื่อแบรนด์และบริบท |
|
[5] แก้หน้าแกลเลอรี่ให้ใช้ <img> จริงแทน CSS background +6 pts ตอนนี้ /gallery.php ใช้ <div class='gl-item'>Image39.jpg</div> แล้วให้ jQuery อ่านชื่อไฟล์ไปตั้งเป็น background-image แล้วลบข้อความทิ้ง ผลคือรูป 21 รูปใส่ alt ไม่ได้ Google Images เก็บไม่ได้ และถ้า JS ไม่ทำงานผู้ใช้จะเห็นชื่อไฟล์ 21 บรรทัดเป็นเนื้อหาหน้า ให้เปลี่ยนเป็น <img src='gallery/Image39.jpg' alt='...' loading='lazy' width='...' height='...'> ตรงๆ ใน HTML แล้วใช้ CSS object-fit: cover จัดกรอบแทน ซึ่งได้ผลหน้าตาเหมือนเดิมทุกประการแต่ได้รูปที่ index ได้กลับมา 21 รูป |
|
[6] เพิ่ม FAQ จริงบนหน้าเว็บพร้อม FAQPage schema +6 pts ทั้งเว็บไม่มี FAQ อยู่จริงเลยสักชุด และไม่มี heading ที่เป็นรูปคำถามสักตัว ให้เพิ่มอย่างน้อย 6 คำถามที่คนถามจริงบนหน้า /contact.php หรือหน้าใหม่ แล้วตอบด้วยย่อหน้าความยาว 40–60 คำต่อข้อ โดยใช้คำถามที่มาจากข้อมูลที่ค้นเจอจริงระหว่าง audit เช่น '[ชื่อลูกค้า] ราคาเท่าไร' · 'ต้องจองล่วงหน้าไหม' · 'ล่องเรือราคาเท่าไร จองยังไง' · 'พาสัตว์เลี้ยงเข้าได้ไหม' · 'มีการแสดงวันไหนบ้าง' · 'เดินทางจากกรุงเทพยังไง' เสร็จแล้วครอบด้วย FAQPage schema ที่ข้อความตรงกับที่แสดงบนหน้าทุกตัวอักษร ห้ามใส่ schema ที่ไม่ตรงกับหน้าเด็ดขาดเพราะ Google นับเป็นสัญญาณ spam |
|
[7] ใส่ BlogPosting schema, author และ dateModified ให้บทความทั้ง 7 บท +5 pts บทความทั้ง 7 บทไม่มี author ไม่มี BlogPosting schema และไม่มี dateModified ที่ไหนเลย ซึ่งเป็นเหตุให้โดนหัก 10 คะแนนระดับมิติใน 5E ให้ใส่ BlogPosting schema ที่มี headline, author เป็น Person หรือ Organization, datePublished ตามวันที่แสดงอยู่แล้ว, dateModified และ image พร้อมกันนี้ให้แก้ slug 2 บทที่ไม่ตรงกับเนื้อหา คือ /blog/3/pet-friendly/ ที่หัวข้อจริงคือ 'รางวัล' และ /blog/6/ingredients/ ที่หัวข้อจริงคือ 'อาหาร' โดยตั้ง 301 จาก URL เดิมไป URL ใหม่ และเพิ่ม H2 ในเนื้อหาแต่ละบทอย่างน้อย 2 หัวข้อ |
|
[8] แก้ preload ของวิดีโอหน้าแรก และลบรูป fallback ที่โหลดฟรี +4 pts ไฟล์ /mp4/about-preview.mp4 ขนาด 42.8 MB ถูกตั้ง autoplay ร่วมกับ preload='auto' ให้เปลี่ยนเป็น preload='metadata' ซึ่งยังเล่นอัตโนมัติได้เหมือนเดิมแต่ไม่ดูดไฟล์ทั้งก้อนมาล่วงหน้า และควรบีบไฟล์ลงให้เหลือระดับ 8–10 MB ด้วย ประเด็นที่สองคือ <div class='hero_sim'><img src='hero_ab.jpg' alt=''></div> ที่อยู่ภายใน <video> ตั้งใจให้เป็น fallback แต่เบราว์เซอร์ที่เล่นวิดีโอได้ยังโหลดรูปนี้อยู่ดี วัดได้ 47 KB บนมือถือที่ไม่เคยแสดงผลเลย ให้ย้ายออกหรือลบทิ้ง ประเด็นที่สามคือ JS ท้ายหน้า append <source> ซ้ำเข้าไปในแท็ก <video> อีกรอบทั้งที่ HTML มี source ครบแล้ว ให้ลบ block นั้นออก |
|
[9] แก้นโยบายแคชและ cache-bust ที่เปลี่ยนทุกนาที +3 pts ทุกหน้าเรียก /styles.css?nc=YYYYMMDDHHmm ซึ่งเปลี่ยนค่าทุกนาที ทำให้เบราว์เซอร์ต้องโหลด CSS ใหม่ทุกครั้งแม้ไฟล์ไม่เปลี่ยน ให้เปลี่ยนไปใช้เลข version ที่แก้มือเมื่อแก้ไฟล์จริง เช่น ?v=20260816 หรือใช้ filemtime() ของไฟล์ CSS แทน ประเด็นคู่กันคือ header Cache-Control: no-store, no-cache, must-revalidate ที่มาจากค่า default ของ PHP session ให้เรียก session_cache_limiter('public') ก่อน session_start() หรือส่ง header เองสำหรับไฟล์ static เพื่อให้เบราว์เซอร์แคชได้จริง |
|
[10] เพิ่มลิงก์ YouTube ใน footer และรวม Instagram สองบัญชี +3 pts แบรนด์มีช่อง YouTube [บัญชีโซเชียลลูกค้า] อยู่จริงและหน้า [หน้าวิดีโอ] ก็ฝังวิดีโอจากช่องนี้ถึง 6 คลิป แต่แถบ social ที่ footer มีแค่ Instagram, Facebook และ LINE ให้เพิ่มไอคอน YouTube ที่ลิงก์ไปช่องจริง แล้วใส่ URL ช่องนี้ใน sameAs ของ Restaurant schema ด้วย ประเด็นที่สองคือพบ Instagram สองบัญชีคือ [บัญชีโซเชียลลูกค้า] (2,807 ผู้ติดตาม ตัวที่เว็บลิงก์ไปอยู่) และ [บัญชีโซเชียลลูกค้า] ควรตัดสินใจว่าบัญชีไหนคือตัวจริง แล้วรวมหรือประกาศให้ชัด เพราะบัญชีซ้ำทำให้ AI ผูก entity ได้ไม่แน่นอน |
|
[11] ใส่ noindex ให้ subdomain web.[โดเมนลูกค้า] +2 pts subdomain นี้ตอบ HTTP 200 เป็นหน้า 'Default page' ของ Hostinger โดยไม่มี noindex และเป็นที่เก็บรูปของ CMS หลังบ้านทั้งหมด (path /ul/ และ /mce/) ให้ใส่ robots.txt ที่ subdomain นี้สั่ง Disallow: / สำหรับหน้าเว็บ แต่เปิดให้ crawler เข้าถึงไฟล์รูปได้ หรือใส่ header X-Robots-Tag: noindex เฉพาะหน้า HTML เพื่อไม่ให้หน้า placeholder ถูก index แล้วไปแย่งสัญญาณกับโดเมนหลัก |
5.3 Implementation Roadmap
|
Phase 1 — เร่งด่วน | สัปดาห์ 1–2 |
Phase 2 — ปานกลาง | เดือนที่ 1 |
Phase 3 — ระยะยาว | เดือนที่ 2–3 |
|
• ปลดบล็อก GPTBot และ meta-externalagent ใน hPanel ของ Hostinger • verify ด้วย curl -A 'GPTBot/1.2' ว่าได้ HTTP 200 ไม่ใช่ 429 • สร้าง robots.txt พร้อมประกาศบรรทัด Sitemap • สร้าง sitemap.xml ครบ 15 URL (percent-encode path ภาษาไทย) • ตัดสินใจเรื่องเว็บ EN — สร้างจริง หรือถอดปุ่ม TH/EN ออกก่อน • ถอด translate='no' และ class='notranslate' ออกจาก <html> • เขียน title และ meta description ใหม่ให้ไม่ซ้ำทั้ง 15 หน้า • ใส่ canonical tag ทุกหน้า |
• ใส่เมนูจริงพร้อมราคาลงหน้า /menu.php (ขอไฟล์เมนูจากลูกค้าก่อน) • ใส่ Restaurant + Organization schema พร้อม sameAs และ NAP • เพิ่ม BreadcrumbList และ WebSite schema • ใส่ OG tag และ twitter:card ทุกหน้า • ใส่ H1 หน้าแรก และแก้ H1 ซ้อนบน [หน้าวิดีโอ] • ประกาศที่อยู่และอีเมลบนหน้าติดต่อและ footer • เพิ่ม alt text 79 จุด (28 ไฟล์) • แก้แกลเลอรี่ให้ใช้ <img> จริงแทน CSS background • แจ้ง Wongnai แก้ชื่อ listing และเวลาเปิดปิด |
• เพิ่ม FAQ จริง 6 ข้อพร้อม FAQPage schema • ใส่ BlogPosting schema + author + dateModified ให้บทความ 7 บท • แก้ slug บทความ 2 บทที่ไม่ตรงเนื้อหา พร้อมตั้ง 301 • เขียนบทความใหม่ — ไม่มีบทความใหม่มา 21 เดือนแล้ว • แก้ preload วิดีโอและบีบไฟล์ 42.8 MB ลง • แก้นโยบายแคชและ cache-bust ที่เปลี่ยนทุกนาที • เพิ่มลิงก์ YouTube ใน footer และรวม Instagram สองบัญชี • ไล่แก้ NAP ให้ตรงกันครบทุก directory • ผลักดัน Wikipedia หรือ Wikidata entry (เอื้อมถึงได้จากรางวัลระดับสากล 3 รายการ) • เก็บรีวิวเพื่อทำ Review / AggregateRating schema |