APN รายงานการพัฒนาเว็บไซต์
apnth.com ↗

รายงานสรุปงานพัฒนา · 8–11 มิถุนายน 2026

การพัฒนาเว็บไซต์
APN Corporation Interior

สรุปสิ่งที่ทำไปทั้งหมดบน apnth.com จากประวัติการพัฒนา (git) จำนวน 6 รอบ และผลการตรวจ SEO/AEO 2 ฉบับ — เรียบเรียงให้อ่านง่ายทั้งสำหรับผู้บริหารและทีมเทคนิค

0 รอบการพัฒนา (commit)
0 หน้า prerender จริง
0 ข้อ SEO ที่แก้
0 ปิด finding ครบ
0 P0/P1 คงค้าง

ช่วงเวลา: 9777bbb (8 มิ.ย.) → 199960d (11 มิ.ย. 2026) · ที่มาข้อมูล: git log + SEO-AUDIT.md + SEO-AUDIT-SEARCHFIT.md

สรุปสำหรับผู้บริหาร

ภายในช่วง 8–11 มิถุนายน 2026 เว็บไซต์ apnth.com ได้รับการพัฒนาต่อเนื่อง 6 รอบ ตั้งแต่การวางรากฐานเว็บ จนถึงการแก้ปัญหา SEO/AEO ครบทุกระดับความสำคัญ (P0–P2) รวม 22 ข้อ — ปิดได้ครบ 100% โดยยืนยันผลจากไฟล์ที่ build จริง (dist/) จำนวน 93 หน้า

  • 🔍
    มองเห็นได้จริงทั้งเว็บ: เปลี่ยนจากเว็บที่ Google / LINE / AI เห็นแค่หน้าแรก ให้กลายเป็น prerender ทุกหน้าเป็น HTML จริง 93 หน้า — ตัวขูดลิงก์และ AI ที่ไม่รัน JavaScript เห็นเนื้อหาครบ
  • 🚨
    ปิดจุดวิกฤต (P0) หมด: เนื้อหา/แท็กหาย, รูปพรีวิวตอนแชร์พัง, หัวข้อหน้าหาย/ผิด — แก้ครบ
  • ✍️
    เนื้อหาน่าเชื่อถือขึ้น: เขียนหน้า "เกี่ยวกับเรา" และ "ผลงาน" ใหม่ด้วย ทีมงาน/สถิติ/รูปจริง (เลิกใช้ข้อมูลปลอม) เสริมสัญญาณความน่าเชื่อถือ (E-E-A-T)
  • 🇹🇭
    เจาะตลาดไทย: ขยายคีย์เวิร์ดไทยไปยัง "บริษัทรับออกแบบบ้านและคอนโด" และกรุงเทพฯ ทุกหน้าหลัก
  • เร็วและวัดผลได้: เพิ่มความเร็ว/ความเสถียรของหน้า (lazy-load + กำหนดขนาดรูป) และติดตั้งระบบวัดผล GA4 + Ahrefs + Google Search Console

ไทม์ไลน์การพัฒนา (6 รอบ)

