15 องค์ประกอบ 30 คำถาม

ฟิลเตอร์ลิสต์บล็อกได้เฉพาะสิ่งที่เคยมีคนเห็นและเขียนกฎเอาไว้แล้ว แต่ตัวนี้อ่านหน้าเว็บจริงๆ ลองดู Jev ไล่ดูทีละองค์ประกอบของเว็บข่าว ให้คะแนนว่าแต่ละอันเป็นโฆษณาแค่ไหน แล้วส่งตัวเลขกลับมาให้โค้ดของคุณตัดสินเอง จากนั้นลองรันหน้าเดียวกันด้วยฟิลเตอร์ลิสต์และด้วย LLM แล้วดูว่าแต่ละแบบต้องแลกด้วยอะไร

ลองรันให้ครบทั้งสามแบบ เพื่อเติมตารางคะแนนด้านล่าง
🔒dailyledger.example/technology
ไม่มีตัวบล็อก
เดลี เลดเจอร์
ด่วนวุฒิสภาผ่านร่างกฎหมายอุดหนุนอุตสาหกรรมชิป 68 ต่อ 31 เสียง ส่งต่อให้ประธานาธิบดีลงนาม
adservly.net · 728×90
ทองคำพุ่งไม่หยุด 📈
เปิดบัญชีซื้อขายทองใน 4 นาที ค่าคอม 0% เฉพาะสัปดาห์นี้
รับข้อเสนอ
เซมิคอนดักเตอร์

ผู้ผลิตชิปเร่งปรับสายการผลิต ก่อนหมดช่วงเงินอุดหนุน

โรงงานรับจ้างผลิตรายใหญ่สามแห่งเลื่อนแผนลงทุนเร็วขึ้นหนึ่งไตรมาส เพราะเชื่อว่าสิทธิประโยชน์รอบนี้จะไม่ถูกต่ออายุ

สื่อ

ส่องวงการโฆษณา ที่กำลังหาวิธีรู้จักผู้อ่านแบบใหม่

เมื่อคุกกี้บุคคลที่สามหายไป คนซื้อโฆษณาหันไปจ่ายให้กับพื้นที่สปอนเซอร์ที่วัดผลได้ ฝั่งสำนักข่าวบอกว่าเงินโฆษณากำลังไหลตามความสนใจ ไม่ใช่ตามฐานผู้อ่านอีกต่อไป

ฝากประจำรับดอกเบี้ย 4.8% กับ MetaBank

สนับสนุนโดย MetaBank · คุ้มครองเงินฝากตามกฎหมาย · อัตราอาจเปลี่ยนแปลง

7 สัญญาณว่าเน็ตบ้านคุณถูกเจาะไปแล้ว

เราเตอร์ส่วนใหญ่ตั้งค่ามาจากโรงงานแบบที่ใครก็ค้นเจอ นี่คือสิ่งที่ทีมความปลอดภัยของเราตรวจเป็นอย่างแรก และการตั้งค่าเดียวที่สำคัญที่สุด

ของที่เราเลือก: 5 โน้ตบุ๊กสำหรับนักศึกษา

  • ดีที่สุดโดยรวม — Lenovo Yoga 7i
  • แบตอึดที่สุด — MacBook Air M4
เราอาจได้รับค่าคอมมิชชันเมื่อคุณซื้อผ่านลิงก์เหล่านี้
ตลาดทุน

ราคาหน่วยความจำลดลงต่อเนื่องเป็นเดือนที่สาม

นักวิเคราะห์ระบุว่าภาวะล้นตลาดของ DRAM เริ่มสะท้อนมาที่อัตรากำไรของผู้ผลิตมือถือแล้ว

© 2026 เดลี เลดเจอร์ลงโฆษณากับเราร่วมงานกับเราความเป็นส่วนตัวจริยธรรมข่าว
×

ร่วมกับผู้อ่าน 200,000 คน

สรุปข่าวเช้า ฟรี ทุกวันจันทร์ถึงศุกร์ 7 โมงเช้า

you@example.comสมัคร
เราให้ความสำคัญกับความเป็นส่วนตัวของคุณเราและพาร์ตเนอร์อีก 847 รายจัดเก็บและเข้าถึงข้อมูลบนอุปกรณ์ของคุณ
ยอมรับทั้งหมดจัดการ

