Anti-Spoofing & Authorized Digital Sellers
app-ads.txt Setup & Crawler Verification
ใบรับรองเจ้าของแอป: ป้องกันรายได้รั่วไหล & ดัน Fill Rate ให้เต็ม 100%
หนึ่งในการเตือนสีแดงยอดฮิตบนหน้าแดชบอร์ด Google AdMob คือ "To prevent significant impact to your revenue, download and set up app-ads.txt" หากปล่อยทิ้งไว้ ผู้ลงโฆษณา (Advertisers) จะถือว่าแอปของคุณอาจเป็นของปลอมที่ถูกแอบอ้าง (Ad Spoofing) และจะระงับการยิงโฆษณาราคาแพงเข้าเกมทันที
The Mechanics of Ad Fraud
1. ทำไมไม่มี app-ads.txt รายได้ถึงหายไปเฉยๆ?
ปัญหา Ad Spoofing & Domain Fraud
ในอดีต มิจฉาชีพจะสร้างแอปพลิเคชันเถื่อนหรือใช้โปรแกรมบอทจำลองคำขอโฆษณา โดยแอบอ้างว่าโฆษณานั้นมาจากเกมชื่อดังของคุณ แบรนด์ใหญ่ที่จ่ายค่าโฆษณาตัวละ $30 eCPM จึงเสียเงินฟรีให้กับมิจฉาชีพ แทนที่จะส่งเงินเข้ากระเป๋าคุณ
ห่วงโซ่การยืนยันสิทธิ์ (Verification Chain)
มาตรฐานนี้ทำให้ระบบตรวจสอบย้อนกลับได้อย่างชัดเจน 100% ว่าใครคือผู้รับเงินที่แท้จริง:
IAB Standard Format
2. ไวยากรณ์และโครงสร้างเนื้อหาในไฟล์ app-ads.txt
ไฟล์ app-ads.txt คือไฟล์ Plain Text (.txt ธรรมดา ห้ามเป็น Word หรือ RTF) แต่ละบรรทัดจะแบ่งออกเป็น 4 ฟิลด์ คั่นด้วยเครื่องหมายจุลภาค (,):
f08c47fec0942fa0 เสมอ)Zero-Cost Infrastructure
3. วิธีโฮสต์ไฟล์ฟรี 100% ด้วย GitHub Pages (ไม่มีค่าโดเมน)
หากคุณยังไม่มีเว็บไซต์สตูดิโอส่วนตัว คุณสามารถใช้ GitHub Pages เป็นโฮสติ้งฟรีที่มีความเสถียรสูงและรองรับมาตรฐานของ Google และ Apple ได้อย่างสมบูรณ์แบบ ทำตาม 5 ขั้นตอนด้านล่างนี้:
สร้าง Repository ใหม่บน GitHub
สมัครบัญชีที่ github.com กดสร้าง Repository ใหม่ โดยตั้งชื่อแบบพิเศษตามรูปแบบ:
username.github.io (แทนที่ username ด้วยชื่อบัญชี GitHub ของคุณ) และตั้งสถานะเป็น Public
สร้างไฟล์ app-ads.txt บน Root Directory
กดปุ่ม Add file → Create new file ตั้งชื่อไฟล์ตรงช่อง Name ว่า:
app-ads.txt จากนั้นวางโค้ด AdMob / Mediation ที่คัดลอกมาลงในช่องเนื้อหา แล้วกด Commit Changes
เพิ่มไฟล์ index.html สำหรับหน้า Landing Page
สโตร์บางแห่งและ Crawler ของ AdMob จะตรวจเช็คว่า Root URL เปิดได้หรือไม่ ให้สร้างไฟล์ index.html ไว้ที่หน้าแรกด้วย โดยใส่ข้อความแนะนำเกมสั้นๆ หรือใส่เนื้อหา Privacy Policy ควบคู่กันไป
เปิดใช้งาน GitHub Pages
เข้าไปที่แท็บ Settings → Pages ในหัวข้อ Build and deployment เลือก Source เป็น Deploy from a branch และเลือก Branch เป็น main (root) จากนั้นกด Save รอระบบบิลด์ประมาณ 1–2 นาที
ทดสอบเปิดผ่านเว็บเบราว์เซอร์จริง
ลองพิมพ์ URL บนเบราว์เซอร์:
https://username.github.io/app-ads.txt
หากหน้าเว็บแสดงข้อความโค้ดชัดเจน ไม่มี Error 404 แสดงว่าพร้อมนำไปใช้งานทันที!
Connecting the Dots
4. วิธีผูก Developer Website ใน Google Play & App Store
AdMob Bot ไม่ได้ค้นหาไฟล์โดยตรงจากชื่อเกม แต่จะเข้าไปอ่านจากช่อง Developer Website (เว็บไซต์ผู้พัฒนา) ใน Store Listing ดังนั้นคุณต้องนำ URL เว็บไซต์หลักไปกรอกในสโตร์ทั้งสองแห่ง:
Google Play Console
- เข้าสู่คอนโซลเกมของคุณ → เมนู Grow → Store presence → Store settings
- เลื่อนลงมาที่หัวข้อ Store listing contact details
- ในช่อง Website ให้กรอก Root Domain ของคุณ เช่น:
https://username.github.io - ⚠️ ห้ามใส่ /app-ads.txt ต่อท้ายในช่องนี้เด็ดขาด ให้ใส่เฉพาะโดเมนหลักเท่านั้น
- กดปุ่ม Save ที่มุมล่างขวา
Apple App Store Connect
- เข้าสู่ App Store Connect → เมนู Apps → เลือกเกมของคุณ
- ในแถบด้านข้าง เลือกเวอร์ชันเกมปัจจุบัน (เช่น 1.0 Prepare for Submission)
- เลื่อนไปที่ส่วน General App Information
- ในช่อง Marketing URL (URL สำหรับการตลาด) หรือ Support URL ให้กรอก Root Website URL เดียวกัน
- เมื่ออัปเดตเวอร์ชันและผ่านการตรวจ AdMob Bot จะเริ่มวิ่งเข้ามาตรวจสอบทันที
Diagnostics & Status
5. การตรวจสอบสถานะ Crawler และการแก้ปัญหาที่พบบ่อย
| สถานะใน AdMob | ความหมาย | แนวทางแก้ไข |
|---|---|---|
| Authorized (สีเขียว) | ระบบตรวจพบบัญชีและสิทธิ์ถูกต้อง 100% | สมบูรณ์แบบ ไม่ต้องดำเนินการใดๆ เพิ่มเติม |
| Not Found (สีเหลือง) | บอทเข้าไปที่ URL แล้วแต่หาไฟล์ไม่พบ (404) | เช็คตัวสะกดชื่อไฟล์ ต้องเป็นพิมพ์เล็กทั้งหมด app-ads.txt ห้ามมีตัวพิมพ์ใหญ่ |
| Unauthorized (สีแดง) | พบบัญชี แต่ Publisher ID ไม่ตรงกับในแอป | ตรวจเช็ครหัส pub-XXXXXXXXXX ให้ตรงกับ AdMob Account ID ปัจจุบัน |
1. Subdomain Trap: วางไฟล์ไว้ใน Sub-path ลึกเกินไป เช่น site.com/games/mygame/app-ads.txt (ผิด! บอทจะตรวจเฉพาะที่ Root Domain เท่านั้น คือ site.com/app-ads.txt)
2. Time Lag (ระยะเวลาบอททำงาน): หลังจากผูก URL ใน Store แล้ว AdMob Crawler จะใช้เวลาประมาณ 24 ถึง 72 ชั่วโมง ในการสแกนรอบถัดไป หากสถานะยังไม่เปลี่ยนทันที อย่าเพิ่งตกใจ
3. Redirect Error: เว็บไซต์มีการ Redirect วนซ้ำ หรือติดระบบ Firewall สกัดบอทของ Google ไว้ ให้ทดสอบเปิดไฟล์ผ่าน Incognito Mode ในเบราว์เซอร์ว่าเปิดได้ตรงๆ หรือไม่
Deliverables of Day 6