เรียงจากเก่าไปใหม่ — แต่ละรอบคือ commit หนึ่งครั้ง พร้อมขนาดการเปลี่ยนแปลง

  1. 9777bbb 8 มิ.ย. 2026 71 ไฟล์

    วางรากฐานเว็บ — APN Corporation Interior portfolio SPA

    ตั้งโครงเว็บ Vue 3 (Composition API) + Vite 5 + Vue Router 4 + Tailwind CSS 3: เลเยอร์ API (projects/blogs/services), store ผลงานแบบ reactive, composable SEO/AEO, ระบบ 3 ฟอนต์, และไฟล์ SEO พื้นฐาน (robots.txt, sitemap.xml, .htaccess)

  2. 1076d91 8 มิ.ย. 2026 17 ไฟล์ · +1,473 / −118

    ทำ Static Site Generation ด้วย vite-ssg

    ก้าวสำคัญที่สุดเชิงเทคนิค: prerender ทุก route เป็น HTML จริงตอน build, ดึงข้อมูลแบบ dynamic จาก API, ทำโค้ดให้ปลอดภัยฝั่ง server (SSR-safe), และส่ง state เพื่อ hydrate แบบไม่กระพริบ พร้อม generate sitemap

  3. 98f729a 11 มิ.ย. 2026 21 ไฟล์ · +476 / −109

    อัปเดต Analytics, SEO และเนื้อหา

    อัปเดต GA4, เพิ่ม Ahrefs Web Analytics, ทำ sitemap.xsl ให้ sitemap อ่านง่าย, เปลี่ยนอีเมลองค์กรเป็น info@apnth.com, เพิ่มหน้า 404 จริง, และเสริมหัวข้อ (H1) ที่ซ่อนไว้ในหลายหน้า

  4. e3ecd1a 11 มิ.ย. 2026 24 ไฟล์ · +2,170 / −931

    แก้ตามผลตรวจ SearchFit (P1 + เนื้อหา)

    เขียนหน้า About ใหม่ด้วยทีม/รูปจริง (เลิก placeholder), เปลี่ยน Portfolio เป็นหน้าโปรไฟล์บริษัท 12 หน้า, จัดลำดับหัวข้อ (heading) ใหม่, ใส่ขนาด+lazy ให้รูปทั่วเว็บ, แก้ GA4 ให้ส่งชื่อหน้าภาษาไทยจริง และเปลี่ยน title เป็นแบบคีย์เวิร์ดนำ

  5. 4e0aef1 11 มิ.ย. 2026 6 ไฟล์ · +627 / −31

    ขยายคีย์เวิร์ดไทย + Portfolio scroll แบบ cinematic

    ขยายคีย์เวิร์ดไป "บริษัทรับออกแบบบ้านและคอนโด" และกรุงเทพฯ ในหน้า Service/Home/Project/Contact/About, เพิ่มบริการ 6 ประเภท + FAQ, และทำ scroll แบบเต็มจอ (parallax/scroll-snap) ในหน้าโปรไฟล์บริษัท โดยเคารพ prefers-reduced-motion

  6. 199960d 11 มิ.ย. 2026 12 ไฟล์ · +755 / −198 ล่าสุด

    ปิด finding SEO/AEO ที่เหลือทั้งหมด (P2)

    เรนเดอร์ FAQ ให้มองเห็นจริง (Home 5 / Service 7), ทำช่องค้นหา /project?q= ให้ทำงานจริง, เปลี่ยนผู้เขียนบทความเป็นบุคคล (Person) + byline, แก้รูปสำรองที่โดเมนพัง, เพิ่ม H1 ไทยหน้า Contact, แก้อักขระเพี้ยน (mojibake) และแปลงหัวข้อหน้า Project จากรูปภาพเป็นข้อความจริง

งานแยกตามหมวด

คลิกที่หัวข้อแต่ละการ์ดเพื่อพับ/ขยายรายละเอียดเชิงเทคนิค

ปัญหารากฐานที่สุดของเว็บคือเป็น SPA แบบ client-rendered ล้วน — แก้ด้วยการ prerender ทุกหน้า

  • ติดตั้ง vite-ssg@0.24.3 (ปักเวอร์ชันไว้เพื่อไม่ให้ meta หายเงียบ ๆ จากปัญหา dependency)
  • Prerender ทุก route เป็น HTML จริงตอน build — 9 หน้า static + /project/:slug + /blogs/:slug รวม 93 หน้า
  • ดึง slug แบบ dynamic จาก API ตอน build; ถ้า API ล่ม = ข้าม dynamic + เตือน แต่ build ไม่พัง
  • ทำโค้ดให้ SSR-safe: guard localStorage/document, ย้าย window.addEventListener เข้า onMounted
  • ส่ง state ผ่าน provide/inject + __INITIAL_STATE__ → hydrate ไม่กระพริบ
  • .htaccess เสิร์ฟไฟล์ prerender ตรง canonical URL (ไม่ 301 trailing-slash)