หมายเหตุเรื่องแอนิเมชัน: คำตอบของ Jev ถูกไล่แสดงทีละชิ้นเพื่อให้อ่านทัน ของจริงคำถามทั้ง 30 ข้อกลับมาพร้อมกันในรอบเดียว สิ่งที่คุณเห็นไล่ทีละชิ้นคือลูปในโค้ดของคุณที่กำลังเอาคำตอบไปใช้ ไม่ใช่โมเดลกำลังคิด

องค์ประกอบแปดชิ้นเดียวกัน สามเครื่องมือ

แปดชิ้นนี้คือตัวตัดสินว่าตัวบล็อกโฆษณาใช้ได้จริงหรือเปล่า ส่วนชิ้นง่ายๆ อย่างหัวเว็บ ข่าวสามชิ้น และฟุตเตอร์ ทุกเครื่องมือทำถูกหมด คอลัมน์จะเติมเองเมื่อคุณรันสแกนแต่ละแบบด้านบน

✓ ทำตามกติกาที่เขียนไว้ · ~ พอรับได้ แต่ไม่ตรงกับกติกา · ✗ ผิด

จริงๆ แล้วเราถาม Jev ว่าอะไร ในแต่ละชิ้น

โค้ดของคุณไล่ดู DOM แล้วสร้าง state ก้อนเล็กๆ หนึ่งก้อนต่อหนึ่งองค์ประกอบ ว่ามันเขียนว่าอะไร ลิงก์ไปไหน ขนาดเท่าไร อยู่ตรงไหนของหน้า ไม่มีการส่งภาพ เพราะ Jev อ่านข้อความและข้อมูลที่มีโครงสร้าง ซึ่งเบราว์เซอร์มีอยู่แล้วทั้งคู่

จากนั้นถามชิ้นละ 2 ข้อ ไม่ใช่ถามว่า “ควรทำอะไรกับสิ่งนี้” เพราะนั่นเป็นการตัดสินใจของคุณ และขึ้นกับการตั้งค่าที่ Jev ไม่รู้ด้วย ถามแค่ว่า มันเป็นโฆษณาแค่ไหน และ มันคือของประเภทอะไร

ในตัวอย่างข้างล่าง คำถามและคำอธิบายตัวเลือกเขียนเป็นภาษาอังกฤษ ส่วน state คือข้อความไทยที่ดึงมาจากหน้าเว็บจริง ซึ่งแปลว่าโมเดลต้องอ่านไทยออก และนั่นคือสิ่งที่คุณต้องทดสอบกับข้อมูลของตัวเองก่อน ไม่ใช่เชื่อตามเดโมนี้

// หนึ่งชิ้นจากทั้งหมดสิบห้าชิ้น
state = {
  url: "dailyledger.example/technology",
  element: {
    tag: "article", classes: "story",
    text: "ได้รับการสนับสนุน · Nordvault — 7 สัญญาณว่าเน็ตบ้าน
           คุณถูกเจาะไปแล้ว — เราเตอร์ส่วนใหญ่ตั้งค่ามาจาก
           โรงงานแบบที่ใครก็ค้นเจอ…",
    links: ["nordvault.example/?utm_source=ledger&utm_campaign=q3"],
    size: "412x132", slot: "ชิ้นที่ 3 ในคอลัมน์ข่าวหลัก"
  },
  page: "หน้ารวมข่าวเทคโนโลยี 6 ข่าว 1 แถบข้าง"
}

