[{"data":1,"prerenderedAt":790},["ShallowReactive",2],{"blog-entry-numbers":3,"blogs-2026-11-09-ai-search-visibility":104,"next-blog-2026-11-09-ai-search-visibility":756,"prev-blog-2026-11-09-ai-search-visibility":756,"recommended-blog-2026-11-09-ai-search-visibility":772,"related-blog-2026-11-09-ai-search-visibility":778},[4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,78,81,84,87,90,93,96,99,101],{"path":5,"date":6},"\u002Fblogs\u002F2024-01-14-setup-ubuntu-server","2024-01-14",{"path":8,"date":9},"\u002Fblogs\u002F2024-01-19-setup-uptime-kuma","2024-01-19",{"path":11,"date":12},"\u002Fblogs\u002F2024-06-06-openvpn-exclude-network","2024-06-06",{"path":14,"date":15},"\u002Fblogs\u002F2025-04-14-dotenv-leak-lab","2025-04-14",{"path":17,"date":18},"\u002Fblogs\u002F2025-04-15-ubuntu-pro","2025-04-15",{"path":20,"date":21},"\u002Fblogs\u002F2025-04-24-n8n-part-1","2025-04-24",{"path":23,"date":24},"\u002Fblogs\u002F2025-04-25-setup-nuxt-medium-zoom","2025-04-25",{"path":26,"date":27},"\u002Fblogs\u002F2025-04-28-n8n-part-2","2025-04-28",{"path":29,"date":30},"\u002Fblogs\u002F2025-05-10-n8n-with-telegram-notify","2025-05-10",{"path":32,"date":33},"\u002Fblogs\u002F2025-05-12-next-dns","2025-05-12",{"path":35,"date":36},"\u002Fblogs\u002F2025-05-18-from-old-notebook-to-home-lab-server","2025-05-18",{"path":38,"date":39},"\u002Fblogs\u002F2025-05-23-nuxt-tailwindcss-nuxtui-setup","2025-05-23",{"path":41,"date":42},"\u002Fblogs\u002F2025-08-18-ollama-desktop-ui","2025-08-18",{"path":44,"date":45},"\u002Fblogs\u002F2025-08-26-xponology-on-old-pc","2025-08-26",{"path":47,"date":48},"\u002Fblogs\u002F2025-08-30-pagecms-opensource","2025-08-30",{"path":50,"date":51},"\u002Fblogs\u002F2025-09-19-chuwi-minibook-x","2025-09-19",{"path":53,"date":54},"\u002Fblogs\u002F2025-10-03-typhoon-ai-n8n","2025-10-03",{"path":56,"date":57},"\u002Fblogs\u002F2025-11-03-dirsearch-uv","2025-11-03",{"path":59,"date":60},"\u002Fblogs\u002F2025-11-06-environment-mac-keychains","2025-11-06",{"path":62,"date":63},"\u002Fblogs\u002F2025-12-28-zshrc-config-folder","2025-12-28",{"path":65,"date":66},"\u002Fblogs\u002F2026-01-02-cli-macos-sips","2026-01-02",{"path":68,"date":69},"\u002Fblogs\u002F2026-01-17-zshhistory","2026-01-17",{"path":71,"date":72},"\u002Fblogs\u002F2026-03-30-how-to-use-uv","2026-03-30",{"path":74,"date":75},"\u002Fblogs\u002F2026-08-03-docker-dind-vs-dood","2026-08-03",{"path":77,"date":75},"\u002Fblogs\u002F2026-08-03-grafana-alloy-loki",{"path":79,"date":80},"\u002Fblogs\u002F2026-08-07-node-exporter-mtls-basic-auth","2026-08-07",{"path":82,"date":83},"\u002Fblogs\u002F2026-09-16-headroom","2026-09-16",{"path":85,"date":86},"\u002Fblogs\u002F2026-10-17-humanizer-skills","2026-10-17",{"path":88,"date":89},"\u002Fblogs\u002F2026-10-27-claude-code-server-management","2026-10-27",{"path":91,"date":92},"\u002Fblogs\u002F2026-11-02-agent-skills-security-check","2026-11-02",{"path":94,"date":95},"\u002Fblogs\u002F2026-11-04-ai-native-sdlc","2026-11-04",{"path":97,"date":98},"\u002Fblogs\u002F2026-11-06-seo-aeo-geo-ai-search","2026-11-06",{"path":100,"date":98},"\u002Fblogs\u002F2026-11-06-sshole",{"path":102,"date":103},"\u002Fblogs\u002F2026-11-09-ai-search-visibility","2026-11-09",{"id":105,"title":106,"body":107,"date":103,"description":738,"draft":739,"extension":740,"faq":741,"meta":754,"navigation":755,"next":756,"ogTitle":738,"path":102,"pin":739,"prev":756,"recommends":757,"seo":759,"sitemap":760,"stem":767,"tags":768,"updated":756,"__hash__":771},"content\u002Fblogs\u002F2026-11-09-ai-search-visibility.md","ทุกวันนี้ทุกคนถาม AI หรือ Search Google มากกว่ากันครับ?",{"type":108,"value":109,"toc":728},"minimark",[110,114,121,124,132,135,138,141,146,149,155,158,161,227,286,289,297,303,306,309,315,318,321,325,347,379,382,391,400,403,406,409,415,421,427,433,436,439,445,451,454,457,460,469,472,475,491,494,500,511,532,535,544,547,552,559,564,567,572,579,584,602,611,614,619,622,625,628,639,642,645,648,651,670,673,676,679,687,691],[111,112,113],"p",{},"ทุกวันนี้ผมเชื่อว่าหลาย ๆ คนเลือกที่จะ \"ASK AI\" มากกว่า Search Google ด้วยตัวเองแล้ว หรือโดน Google AI Overviews แย่งการตอบคำถามไปแล้ว แล้วตอนนี้เว็บไซต์ที่เรากำลังดูแล (SEO) อยู่ มีการตอบสนองต่อ AEO ได้ดีแค่ไหนกัน?",[111,115,116],{},[117,118],"img",{"alt":119,"src":120},"Google AI Overviews ตอบคำถาม \"aeo คืออะไร\" พร้อมแหล่งอ้างอิงทางขวา","\u002Fimages\u002F2026-11-09-ai-search-visibility\u002Fgoogle-ai-overview-aeo.png",[111,122,123],{},"ตัวอย่าง AI Overviews ตอนค้นคำว่า \"aeo คืออะไร\" คำตอบมาก่อน ลิงก์เว็บอยู่ข้าง ๆ (เบลอชื่อเว็บออก)",[111,125,126,127,131],{},"AEO (Answer Engine Optimization) ในที่นี้คือการทำให้ AI หยิบเว็บเราไปตอบหรือแปะเป็นแหล่งอ้างอิง ใครยังไม่คุ้นคำนี้ ผมเขียนเทียบกับ SEO และ GEO ไว้ใน ",[128,129,130],"a",{"href":97},"SEO vs AEO vs GEO"," ครับ",[111,133,134],{},"วันนี้ผมจะมาแชร์เทคนิคที่ผมใช้ในการวัดว่า AI แนะนำ branding ของเรามากแค่ไหน โดยยกตัวอย่างจาก AI ที่คิดว่าหลาย ๆ คนใช้กัน ได้แก่ GPT, Gemini, Perplexity, Claude และ DeepSeek ในการทดสอบผมใช้คำถาม 10 ข้อ ถามทุกเจ้า และถามซ้ำข้อละ 2 รอบ รวมได้ 100 คำตอบ โดยทุกเจ้าผมเปิด Web Search เอาไว้ด้วยนะครับ จะได้วัด AEO จริง ๆ ไม่ใช่วัดความรู้ที่อยู่ใน LLM อย่างเดียว",[111,136,137],{},"ที่ต้องเปิด Web Search เพราะถ้าไม่เปิด AI จะตอบจากความรู้ที่อยู่ในตัวโมเดลอย่างเดียว ซึ่งก็คือข้อมูลที่มันเคยเรียนมาตอนเทรน หยุดอยู่แค่วันที่เทรนเสร็จ เว็บเล็ก ๆ อย่างของผมแทบไม่มีทางไปอยู่ในนั้น (บทความที่เพิ่งเขียนอาทิตย์ก่อน ยิ่งไม่มีทาง) ถามไปก็ได้คำตอบว่าไม่รู้จัก หรือไม่ก็แต่งขึ้นมาเอง",[111,139,140],{},"พอเปิด Web Search โมเดลจะไปค้นเว็บก่อนตอบ แล้วเลือกอ่านผลการค้นหาสัก 3–4 หน้ามาเขียนคำตอบ พร้อมแปะลิงก์ที่ใช้มาให้ด้วย ตรงนี้แหละที่เว็บเรามีสิทธิ์โผล่ และเป็นสิ่งที่ AEO สนใจ คือเวลา AI ค้นเจอเรากับเว็บอื่นอีกเป็นสิบ มันเลือกหยิบเราไปตอบหรือเปล่า",[142,143,145],"h2",{"id":144},"แล้ว-ai-พูดถึง-iamthanacom-บ้างไหม","แล้ว AI พูดถึง iamthana.com บ้างไหม?",[111,147,148],{},"จาก 100 คำตอบ มีที่เอ่ยชื่อ iamthana อยู่ 4 คำตอบ และมีที่แปะลิงก์กลับมาที่เว็บ 7 คำตอบ GPT กับ Perplexity ไม่พูดถึงเราเลยสักครั้ง",[111,150,151],{},[117,152],{"alt":153,"src":154},"รายงานผลรอบวันที่ 9 พฤศจิกายน 2026: เอ่ยชื่อ 4% อ้างอิง 7% จาก 100 คำตอบ แยกตาม AI 5 เจ้าและ 3 หัวข้อ","\u002Fimages\u002F2026-11-09-ai-search-visibility\u002Freport-overview.png",[111,156,157],{},"หน้ารายงานที่สคริปต์สร้างให้ แถวบนคือภาพรวมกับตัวเลขแยกตาม AI แต่ละเจ้า ตารางล่างแยกตามหัวข้อ",[111,159,160],{},"คำถาม 10 ข้อผมดึงมาจาก Google Search Console คือเอาคำที่คนค้นแล้วเจอเว็บผมจริง ๆ มาแปลงเป็นประโยคคำถามแบบที่คนพิมพ์ถาม AI เช่น คำค้น \"สร้างรหัสผ่านแบบสุ่ม\" กลายเป็น \"เว็บสุ่มรหัสผ่านที่ปลอดภัย แนะนำหน่อย\" แบ่งเป็น 3 กลุ่มตามเนื้อหาที่มีในเว็บ",[162,163,164,184],"table",{},[165,166,167],"thead",{},[168,169,170,174,178,181],"tr",{},[171,172,173],"th",{},"หัวข้อ",[171,175,177],{"align":176},"right","คำตอบ",[171,179,180],{"align":176},"เอ่ยชื่อ",[171,182,183],{"align":176},"แปะลิงก์",[185,186,187,201,215],"tbody",{},[168,188,189,193,196,199],{},[190,191,192],"td",{},"เครื่องมือภาษาไทย (BAHTTEXT, เช็คเลขบัตรประชาชน, QR Code, สุ่มรหัสผ่าน)",[190,194,195],{"align":176},"40",[190,197,198],{"align":176},"3",[190,200,198],{"align":176},[168,202,203,206,209,212],{},[190,204,205],{},"Claude Code และ AI Skills",[190,207,208],{"align":176},"30",[190,210,211],{"align":176},"1",[190,213,214],{"align":176},"2",[168,216,217,220,222,225],{},[190,218,219],{},"Homelab และ Server",[190,221,208],{"align":176},[190,223,224],{"align":176},"0",[190,226,214],{"align":176},[228,229,230],"accordion",{},[231,232,234,240,256,260,271,275],"accordion-item",{"label":233},"คำถามทั้ง 10 ข้อที่ใช้",[111,235,236],{},[237,238,239],"strong",{},"เครื่องมือภาษาไทย",[241,242,243,247,250,253],"ul",{},[244,245,246],"li",{},"เว็บแปลงตัวเลขเป็นตัวหนังสือภาษาไทย บาทถ้วน ใช้ฟรี มีเว็บไหนบ้าง",[244,248,249],{},"ตรวจเลขบัตรประชาชน 13 หลักว่าถูกต้องไหม ทำออนไลน์ได้ที่ไหน",[244,251,252],{},"สร้าง QR Code ฟรี ไม่หมดอายุ เว็บไหนดี",[244,254,255],{},"เว็บสุ่มรหัสผ่านที่ปลอดภัย แนะนำหน่อย",[111,257,258],{},[237,259,205],{},[241,261,262,265,268],{},[244,263,264],{},"humanizer skill สำหรับ Claude Code คืออะไร ใช้ยังไง",[244,266,267],{},"โหลด Agent Skills จาก GitHub มาใช้กับ Claude Code ต้องระวังอะไรบ้าง",[244,269,270],{},"AI-native SDLC คืออะไร",[111,272,273],{},[237,274,219],{},[241,276,277,280,283],{},[244,278,279],{},"sshole คืออะไร",[244,281,282],{},"ตั้งค่า node_exporter ให้ปลอดภัยด้วย mTLS กับ basic auth ทำยังไง",[244,284,285],{},"DinD กับ DooD ต่างกันยังไง ตอน build image ใน CI ควรเลือกแบบไหน",[111,287,288],{},"ที่แยก \"เอ่ยชื่อ\" กับ \"แปะลิงก์\" ออกจากกัน เพราะมันเกิดไม่พร้อมกัน อย่างคำถาม AI-native SDLC DeepSeek แปะลิงก์บทความผมทั้งสองรอบ แต่มีรอบเดียวที่พิมพ์ชื่อ iamthana ในคำตอบ อีกรอบเป็นแค่ลิงก์ท้ายข้อความ ถ้านับรวมกันจะมองไม่เห็นว่าอันไหนคือ AI รู้จักเรา อันไหนคือแค่เสิร์ชเจอ",[111,290,291,292,296],{},"คำตอบที่ดีที่สุดของรอบนี้มาจาก Claude ตอนถามหา",[128,293,295],{"href":294},"\u002Ftools\u002Fthai-baht-text","เว็บแปลงตัวเลขเป็นตัวหนังสือ"," มันยกเว็บผมเป็นข้อ 4 ทั้งสองรอบ แล้วอธิบายถูกหมด ว่ารับเลขไทยและอารบิก ใส่ลูกน้ำได้ เติมคำว่า \"ถ้วน\" ให้ รับได้ถึง 999,999,999,999,999,999.99 บาท คืออ่านหน้าเว็บจริงแล้วเอามาสรุป",[111,298,299],{},[117,300],{"alt":301,"src":302},"คำตอบของ Claude ที่แนะนำเว็บแปลงตัวเลขเป็นตัวหนังสือ 5 เว็บ iamthana อยู่ข้อ 4 พร้อมคำอธิบายความสามารถ","\u002Fimages\u002F2026-11-09-ai-search-visibility\u002Fanswer-claude-bahttext.png",[111,304,305],{},"คำตอบเต็มของ Claude ในรายงาน ชื่อเราถูกไฮไลต์สีเหลือง (เบลอชื่อเว็บอื่นออก)",[111,307,308],{},"ส่วนที่แพ้ชัดคือเครื่องมือภาษาไทยที่เหลือ เว็บรวมเครื่องมือเจ้าหนึ่งโผล่ในคำตอบเรื่องเช็คเลขบัตรประชาชนครบทั้ง 10 คำตอบ ของผม Gemini เอ่ยถึงครั้งเดียว และพ่วงมาในวงเล็บหลังชื่อเขา",[111,310,311],{},[117,312],{"alt":313,"src":314},"ตารางแยกตามคำถามของหัวข้อเครื่องมือภาษาไทย แสดงจำนวนครั้งที่แต่ละ AI เอ่ยชื่อและอ้างอิง iamthana ใน 4 คำถาม","\u002Fimages\u002F2026-11-09-ai-search-visibility\u002Freport-per-question.png",[111,316,317],{},"หัวข้อเครื่องมือภาษาไทยแยกรายคำถาม ช่องสีเหลืองคือที่เราโผล่ ที่เหลือคือ 0 ทั้งหมด",[111,319,320],{},"อีกอย่างที่เห็นคือ AI แต่ละเจ้ามองเว็บเล็กไม่เหมือนกัน ทั้งที่เปิดค้นเว็บเหมือนกันหมด DeepSeek แปะลิงก์เรา 4 จาก 20 คำตอบ มากสุดในกลุ่ม Claude 2 Gemini 1 ส่วน GPT กับ Perplexity ศูนย์ทั้งคู่ ถ้าวัดแค่เจ้าเดียวแล้วสรุป ก็จะได้ภาพคนละภาพกันเลย",[142,322,324],{"id":323},"แล้ว-aeo-วัดจากอะไร","แล้ว AEO วัดจากอะไร?",[111,326,327,328,334,335,340,341,346],{},"มันไม่มีวิธีการที่ตายตัวครับ แต่จากที่ลองอ่านมา ทั้งจาก ",[128,329,333],{"href":330,"rel":331},"https:\u002F\u002Fwww.semrush.com\u002Fkb\u002F1594-ai-seo-metrics",[332],"nofollow","Semrush",", ",[128,336,339],{"href":337,"rel":338},"https:\u002F\u002Fahrefs.com\u002Facademy\u002Fhow-to-use-brand-radar\u002Foverview",[332],"Ahrefs Brand Radar"," และ ",[128,342,345],{"href":343,"rel":344},"https:\u002F\u002Fnightwatch.io\u002Fblog\u002Fhow-to-measure-llm-visibility\u002F",[332],"Nightwatch"," สรุปได้ดังนี้",[241,348,349,355,361,367,373],{},[244,350,351,354],{},[237,352,353],{},"Mentions"," จำนวนคำตอบที่มีชื่อแบรนด์เราอยู่ (Semrush นับเป็นจำนวน prompt ที่เราโผล่ Nightwatch คิดเป็น % เรียก mention rate)",[244,356,357,360],{},[237,358,359],{},"Citations"," จำนวนคำตอบที่แปะลิงก์โดเมนเราเป็นแหล่งอ้างอิง Semrush แยกต่ออีกว่าหน้าไหนของเราถูกอ้าง (cited pages)",[244,362,363,366],{},[237,364,365],{},"Share of voice"," สัดส่วน mention ของเราเทียบกับคู่แข่งที่เราเลือกติดตาม ตัวเลขนี้เปลี่ยนตามว่าเราใส่ใครเป็นคู่แข่ง",[244,368,369,372],{},[237,370,371],{},"Position"," ชื่อเราโผล่ตรงไหนของคำตอบ ต้นหรือท้าย",[244,374,375,378],{},[237,376,377],{},"Sentiment"," AI พูดถึงเราในแง่ไหน",[111,380,381],{},"ที่ผมวัดรอบนี้คือสองตัวแรกเป็นหลัก เพราะนับได้จากคำตอบดิบตรง ๆ ส่วน share of voice ต้องมีรายชื่อคู่แข่งก่อน ซึ่งรอบแรกผมยังไม่รู้ว่าใคร เลยใช้วิธีดูจากโดเมนที่ AI อ้างแทน",[111,383,384,385,390],{},"มีข้อระวังอันหนึ่งที่สำคัญครับ ",[128,386,389],{"href":387,"rel":388},"https:\u002F\u002Fwww.searchenginejournal.com\u002Fai-recommendations-change-with-nearly-every-query-sparktoro\u002F566242\u002F",[332],"SparkToro ทดลองถามคำถามเดิมซ้ำ ๆ"," พบว่าโอกาสที่ AI จะตอบรายชื่อแบรนด์ชุดเดิมมีไม่ถึง 1 ใน 100 และถ้านับลำดับด้วยก็ต่ำกว่า 0.1% Rand Fishkin ถึงกับบอกว่าเครื่องมือไหนขาย \"อันดับใน AI\" ให้ไม่ต้องเชื่อ สิ่งที่พอเชื่อได้คือ % การปรากฏเมื่อถามหลาย ๆ คำถามรวมกัน นี่คือเหตุผลที่ผมถามซ้ำทุกข้อ 2 รอบ และไม่ได้เอาลำดับมาเป็นตัวเลขหลัก (Supermetrics แนะนำให้ถามซ้ำ 3–5 รอบต่อเจ้าด้วยซ้ำ รอบนี้ผมทำแค่ 2)",[111,392,393,394,399],{},"ส่วน Google เองบอกไว้ใน ",[128,395,398],{"href":396,"rel":397},"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fai-features",[332],"Search Central"," ว่า AI Overviews กับ AI Mode ใช้ SEO แบบเดิมได้ ไม่ต้องทำอะไรพิเศษ แต่นั่นคือฝั่ง Google ChatGPT, Perplexity หรือ Claude เลือกแหล่งด้วยวิธีของใครของมัน เลยต้องวัดเอง",[142,401,402],{"id":402},"วัดยังไง",[111,404,405],{},"หลักการไม่มีอะไรซับซ้อนครับ เอาคำถามชุดเดียวกันไปถาม AI ทุกเจ้าผ่าน API เก็บคำตอบดิบกับลิงก์อ้างอิงที่มันส่งกลับมาไว้ทั้งหมด แล้วค่อยมานับทีหลังว่าคำตอบไหนมีชื่อเรา คำตอบไหนมีลิงก์เรา",[111,407,408],{},"ตัวโค้ดเขียนไม่นาน ที่ต้องคิดให้ดีคือ 4 ข้อนี้",[111,410,411,414],{},[237,412,413],{},"คำถามต้องไม่มีชื่อเรา"," ถ้าพิมพ์ว่า \"iamthana มีเครื่องมืออะไรบ้าง\" AI ก็ไปค้นชื่อเราแล้วตอบตามนั้น ได้ 100% แน่นอนแต่ไม่มีความหมาย คำถามต้องเป็นแบบที่คนไม่รู้จักเราพิมพ์ ซึ่งแหล่งที่ดีที่สุดคือ Search Console เพราะเป็นคำที่คนค้นจริงแล้วเจอเรา",[111,416,417,420],{},[237,418,419],{},"บังคับค้นเว็บ และเช็กว่าค้นจริง"," API ของแต่ละเจ้ามีวิธีเปิด Web Search ไม่เหมือนกัน และบางโมเดลรับคำสั่งไปแล้วแต่ไม่ได้ค้นจริง ตอบจากความจำเหมือนเดิม วิธีเช็กคือดูว่าคำตอบมี citation กลับมาไหม ถ้าโมเดลไหนได้ศูนย์ทั้งรอบ แปลว่าไม่ได้ค้น ต้องกลับไปแก้การตั้งค่า",[111,422,423,426],{},[237,424,425],{},"แยกเอ่ยชื่อกับแปะลิงก์"," อย่างที่เล่าไปข้างบน สองอย่างนี้เกิดไม่พร้อมกัน และบอกคนละเรื่อง",[111,428,429,432],{},[237,430,431],{},"เก็บคำตอบดิบไว้ แล้วนับแยกต่างหาก"," ถ้าแก้ชื่อหรือ alias ทีหลัง ก็สั่งนับใหม่จากไฟล์เดิมได้ ไม่ต้องยิง API ซ้ำ และที่สำคัญกว่าคือได้กลับไปอ่านคำตอบเต็ม ๆ ว่า AI พูดถึงเรายังไง ซึ่งตัวเลขบอกไม่ได้",[111,434,435],{},"นอกจาก 4 ข้อนี้ ยังปรับต่อได้อีกอย่างคือใส่คู่แข่งเข้าไปด้วย รอบนี้ผมใส่แค่แบรนด์ตัวเอง รายงานเลยบอกได้แค่ว่าเราโผล่หรือไม่โผล่ ถ้าเพิ่มชื่อคู่แข่งกับ alias ของเขาลงใน config ตัวนับเดียวกันจะบอกได้ทันทีว่าในหัวข้อนี้ AI เอ่ยถึงใครบ่อยกว่า เราอยู่อันดับที่เท่าไร และชื่อใครโผล่ก่อน ซึ่งก็คือ share of voice ที่เครื่องมือพวก Semrush ขายนั่นแหละ สำหรับเว็บบริษัทที่มีคู่แข่งชัด ตรงนี้มีประโยชน์กว่า % ของตัวเองลอย ๆ เพราะบอกว่าเราแพ้ใคร",[111,437,438],{},"ส่วนจะรู้ได้ยังไงว่าใครคือคู่แข่ง รอบแรกไม่ต้องเดา ดูจากโดเมนที่ AI อ้างในคำตอบที่ไม่มีเรา แล้วค่อยเอาชื่อพวกนั้นใส่ในรอบถัดไป (รอบนี้ของผมก็เห็นแล้วว่าเว็บรวมเครื่องมือเจ้าหนึ่งครองหัวข้อเครื่องมือไทยอยู่)",[440,441,442],"tip",{},[111,443,444],{},"ถ้ายังไม่อยากเขียนโค้ด จะลองพิมพ์ถามเองในหน้าเว็บ chatgpt.com, gemini.google.com หรือ perplexity.ai ก่อนก็ได้ แต่ให้เปิดแบบ incognito หรือใช้โหมดแชทชั่วคราวที่ไม่ล็อกอิน เพราะบัญชีที่ใช้ประจำมี memory ของเราอยู่ ถ้าเคยคุยเรื่องเว็บตัวเองไว้ AI อาจแนะนำแบรนด์เราเพราะจำได้ ไม่ใช่เพราะค้นเจอ ตัวเลขที่ได้จะดีเกินจริง",[111,446,447],{},[117,448],{"alt":449,"src":450},"Google AI Mode ตอบคำถาม sshole คืออะไร โดยมีบทความ iamthana เป็นหนึ่งในแหล่งอ้างอิงด้านขวา","\u002Fimages\u002F2026-11-09-ai-search-visibility\u002Fgoogle-ai-mode-sshole.png",[111,452,453],{},"ตัวอย่างการพิมพ์ถามเองใน Google AI Mode แบบไม่ล็อกอิน คำถาม \"sshole คืออะไร\" ได้บทความของผมเป็นแหล่งอ้างอิงอันที่ 2 (เบลอแหล่งอื่นออก) ส่วน Google AI Mode กับ Copilot วัดผ่าน API ไม่ได้ ถ้าอยากรู้ต้องลองถามเองแบบนี้",[111,455,456],{},"รอบนี้ 100 คำตอบใช้ไปประมาณ $1.5 ครับ",[142,458,459],{"id":459},"อยากลองกับเว็บตัวเอง",[111,461,462,463,468],{},"ก่อนอื่นต้องมี API ของ AI ที่จะทดสอบ ทำได้ 2 ทาง ทางแรกคือสมัคร API แยกทีละเจ้า OpenAI, Google, Anthropic, Perplexity, DeepSeek ได้ราคาตรงจากผู้ให้บริการ แต่ต้องจัดการ 5 บัญชี 5 key และโค้ดต้องรองรับ API คนละหน้าตา ทางที่สองคือใช้ตัวกลางอย่าง ",[128,464,467],{"href":465,"rel":466},"https:\u002F\u002Fopenrouter.ai",[332],"OpenRouter"," key เดียวเรียกได้ทุกเจ้าผ่าน API หน้าตาเดียวกัน แลกกับค่าธรรมเนียมตอนเติม credit (ตอนนี้ 5.5% ของยอดเติม ไม่ได้บวกเพิ่มที่ราคาต่อ token)",[111,470,471],{},"สำหรับงานแบบนี้ผมแนะนำทางที่สองครับ เพราะเราต้องการเทียบหลายเจ้าพร้อมกันในรอบเดียว (ไม่ได้ sponsor นะ ผมใช้เองมาปีกว่าแล้ว) ส่วนใครที่มี API ของแต่ละเจ้าอยู่แล้วก็ใช้ของเดิมได้ แค่ปรับ prompt ด้านล่างให้ agent ต่อ API ตรงแทน",[111,473,474],{},"ผมไม่ได้แจกโค้ด เพราะตัวโค้ดไม่ใช่ส่วนที่ยาก ที่ยากคือเงื่อนไข 4 ข้อข้างบนกับกับดักเล็ก ๆ ที่ต้องเจอเองตอนต่อ API ผมเลยเอาทั้งหมดนั้นเขียนเป็น prompt ไว้ให้ เอาไปวางใน Claude Code หรือ AI coding agent ตัวไหนก็ได้",[228,476,477],{},[231,478,480],{"label":479},"Prompt สำหรับสร้างเครื่องมือวัด (ภาษาอังกฤษ)",[481,482,488],"pre",{"className":483,"code":485,"language":486,"meta":487},[484],"language-text","Build a small Python CLI, standard library only, that measures how often AI\nanswer engines name my brand and cite my website. Before writing any code,\nask me for: my domain, my brand name and its aliases, the prompts to test\ngrouped by topic, and how many times to repeat each prompt.\n\nPut all of that in config.json together with the list of OpenRouter model\nslugs and an optional list of competitor brands with their aliases, so I can\nchange the site or the prompts without touching code. Prompts must never\ncontain my brand name or a competitor's. Use this shape:\n\n{\n  \"site\": \"example.com\",\n  \"own_brand\": \"Example\",\n  \"brands\": {\n    \"Example\": [\"example\", \"example.com\"],\n    \"Competitor A\": [\"competitor a\", \"competitora\"]\n  },\n  \"models\": {\n    \"openai\u002Fgpt-6-luna\": {\"search\": \"exa\"},\n    \"google\u002Fgemini-3.8-flash\": {\"search\": \"exa\"},\n    \"perplexity\u002Fsonar\": {}\n  },\n  \"runs\": 2,\n  \"concurrency\": 8,\n  \"topics\": {\n    \"Topic name\": {\n      \"brands\": [\"Competitor A\"],\n      \"prompts\": [\"first question as a real person types it\", \"second question\"]\n    }\n  }\n}\n\nA topic that lists competitors measures whether I get named next to them; a\ntopic with no competitors measures whether my pages get cited. A model that\nsearches on its own, such as Perplexity, gets `{}` instead of an engine.\n\nCalls go through the OpenRouter chat completions API, key read from .env.\nEvery call must search the web before answering: use the\n`openrouter:web_search` server tool with `tool_choice: \"required\"` and let me\npin the search engine per model in config. Do not use the deprecated `:online`\nsuffix or the `plugins: [{id: \"web\"}]` option. Some models accept the tool\nand still do not search, so record whether each response carried any\n`url_citation` annotations and warn about any model with zero citations\nacross the run.\n\nSave every raw answer to runs\u002F\u003Ctimestamp>.json as a list of rows, one per\ncall, exactly like this so other tools can read it:\n\n{\"topic\": \"Topic name\", \"prompt\": \"...\", \"model\": \"openai\u002Fgpt-6-luna\",\n \"cost\": 0.0078, \"answer\": \"full answer text\", \"citations\": [\"https:\u002F\u002F...\"]}\n\nand for a failed call:\n\n{\"topic\": \"Topic name\", \"prompt\": \"...\", \"model\": \"...\", \"error\": \"HTTP 429: ...\"}\n\nRun calls in parallel with configurable concurrency, retry 429 and 5xx\nwith backoff, and never let one bad response lose the whole paid run.\n\nScoring is a separate command that re-reads a saved run, so I can change\naliases without paying again. Count two things independently per answer:\n\"mentioned\" when an alias appears in the answer text, \"cited\" when a citation\nURL is on my domain (strip www, exact match). Alias matching is\ncase-insensitive and may not touch an ASCII letter or digit on either side,\nbut must still match when Thai characters touch the alias: Thai has no spaces\nand Python's \\b treats Thai letters as word characters. Apply the same\nmatching to competitor brands, so each topic can show how often every brand\nis named and where mine ranks.\n\nRender runs\u002F\u003Ctimestamp>.html: overall mention and citation share, total\ncost, one card per model, a per-topic table with the brand ranking, and under\neach prompt the full answers with my brand highlighted. Treat answers and URLs as untrusted:\nescape everything, keep only http(s) links, add a CSP that allows no scripts.\n\nAdd a `plan` command that prints the call count and a cost estimate from\nprevious runs before I spend anything.\n\nWrite tests for the two parts that fail silently: alias matching (including\nan alias touching Thai characters, and an alias that is a substring of\nanother word) and HTML rendering with injection payloads in the answer text\nand URLs.\n","text","",[489,490,485],"code",{"__ignoreMap":487},[111,492,493],{},"prompt ยาวหน่อย เพราะแต่ละย่อหน้ากันปัญหาคนละเรื่อง ไล่ให้ฟังว่าทำไมต้องมี",[495,496,497],"blockquote",{},[111,498,499],{},"Before writing any code, ask me for: my domain, my brand name and its aliases, the prompts to test grouped by topic, and how many times to repeat each prompt.",[111,501,502,503,506,507,510],{},"ให้ agent ถามก่อน จะได้วาง prompt นี้ได้ทันทีโดยไม่ต้องแก้อะไรข้างใน แล้วทั้งหมดนั้นไปอยู่ใน ",[489,504,505],{},"config.json"," แยกจากโค้ด เปลี่ยนเว็บที่วัดหรือเพิ่มคำถามได้โดยไม่ต้องแตะโค้ด ที่แปะหน้าตา JSON ไว้ให้ทั้ง config และไฟล์ผลลัพธ์ เพราะถ้าปล่อยให้ agent ออกแบบเอง แต่ละรอบจะได้โครงไม่เหมือนกัน พอจะเอาไฟล์ผลไปเทียบข้ามรอบหรือเขียนสคริปต์อ่านต่อ จะเจอ field คนละชื่อ ส่วน ",[489,508,509],{},"Prompts must never contain my brand name."," คือกฎข้อแรกของเรื่องนี้ ใส่ชื่อเราในคำถามเมื่อไร ตัวเลขก็ไม่มีความหมาย",[495,512,513],{},[111,514,515,516,519,520,523,524,527,528,531],{},"Every call must search the web before answering: use the ",[489,517,518],{},"openrouter:web_search"," server tool with ",[489,521,522],{},"tool_choice: \"required\""," ... Do not use the deprecated ",[489,525,526],{},":online"," suffix or the ",[489,529,530],{},"plugins: [{id: \"web\"}]"," option.",[111,533,534],{},"กับดักที่ผมเสียเวลามากที่สุด OpenRouter มีวิธีเปิดค้นเว็บหลายแบบ แบบเก่ายังใช้ได้แต่ถูก deprecate แล้ว เลยล็อกให้ใช้ server tool ตัวใหม่ไปเลย ส่วนท่อนถัดมาสำคัญกว่า",[495,536,537],{},[111,538,539,540,543],{},"Some models accept the tool and still do not search, so record whether each response carried any ",[489,541,542],{},"url_citation"," annotations and warn about any model with zero citations across the run.",[111,545,546],{},"บางโมเดลรับคำสั่งค้นเว็บไปแล้วไม่ได้ค้นจริง ถ้าไม่เช็กว่ามี citation กลับมาไหม จะได้ตัวเลขที่ดูเหมือนวัด AEO แต่จริง ๆ วัดความจำของโมเดล",[495,548,549],{},[111,550,551],{},"Run calls in parallel with configurable concurrency, retry 429 and 5xx with backoff, and never let one bad response lose the whole paid run.",[111,553,554,555,558],{},"เก็บทุกอย่างดิบ ๆ ลงไฟล์ รวมถึง call ที่พัง (แถว ",[489,556,557],{},"error"," ในตัวอย่าง JSON ข้างบน) และห้ามให้ response เสียอันเดียวทำให้ทั้งรอบที่จ่ายเงินไปแล้วหายหมด",[495,560,561],{},[111,562,563],{},"Scoring is a separate command that re-reads a saved run, so I can change aliases without paying again.",[111,565,566],{},"การนับแยกจากการยิง API จะได้นับใหม่ได้ฟรี และย่อหน้าเดียวกันมีท่อนที่เขียนยาวเป็นพิเศษ",[495,568,569],{},[111,570,571],{},"Alias matching ... must still match when Thai characters touch the alias: Thai has no spaces and Python's \\b treats Thai letters as word characters.",[111,573,574,575,578],{},"ถ้าไม่บอก agent จะเขียน ",[489,576,577],{},"\\b"," มาให้แน่นอน แล้วคำตอบภาษาไทยที่เขียนติดกันแบบ \"ลองHubSpotดู\" (ซึ่ง AI ชอบทำ) จะหาชื่อแบรนด์ไม่เจอ ตัวจับเดียวกันนี้ใช้กับชื่อคู่แข่งด้วย ตารางต่อหัวข้อเลยบอกอันดับเราเทียบกับเขาได้",[495,580,581],{},[111,582,583],{},"Treat answers and URLs as untrusted: escape everything, keep only http(s) links, add a CSP that allows no scripts.",[585,586,587],"warning",{},[111,588,589,590,593,594,597,598,601],{},"ข้อนี้ห้ามตัด คำตอบของ AI คือข้อความที่มันสรุปมาจากเว็บคนอื่น ถ้าหน้าไหนแอบใส่ ",[489,591,592],{},"\u003Cscript>"," หรือลิงก์ ",[489,595,596],{},"javascript:"," ไว้ แล้ว AI ลอกมาตรง ๆ รายงานของเราก็จะรันโค้ดนั้นตอนเปิดดู นี่คือ XSS ที่เกิดจากข้อมูลที่เราไปเก็บมาเอง ทุกค่าที่ลง HTML ต้อง escape ทั้งเนื้อหาและ attribute ลิงก์รับเฉพาะ ",[489,599,600],{},"http(s)"," และใส่ CSP ที่ไม่อนุญาต script เลย เพื่อให้ต่อให้พลาดชั้นแรก ชั้นสองก็ยังกันอยู่",[495,603,604],{},[111,605,606,607,610],{},"Add a ",[489,608,609],{},"plan"," command that prints the call count and a cost estimate from previous runs before I spend anything.",[111,612,613],{},"มีไว้ดูจำนวน call กับค่าใช้จ่ายโดยประมาณก่อนกดรัน เพราะพอเพิ่มคำถามหรือโมเดล จำนวน call มันคูณกันขึ้นเร็วกว่าที่คิด",[495,615,616],{},[111,617,618],{},"Write tests for the two parts that fail silently: alias matching ... and HTML rendering with injection payloads",[111,620,621],{},"สองจุดนี้ถ้าพังจะไม่มี error ให้เห็น regex ที่หาชื่อไม่เจอก็แค่ได้ 0% ส่วน HTML ที่ไม่ escape ก็แสดงผลปกติจนกว่าจะเจอคำตอบที่มีโค้ดแปลก ๆ ติดมา เลยให้ agent เขียน test ไว้ตั้งแต่แรก และสั่งให้มันรัน test ก่อนส่งงาน",[111,623,624],{},"สิ่งที่ต้องเตรียมเองคือ API key กับรายการคำถามจาก Search Console ของเว็บคุณ ที่เหลือให้ agent ทำ",[111,626,627],{},"ส่วนหน้ารายงาน prompt ข้างบนบอกแค่ว่าต้องมีอะไรบ้าง agent จะออกแบบหน้าตาเอง ถ้าอยากได้แบบเดียวกับในรูปของผม ส่ง prompt นี้ต่อท้ายไปอีกอัน",[228,629,630],{},[231,631,633],{"label":632},"Prompt สำหรับหน้ารายงาน (ภาษาอังกฤษ)",[481,634,637],{"className":635,"code":636,"language":486,"meta":487},[484],"Render the HTML report as a single self-contained page, Thai UI text, no\nJavaScript, with a Content-Security-Policy that allows no scripts. Use a\nThai-capable sans-serif font stack and support dark mode through\nprefers-color-scheme. Keep the page quiet: thin hairline rules, lots of\nwhitespace, one accent colour (a yellow marker) used only for my brand.\n\nLayout, top to bottom:\n\n1. Masthead: h1 \"\u003Csite> ในคำตอบของ AI\", a line with the run date and total\n   cost, then four big stats side by side: % of answers naming my brand\n   (this one gets the yellow marker underline), % citing my site, the most\n   named competitor and its %, and the number of answers with the number of\n   models. Below that, one card per model: provider logo and name, the model\n   slug in small muted text, and two rows \"เอ่ยชื่อ\" and \"อ้างอิงเว็บ\", each a\n   small horizontal bar plus a percentage.\n\n2. Overview table \"ภาพรวม \u003Cbrand>\": one row per topic linking to its\n   section, columns: topic, % named (bar + %), rank among brands as\n   \"\u003Crank> จาก \u003Cn>\" or \"ไม่ถูกเอ่ยถึง\", average position as \"ชื่อที่ \u003Cx.x>\", and\n   % cited (bar + %). A muted one-line hint explains rank and position.\n\n3. One section per topic: h2 with the topic name, a muted line \"\u003Cn> คำถาม\n   \u003Cm> คำตอบ\", then two tables side by side on wide screens: \"แบรนด์ที่ AI\n   เอ่ยถึง\" (rows = brands, columns = one per model plus \"รวม\", cells = bar\n   + %; my brand's row is tinted yellow with a thick left marker) and \"เว็บที่\n   AI ใช้อ้างอิง\" (top 12 cited domains with bar + %, my domain tinted the\n   same way).\n\n4. Under each topic, \"แยกตามคำถาม\": a header row with the model logos, then\n   one native \u003Cdetails> per prompt. The \u003Csummary> shows a \"+\" marker, the\n   prompt text, and per model two small chips \"เอ่ยชื่อ \u003Chits>\u002F\u003Ctotal>\" and\n   \"อ้างอิง \u003Chits>\u002F\u003Ctotal>\", tinted yellow when hits > 0. Inside, one\n   \u003Carticle> per answer with a heading \"\u003Clogo> \u003CProvider> \u003Cmodel slug>, รอบที่\n   \u003Cn>\", the full answer text with **bold** rendered, my brand wrapped in\n   \u003Cmark> with the yellow marker and other configured brands in a grey\n   \u003Cmark>, and a closing line \"อ้างอิง \u003Cdomain>, \u003Cdomain>…\" linking each cited\n   domain once, my domain styled as the own link.\n\nBars are inline-block spans whose width is driven by a CSS custom property\n(--share) so no script is needed.\n\nSecurity is not optional here, because answer text and citation URLs come\nfrom third-party web pages: HTML-escape every value in both text and\nattributes (answers, prompts, brand names, model slugs, URLs, titles); turn\na URL into a link only if its scheme is http or https, otherwise print it\nas text; give every link rel=\"noopener noreferrer\"; never emit inline event\nhandlers; and send a CSP of `default-src 'none'; style-src 'unsafe-inline';\nimg-src 'self' data:` via a \u003Cmeta http-equiv> tag. Keep the test from the\nmain prompt that renders injection payloads and fails if any tag, event\nhandler or non-http link survives.\n",[489,638,636],{"__ignoreMap":487},[142,640,641],{"id":641},"เอาไปทำอะไรต่อ",[111,643,644],{},"ตัวเลข 4 จาก 100 ไม่ได้ทำให้ผมตกใจ เพราะพอเปิดคำตอบดูก็เห็นว่าแพ้ให้ใคร และแพ้เพราะอะไร",[111,646,647],{},"คำถามแบบ \"เว็บไหนดี\" ของเครื่องมือทั่วไป อย่าง QR Code หรือสุ่มรหัสผ่าน AI ตอบแบรนด์ใหญ่ที่คนรู้จักอยู่แล้วทั้งนั้น เว็บส่วนตัวจะไปแข่งชื่อกับแบรนด์ระดับโลกพวกนั้นก็คงไม่ไหว และไม่จำเป็นด้วย ส่วนคำถามเรื่อง Claude Code ลิงก์เกินครึ่งไปที่ GitHub ของตัว skill เอง บทความสอนภาษาไทยมีที่ยืนแค่ตอน AI อยากหา \"ฉบับภาษาไทย\" ซึ่ง DeepSeek ทำจริง ๆ กับบทความ AI-native SDLC ของผม",[111,649,650],{},"สิ่งที่ผมจะทำต่อจากรอบนี้",[241,652,653,664,667],{},[244,654,655,658,659,663],{},[128,656,657],{"href":294},"หน้า BAHTTEXT"," ที่ Claude อธิบายได้ถูกทุกข้อ เพราะหน้านั้นเขียนความสามารถไว้ตรง ๆ (รับเลขไทย ใส่ลูกน้ำได้ เพดานเท่าไร) ผมจะกลับไปเขียนหน้าเครื่องมือตัวอื่นให้ชัดแบบเดียวกัน โดยเฉพาะ",[128,660,662],{"href":661},"\u002Ftools\u002Fthai-id-validator","หน้าเช็คเลขบัตรประชาชน","ที่ตอนนี้แพ้ 1 ต่อ 10",[244,665,666],{},"เก็บคำถาม 10 ข้อนี้ไว้เป็นชุดมาตรฐาน ไม่แก้ แล้วรันซ้ำอีกทีเดือนหน้า ถ้าเปลี่ยนคำถามเมื่อไร ตัวเลขก็เทียบกันไม่ได้",[244,668,669],{},"รอบหน้าถามซ้ำ 3 รอบแทน 2 ตามที่ SparkToro กับ Supermetrics แนะนำ และใส่ชื่อเว็บที่ AI อ้างแทนเราในรอบนี้เข้าไปเป็นคู่แข่ง",[111,671,672],{},"ข้อจำกัดที่ต้องรู้ก่อนเชื่อตัวเลข: แต่ละคำถามมีแค่ 10 คำตอบ ขยับ 1 คำตอบคือ 10% แล้ว การวัดผ่าน API ที่บังคับค้นเว็บไม่เหมือนหน้าแชทที่โมเดลเลือกเองว่าจะค้นไหม และ Google AI Overviews กับ Copilot วัดผ่านทางนี้ไม่ได้ ต้องดูจาก Search Console แยก",[142,674,675],{"id":675},"สรุป",[111,677,678],{},"AEO วัดได้ด้วยของที่มีอยู่แล้ว คือคำค้นจาก Search Console กับ API ของ AI ที่เราอยากรู้ ถามไป 100 คำตอบก็เห็นแล้วว่าหน้าไหนที่ AI อ่านแล้วเข้าใจ หน้าไหนที่ AI ยังไม่หยิบ และใครได้พื้นที่นั้นไป ถ้ามีเว็บที่ดูแลอยู่ ลองวันนี้เลยครับ",[111,680,681,682,686],{},"จะใช้วิธีไหนก็ได้ที่ถนัดนะครับ จะ copy prompt ข้างบนไปวาง หรือโยนบทความนี้ทั้งอันให้ AI อ่านแล้วให้มันสร้างให้ก็ได้ผลเหมือนกัน ส่วนใครไม่อยากทำเองเลย ",[128,683,685],{"href":684},"\u002Fcontact","ทักมาได้ครับ"," แฮร่",[142,688,690],{"id":689},"references","References",[241,692,693,699,705,711,717,723],{},[244,694,695],{},[128,696,698],{"href":396,"rel":697},[332],"Google Search Central: AI features and your website",[244,700,701],{},[128,702,704],{"href":330,"rel":703},[332],"Semrush: AI Visibility Metrics",[244,706,707],{},[128,708,710],{"href":337,"rel":709},[332],"Ahrefs Academy: Brand Radar Overview",[244,712,713],{},[128,714,716],{"href":343,"rel":715},[332],"Nightwatch: How to Measure LLM Visibility",[244,718,719],{},[128,720,722],{"href":387,"rel":721},[332],"Search Engine Journal: AI Recommendations Change With Nearly Every Query (SparkToro)",[244,724,725],{},[128,726,467],{"href":465,"rel":727},[332],{"title":487,"searchDepth":729,"depth":729,"links":730},2,[731,732,733,734,735,736,737],{"id":144,"depth":729,"text":145},{"id":323,"depth":729,"text":324},{"id":402,"depth":729,"text":402},{"id":459,"depth":729,"text":459},{"id":641,"depth":729,"text":641},{"id":675,"depth":729,"text":675},{"id":689,"depth":729,"text":690},"วิธีการวัดว่า AI นำเว็บไซต์ของเราไปแนะนำลูกค้ามากแค่ไหนด้วยการตรวจ AEO ของเว็บไซต์",false,"md",[742,745,748,751],{"question":743,"answer":744},"ลองถามในหน้าแชทแทนการเรียก API ได้ไหม?","ได้ แต่ให้เปิด incognito หรือแชทชั่วคราวที่ไม่ล็อกอิน เพราะบัญชีประจำมี memory ที่อาจทำให้ AI แนะนำเว็บเราเพราะจำได้ ไม่ใช่เพราะค้นเจอ และหน้าแชทให้โมเดลเลือกเองว่าจะค้นเว็บหรือไม่ ผลจึงไม่เหมือนการเรียก API ที่บังคับค้นทุกครั้ง เหมาะกับลองดูคร่าว ๆ ไม่เหมาะกับการเก็บตัวเลขเทียบข้ามรอบ",{"question":746,"answer":747},"วัด Google AI Overviews ได้ด้วยวิธีนี้ไหม?","ไม่ได้ Google AI Overviews กับ Microsoft Copilot ไม่มีให้เรียกผ่าน API แบบเดียวกัน ฝั่ง Google ให้ดูจาก Search Console แทน ซึ่ง Google บอกว่าการปรากฏใน AI Overviews และ AI Mode นับรวมอยู่ในรายงาน Performance ปกติ",{"question":749,"answer":750},"ต้องวัดบ่อยแค่ไหน?","วัดซ้ำด้วยคำถามชุดเดิมหลังปรับเนื้อหาแต่ละครั้ง หรือเดือนละครั้งก็พอ สิ่งที่ห้ามทำคือเปลี่ยนคำถามระหว่างรอบ เพราะตัวเลขจะเทียบกันไม่ได้ และอย่าตีความการขยับ 1–2 คำตอบเป็นแนวโน้ม เพราะ AI ตอบไม่เหมือนเดิมทุกครั้งอยู่แล้ว",{"question":752,"answer":753},"ทำไมไม่ใช้เครื่องมืออย่าง Semrush หรือ Ahrefs ไปเลย?","ใช้ได้ถ้ามีอยู่แล้ว เครื่องมือพวกนั้นวัดตัวเลขชุดเดียวกัน (mentions, citations, share of voice) และมีข้อมูลคู่แข่งให้พร้อม ข้อดีของการทำเองคือได้คำตอบดิบทั้งหมดมาอ่าน เลือกคำถามจากคำค้นจริงของเว็บเราเอง และเพิ่มโมเดลหรือคำถามได้ทันทีโดยไม่ติดแพ็กเกจ",{},true,null,[758],"2026-11-06-seo-aeo-geo-ai-search.md",{"title":106,"description":738},{"loc":102,"images":761,"lastmod":103},[762,763,764,765,766],{"loc":120},{"loc":154},{"loc":302},{"loc":314},{"loc":450},"blogs\u002F2026-11-09-ai-search-visibility",[769,770],"AI","SEO","i7FSm1611ssdU1T9sKTFkOiBlASDjjRuy3_62HiWBNw",[773],{"id":774,"path":97,"title":775,"date":98,"tags":776},"content\u002Fblogs\u002F2026-11-06-seo-aeo-geo-ai-search.md","SEO vs AEO vs GEO: ทำเว็บไซต์ยุค AI Search ควรเน้นอะไร?",[769,777],"Development",[779,781,786],{"id":774,"path":97,"title":775,"date":98,"tags":780},[769,777],{"id":782,"path":94,"title":783,"date":95,"tags":784},"content\u002Fblogs\u002F2026-11-04-ai-native-sdlc.md","AI-native SDLC คืออะไร? เมื่อใช้ AI เขียน Code แล้ว ต้องปรับ Workflow ตรงไหนบ้าง",[769,785],"Software Development",{"id":787,"path":91,"title":788,"date":92,"tags":789},"content\u002Fblogs\u002F2026-11-02-agent-skills-security-check.md","โหลด Agent Skills ฟรีมาใช้ ต้องระวังอะไร และตรวจสอบอย่างไร?",[769,777],1794221903159]