ผลลัพธ์: LINE / Facebook / AI ที่ไม่รัน JavaScript เห็น title, meta, JSON-LD และเนื้อหาครบในชุด HTML แรก — ปลดล็อกทั้ง SEO และโอกาสถูกอ้างอิงโดย AI

  • Sitemap: generate ตอน build (93 URL) + hreflang th/x-default + lastmod รายหน้าจาก updated_at จริงของบทความ
  • หน้า 404 จริง: เพิ่ม NotFoundView + noindex แทนการ redirect ทุก URL ผิดไปหน้าแรก (เลิก soft 404)
  • รูป OG/logo ที่ 404: ชี้ og:image ไป hero_banner.png ที่มีจริง และถอด logo ที่หายออกจาก schema
  • Structured data ครบ: Organization / LocalBusiness, WebSite + SearchAction, FAQPage, CollectionPage, Service, CreativeWork, Blog, Article — ผูก Breadcrumb 3 ระดับภาษาไทย
  • SearchAction ทำงานจริง: /project?q= กรองผลงานจริง + sync สองทางกับ URL
  • robots.txt, canonical, hreflang ต่อหน้า — ครบและถูกหลัก

ผลลัพธ์: หน้าโครงการและบทความถูกค้นพบและจัดทำดัชนีได้ครบ พร้อม schema ที่ช่วยให้ทั้ง Google และ AI เข้าใจเนื้อหา

จุดที่การตรวจรอบสองจับได้เพิ่ม — เนื้อหา "ปลอม/ว่าง" ที่ index ได้จริง ถูกแก้ทั้งหมด

  • หน้า About เขียนใหม่ทั้งไฟล์: ลบทีม/สถิติ/รูป placeholder (via.placeholder.com) → ผู้บริหาร 3 คน + ทีม 11 คนจริง, รูป self-hosted, schema AboutPage + Person
  • หน้า Portfolio: จากเรนเดอร์ว่างเปล่า → หน้าโปรไฟล์บริษัท 12 หน้าจริง พร้อม alt ภาษาไทย + ปุ่มลิงก์ภายใน
  • FAQ มองเห็นได้จริง: Home 5 ข้อ / Service 7 ข้อ จาก source เดียวกับ JSON-LD (เนื้อหากับ markup ไม่มีทางเพี้ยนจากกัน) → ได้ประโยชน์ด้าน AEO
  • ผู้เขียนบทความ: เปลี่ยน Article.author จาก Organization → Person (บุคคลจริง) + byline ที่มองเห็น
  • อีเมลองค์กร: Gmail → info@apnth.com (แก้ครบ 5 จุด) เพื่อความสอดคล้องและความน่าเชื่อถือ
  • แก้อักขระเพี้ยน: ซ่อม mojibake () ใน fallback ของ material board ให้เป็น curly quotes

ผลลัพธ์: หน้าที่สร้างความเชื่อมั่นหลักของบริษัทออกแบบ (About/Portfolio) มีเนื้อหาจริง ลดความเสี่ยงด้าน helpful-content และเสริม E-E-A-T โดยตรง

  • H1 ทุกหน้า: เพิ่ม <h1 class="sr-only"> คีย์เวิร์ดไทย (หนึ่ง H1 ต่อหน้า) คงดีไซน์อังกฤษเดิมไว้
  • Title แบบคีย์เวิร์ดนำ: เปลี่ยนรูปแบบเป็น "<คีย์เวิร์ดไทย> — APN..." แทนการเอาแบรนด์ขึ้นก่อน
  • ขยายคีย์เวิร์ด: บริษัทรับออกแบบบ้านและคอนโด, รีโนเวท, บิวท์อิน, ออฟฟิศ, โรงแรม, Shop, กรุงเทพฯ (กทม.)
  • หน้า Service: เพิ่มบริการ 6 ประเภท + hasOfferCatalog + areaServed = Bangkok
  • หน้า Project: แปลงหัวข้อที่เป็นรูปภาพ (title.png/subtext.png) ให้เป็นข้อความจริง — อ่านได้ทั้งคนและบอต
  • เก็บกวาด: ลบ <meta name="keywords"> ที่ตกยุค และเพิ่ม sr-only H1 ไทยให้หน้า Contact