questions = {
  isAd: noul("This element is a paid placement whose purpose is to
             promote a product or service, rather than editorial
             content the reader came for."),

  kind: choice("What kind of element is this?", {
    display_ad:        "A bought banner or unit from an ad network.",
    sponsored_content: "Editorial-looking content paid for by a brand.",
    affiliate_block:   "Editorial picks that earn a commission on clicks.",
    newsletter_modal:  "The site asking for an email address.",
    cookie_banner:     "A consent or privacy prompt.",
    house_promo:       "The site promoting its own subscription.",
    content:           "What the reader came for, or site furniture."
  })
}

// 96 มิลลิวินาทีต่อมา ได้ครบทั้งสิบห้าชิ้นพร้อมกัน
answers["07"] = { isAd: { noul: 0.93 },
                  kind: { choice: "sponsored_content", confidence: 0.88 } }

คำตอบที่ได้ยังไม่ได้ตัดสินใจอะไรเลย การตัดสินใจอยู่ในโค้ดของคุณเองสิบเอ็ดบรรทัด และมันคือส่วนที่ผู้ใช้เถียงกันจริงๆ จึงควรอยู่ในที่ที่คุณแก้ได้โดยไม่ต้องไปยุ่งกับโมเดล

function policy(a, settings) {
  // อะไรที่ขัดจังหวะการอ่าน ตัดทิ้งหมด ไม่ต้องสนคะแนนโฆษณา
  if (a.kind.choice === "cookie_banner") return "hide";
  if (a.kind.choice === "newsletter_modal") return "hide";

  // มั่นใจว่าเป็นโฆษณา: ซ่อนไปเลย ยกเว้นผู้อ่านตั้งค่าไว้ว่า
  // ให้ติดป้ายคอนเทนต์สปอนเซอร์แทนการซ่อน
  if (a.isAd.noul >= 0.85)
    return (a.kind.choice === "sponsored_content" && settings.labelSponsored)
      ? "label" : "hide";

  // ก้ำกึ่งจริงๆ: หรี่ลงและติดป้าย แต่ไม่ทำให้หายไป
  if (a.isAd.noul >= 0.45) return "dim";

  return "keep";
}

ทำไมตัวเลขดีกว่าคำตัดสิน

  • กล่องแอฟฟิลิเอตได้ 0.58 นั่นไม่ใช่ความผิดพลาด แต่คือความจริง เพราะมันเป็นทั้งเนื้อหาและการขายอย่างละครึ่ง โมเดลที่ตอบแค่ “ใช่” หรือ “ไม่ใช่” จะปิดบังความจริงข้อนี้
  • ผู้อ่านสองคนอยากได้ตัวบล็อกคนละแบบ คนหนึ่งอยากซ่อนคอนเทนต์สปอนเซอร์ อีกคนอยากให้แค่ติดป้าย คำตอบชุดเดียวกัน แก้แค่การตั้งค่า ไม่ต้องเขียนพรอมต์ใหม่
  • เกณฑ์ตัวเลขทดสอบได้ ขยับ 0.85 เป็น 0.9 แล้วรันกับหน้าเว็บที่เก็บไว้ นับดูว่าอะไรเปลี่ยนบ้าง แต่คุณทดสอบย้อนหลังกับข้อความหนึ่งย่อหน้าไม่ได้
  • ประเภทของชิ้นงานรับหน้าที่ที่เหลือ แบนเนอร์คุกกี้ไม่ใช่โฆษณาเลย ได้แค่ 0.11 แต่ก็ยังโดนซ่อน เพราะคำถามข้อที่สองบอกว่ามันคืออะไร

การไล่ดูทีละชิ้นของจริงเป็นแบบไหน

  • หนึ่งรีเควสต์ สามสิบคำถาม คำถามที่ไม่ขึ้นต่อกันบนหน้าเดียวกันรันขนานกันได้ องค์ประกอบสิบห้าชิ้นจึงไม่ได้แปลว่าต้องยิงสิบห้ารอบ
  • ทำส่วนที่เห็นบนจอก่อน 96 มิลลิวินาทีก็ยังมาหลังเบราว์เซอร์วาดหน้าเสร็จ ของจริงจึงควรจัดประเภทเฉพาะชิ้นที่มองเห็นก่อน แล้วค่อยทยอยทำที่เหลือตอนเลื่อนหน้า
  • แคชตามเทมเพลต ไม่ใช่ตามหน้า ทุกบทความในเว็บนี้หน้าตาเหมือนกัน สิ่งที่คุณจ่ายคือค่าจัดประเภท “เลย์เอาต์” และจ่ายครั้งเดียว
  • หน้าเดิม คำตอบเดิม รันสแกนซ้ำได้การกระจายตัวชุดเดิม ภาพสกรีนช็อตและเทสต์ของคุณจึงนิ่ง

กฎ ข้อความ และวิจารณญาณ

ฟิลเตอร์ลิสต์คือรายการของสิ่งที่มีคนเคยเห็นมาก่อน ส่วน LLM เข้าใจหน้าเว็บก็จริงแต่ใช้เวลาเป็นวินาทีและคิดเงินเป็นสตางค์ ส่วน Jev อยู่ตรงกลางแบบแคบๆ คือตอบเฉพาะคำถามที่คุณกำหนดไว้ และตอบเร็วพอที่จะรันกับทุกองค์ประกอบของทุกหน้า

ฟิลเตอร์ลิสต์LLMJev
ใช้อะไรจับคู่เซเลกเตอร์และ URL ที่อาสาสมัครจดไว้หลังจากเห็นโฆษณานั้นมาแล้วความหมาย โดยอ่านจากข้อความในหน้าความหมาย โดยอ่านจากข้อความในหน้า
เวลาต่อหนึ่งหน้าไม่ถึงหนึ่งมิลลิวินาที2–5 วินาที และมาหลังจากหน้าเว็บแสดงผลไปแล้วราว 96 มิลลิวินาที สำหรับทั้งชุด
ค่าใช้จ่ายต่อหน้าฟรีราว $0.012 ตามราคาโมเดลแนวหน้า วันละพันหน้าคือ $12ราว $0.0001 วันละพันหน้าคือไม่ถึงหนึ่งบาท
โฆษณาที่ยังไม่เคยมีใครเห็นมองไม่เห็นจนกว่าจะมีคนไปเขียนกฎเพิ่มจับได้จับได้
คลาสที่เปลี่ยนชื่อหรือสุ่มใหม่แพ้ตั้งแต่ขั้นตอนบิลด์ไม่เกี่ยว เพราะมันอ่านคำไม่เกี่ยว เพราะมันอ่านคำ
โพสต์แบบ “ได้รับการสนับสนุน”มาร์กอัปเหมือนบทความจริงทุกอย่าง ไม่มีกฎไหนแยกออกจับได้จับได้ และติดป้ายบอกว่าเป็นอะไร
ของที่ก้ำกึ่งไม่มีแนวคิดเรื่องก้ำกึ่งเลยให้ความเห็นมา แต่ไม่ได้ให้ปุ่มปรับให้ตัวเลขที่ผ่านการปรับเทียบ มาให้คุณตั้งเกณฑ์เอง
สิ่งที่โค้ดได้รับค่า true/false ต่อหนึ่งกฎข้อความอิสระหรือ JSON ที่ต้องแกะเอง ส่วนใหญ่เป็นเซเลกเตอร์ CSS ที่พังง่ายความน่าจะเป็นและประเภท ต่อหนึ่งองค์ประกอบ
รันหน้าเดิมสองครั้งเหมือนเดิมเป๊ะชิ้นที่ก้ำกึ่งอาจตอบไม่เหมือนเดิมได้การกระจายตัวชุดเดิม
ทำงานบนเครื่องผู้ใช้ได้ไม่ได้ ต้องส่งหน้าเว็บขึ้นเซิร์ฟเวอร์ไม่ได้ ต้องส่งหน้าเว็บขึ้นเซิร์ฟเวอร์
เก่งเรื่องบล็อกแอดเซิร์ฟเวอร์ที่รู้จักแล้วตั้งแต่ชั้นเน็ตเวิร์ก ฟรี และก่อนโหลดแม้แต่ไบต์เดียวหน้าเว็บแปลกๆ ที่ยาก งานวิเคราะห์แบบออฟไลน์ และการช่วยร่างกฎกับเกณฑ์ตั้งแต่แรกตัดสินทุกองค์ประกอบของทุกหน้า อย่างต่อเนื่อง ในราคาที่ทำแบบนั้นไหว

ฟิลเตอร์ลิสต์รู้ว่าโฆษณาเมื่อวานหน้าตาเป็นอย่างไร ส่วนโมเดลที่ให้วิจารณญาณบอกได้ว่าองค์ประกอบชิ้นนี้กำลังทำอะไรอยู่บนหน้าเว็บวันนี้ แล้วส่งตัวเลขกลับมาให้โค้ด แทนที่จะส่งความเห็นมา

สิ่งที่ควรรู้ไว้

อย่าทิ้งฟิลเตอร์ลิสต์

นี่ไม่ใช่ของมาแทนที่ กฎในฟิลเตอร์ลิสต์บล็อกแอดเซิร์ฟเวอร์ที่รู้จักแล้วได้ตั้งแต่ชั้นเน็ตเวิร์ก ฟรี และก่อนโหลดแม้แต่ไบต์เดียว ส่วนการจัดประเภทองค์ประกอบเกิดขึ้นหลังโฆษณาโหลดมาแล้ว คุณประหยัดความสนใจของผู้อ่าน แต่ไม่ได้ประหยัดแบนด์วิดท์หรือกันการเก็บข้อมูล ดีไซน์ที่สมเหตุสมผลคือใช้กฎก่อน แล้วใช้วิจารณญาณกับทุกอย่างที่ยังไม่มีกฎ

ข้อมูลหน้าเว็บออกจากเครื่อง

ตัวบล็อกที่ใช้โมเดลย่อมต้องส่งข้อความในหน้าเว็บขึ้นเซิร์ฟเวอร์ ซึ่งเป็นการแลกที่น่าอึดอัดสำหรับผลิตภัณฑ์ประเภทนี้โดยเฉพาะ คำตอบที่ตรงไปตรงมาคือต้องรันบนเครื่องหรือโฮสต์เอง และนั่นจะทำให้ตัวเลขเวลากับค่าใช้จ่ายข้างบนเปลี่ยนไป เรื่องนี้ควรพูดให้ชัด ไม่ใช่ซุกไว้

มีชนิดข้อมูลชัด ไม่ได้แปลว่าถูก

0.98 ไม่ใช่ข้อพิสูจน์ Jev ตอบนอกเหนือจากตัวเลือกที่คุณกำหนดไม่ได้ พาร์เซอร์ของคุณจึงไม่พัง แต่มันยังเลือกผิดสำหรับองค์ประกอบหนึ่งๆ ได้ และการบล็อกเกินมีต้นทุนจริง ในเดโมนี้ฟิลเตอร์ลิสต์ลบแถบข่าวด่วนทิ้งเพราะกฎแย่ๆ แค่ข้อเดียว ส่วนเกณฑ์ตัวเลขที่ตั้งผิดก็ทำแบบเดียวกันได้ในสเกลที่ใหญ่กว่า

ตัวเลขทั้งหมดสมมติขึ้น

ความน่าจะเป็น เวลา และราคาทุกตัวในแผงข้อมูลสมมติขึ้นเพื่อเดโม ส่วนตัวเลขที่อ้างอิงอยู่เบื้องหลังมาจากที่ TypeSafe เผยแพร่ตอนเปิดตัว คือ 70–500 มิลลิวินาทีต่อหนึ่งรีเควสต์ $42 ต่อโทเคนขาเข้าหนึ่งพันล้าน โทเคนขาออกฟรี และทุกคำตอบมีค่าความมั่นใจที่ผ่านการปรับเทียบ Jev อยู่ในช่วง early access ตั้งแต่ 15 กันยายน 2026

ยังไม่มีใครทำแบบนี้ขายจริง

ทุกวันนี้ยังไม่มีตัวบล็อกโฆษณากระแสหลักเจ้าไหนจัดประเภทองค์ประกอบด้วยโมเดลบนคลาวด์ และหน้านี้เป็นเดโมเพื่อการอธิบาย ไม่ใช่ข้อเสนอให้ไปทำ สิ่งที่เป็นของจริงคือรูปร่างของการตัดสินใจ ได้แก่ ลูปไล่ดูองค์ประกอบ คำถามแคบๆ ชิ้นละข้อ ตัวเลขที่ตอบกลับมา และกติกาที่อยู่ในโค้ด

โมเดลอ่านภาษาไทยได้จริงไหม

เดโมนี้ตั้งสมมติฐานว่าโมเดลอ่านข้อความไทยบนหน้าเว็บออก ซึ่งเป็นสมมติฐานที่หน้านี้ไม่ได้พิสูจน์ คู่มือของ TypeSafe เองก็แนะนำให้วัดผลกับข้อมูลจริงในโดเมนของคุณก่อนใช้งาน ถ้าจะทำจริงกับเว็บไทย ให้เก็บหน้าตัวอย่างสักห้าสิบหน้า ติดป้ายด้วยมือ แล้ววัดดูก่อน