ผลลัพธ์: ทุกหน้าหลักตอกย้ำคีย์เวิร์ดไทยที่ลูกค้าค้นจริง สอดคล้องกับกลยุทธ์ Thai-first ของเว็บ

  • ใส่ loading="lazy" + decoding="async" + width/height ครบทุก <img> (lazy 31 รูป, eager 7 รูป — เดิม lazy = 0)
  • คงรูป hero/above-the-fold เป็น eager + fetchpriority="high" เพื่อ LCP ที่ดี
  • Cinematic scroll ของหน้าโปรไฟล์บริษัท (scroll-snap + parallax) เปิดเฉพาะเมื่อผู้ใช้ไม่ได้ตั้ง prefers-reduced-motion
  • เปิด gzip ใน .htaccess + code-split ทุก route ด้วย lazy import()

ผลลัพธ์: ลดการเด้งของเลย์เอาต์ (CLS) และช่วย LCP/INP — เก็บแต้ม Core Web Vitals ที่เป็น tiebreaker ของอันดับ

งานต่อไป (polish): แปลงรูปเป็น WebP/AVIF + srcset ซึ่งต้องตั้ง asset pipeline แยก

  • GA4 (G-W8YMEBMZ88): ตั้ง send_page_view:false และยิง pageview ต่อการเปลี่ยน route — เหมาะกับ SPA
  • แก้ชื่อหน้า GA4: เดิมส่ง title อังกฤษจาก router — แก้ให้ส่ง title ภาษาไทยจริง (รอ nextTick + requestAnimationFrame) และเปลี่ยนเป็น event page_view
  • เพิ่ม Ahrefs Web Analytics (async, ไม่ render-blocking)
  • เพิ่ม Google Search Console verification token
  • เพิ่ม sitemap.xsl ให้แสดง sitemap ในรูปแบบที่อ่านง่าย

ผลลัพธ์: ข้อมูลใน GA4 ตรงกับหน้าจริงที่ผู้ใช้เห็น และพร้อมยืนยัน/ติดตามผลใน Search Console

ตารางผลตรวจ SEO/AEO (22 ข้อ — ปิดครบ)

รวมจาก SEO-AUDIT.md (ตรวจรอบแรก) และ SEO-AUDIT-SEARCHFIT.md (ตรวจไขว้รอบสอง) — กรองตามระดับความสำคัญได้

P0

เว็บเป็น CSR SPA ล้วน ไม่มี prerender

→ ทำ SSG ด้วย vite-ssg — prerender ทุกหน้าเป็น HTML จริง 93 หน้า

แก้แล้ว
P0

รูป OG (og-cover.jpg) และ logo.png ไม่มีจริง (404)

→ ชี้ OG ไป hero_banner.png ที่มีจริง และถอด logo ที่หายออกจาก schema

แก้แล้ว
P0

หน้าแรกไม่มี <h1>

→ เพิ่ม sr-only H1 คีย์เวิร์ดไทย คงดีไซน์ hero เดิม

แก้แล้ว
P0

ProjectDetail H1 ฮาร์ดโค้ดเป็น "PROJECT"

→ ใช้ชื่อโครงการจริงเป็น H1 และเปลี่ยน H2 เป็น "รายละเอียดโครงการ"

แก้แล้ว
P1

sitemap.xml static ขาด URL โครงการ/บทความ

→ generate ตอน build 93 URL + lastmod รายหน้า + hreflang

แก้แล้ว
P1

URL ที่ไม่รู้จัก redirect ไปหน้าแรก (soft 404)

→ ทำ NotFoundView จริง + noindex คง URL เดิมไว้

แก้แล้ว
P1

Portfolio / Project list / BlogDetail ไม่มี H1

→ เพิ่ม H1 ครบทุกหน้า (BlogDetail ใช้ชื่อโพสต์จริง)

แก้แล้ว
P1

H1 เป็นภาษาอังกฤษล้วนบนเว็บ Thai-first

→ ใช้ sr-only H1 คีย์เวิร์ดไทยทุกหน้า, demote หัวข้ออังกฤษเป็น div/p

แก้แล้ว
P1

อีเมลองค์กรเป็น Gmail (NAZCLUB153@GMAIL.COM)

→ เปลี่ยนเป็น info@apnth.com ครบ 5 จุด

แก้แล้ว
P1

หน้า About ใช้ทีม/สถิติ/รูป placeholder ปลอม เจอรอบ 2

→ เขียนใหม่ด้วยทีม/สถิติ/รูปจริง + schema Person

แก้แล้ว
P1

หน้า Portfolio เรนเดอร์ว่างเปล่า (มีแค่ H1 ซ่อน) เจอรอบ 2

→ ทำหน้าโปรไฟล์บริษัท 12 หน้าจริง + alt ไทย

แก้แล้ว
P2

37 <img> ไม่มี loading=lazy และไม่มี width/height

→ ใส่ lazy + decoding + ขนาดครบทุกรูป (lazy 31 / eager 7)

แก้แล้ว
P2

ServiceView มี <h1> สองตัว

→ demote เหลือ H1 เดียวต่อหน้า

แก้แล้ว
P2

<meta name="keywords"> ที่ตกยุค

→ ลบออกจาก index.html ทั้งบล็อก

แก้แล้ว
P2

SearchAction ชี้ /project?q= ที่ไม่มี handler จริง

→ ทำช่องค้นหาจริง + กรองผลงาน + sync URL สองทาง

แก้แล้ว
P2

FAQ อยู่แค่ใน JSON-LD ไม่มีส่วนที่มองเห็น

→ เรนเดอร์ FAQ ให้มองเห็น (Home 5 / Service 7) จาก source เดียว เพื่อ AEO

แก้แล้ว
P2

Article.author เป็น Organization ไม่ใช่ Person

→ เปลี่ยนเป็น Person (บุคคลจริง) + byline ที่มองเห็น

แก้แล้ว
P2

GA4 ส่ง page_title อังกฤษ ไม่ตรง title ไทยจริง เจอรอบ 2

→ แก้ให้ส่ง title ไทยจริงหลัง flush + ใช้ event page_view

แก้แล้ว
P2

ContactView H1 เป็นอังกฤษล้วน ("CONTACT US") เจอรอบ 2

→ เพิ่ม sr-only H1 ไทย + demote หัวข้ออังกฤษเป็น div

แก้แล้ว
P2

รูป fallback ชี้โดเมนพัง (via.whooopy / via.placeholder) เจอรอบ 2

→ แทนด้วย inline SVG data URI ที่ self-hosted

แก้แล้ว
P2

ProjectView หัวข้อหน้าเป็นรูปภาพ (text-as-image) เจอรอบ 2

→ แปลงเป็นข้อความจริง คงดีไซน์เดิม + แก้สีให้ตรง brand

แก้แล้ว
P2

material board fallback มีอักขระเพี้ยน (mojibake �) เจอรอบ 2

→ ซ่อมเป็น curly quotes “ ” ทุกจุด

แก้แล้ว

หมายเหตุ & ระดับความเชื่อมั่น

✅ ยืนยันจากโค้ด + build จริง

ทุกข้อที่อ้างไฟล์/บรรทัด และข้อที่ยืนยันกับ dist/ (prerender 93 หน้า, sitemap, ไม่มี asset 404, title ไทย) มั่นใจสูงสุด

⚠️ ต้องยืนยันภายนอก

สถานะ index จริงใน Google, การยืนยัน Search Console / Google Business Profile, ค่า Core Web Vitals ในสนามจริง และกล่อง info@apnth.com รับเมลได้จริง

📌 งานต่อไป (polish)

WebP/AVIF + srcset, เพิ่ม gzip/Cache-Control/Brotli ฝั่งเซิร์ฟเวอร์, ทำ llms.txt, และยืนยัน index ผ่าน URL Inspection

รายงานนี้สังเคราะห์จาก git log (commit 9777bbb199960d) และไฟล์ SEO-AUDIT.md + SEO-AUDIT-SEARCHFIT.md ของ repository apn_web — ไม่ได้รัน production crawl หรือดึงข้อมูล GA4/Search Console จริง