OGP không hiện trên Zalo, Facebook, LinkedIn | Cache, kích thước ảnh, checklist launch

(Cập nhật: 19 tháng 7, 2026 ) OGP Zalo Facebook LinkedIn Open Graph share card SEO
Kết luận

Card không hiện trên Zalo / Facebook / LinkedIn hầu như không phải do “OGP hỏng một cách bí ẩn” — mà do cache scraper, ảnh sai kích thước/URL, hoặc meta chưa lộ ra HTML public. Sửa code xong phải scrap lại; preview local không xóa cache MXH. Trước launch: checklist meta → OGP Preview → debugger từng nền tảng → rồi mới đăng bài.

Launch landing hoặc bài tuyển dụng, team marketing Việt Nam paste link vào Zalo OA / group, Facebook, LinkedIn — và nhận một trong ba: không có ảnh, ảnh cũ tuần trước, chỉ hiện URL trần. Founder hỏi “SEO hỏng à?”. Thường là Open Graph (OGP) + cache.

Bài này đi theo đúng thứ tự debug khi share không ra card, tập trung Zalo/Facebook/LinkedIn (kênh phổ biến cho SME và hiring VN), kèm kích thước ảnh và checklist trước post.

OGP quyết định card thế nào

Các mạng xã hội đọc thẻ trong <head> (không chạy full JS như người dùng nếu bạn render meta chỉ client-side — SSR/SSG hoặc inject đầu đủ):

<meta property="og:title" content="Kawa Dev Tools — công cụ cho developer" />
<meta property="og:description" content="Contrast, OGP, case converter… chạy trên trình duyệt." />
<meta property="og:image" content="https://example.com/og/launch-2026.png" />
<meta property="og:url" content="https://example.com/vi/launch/" />
<meta property="og:type" content="website" />

Thiếu og:image hoặc image relative (/og.png) → nhiều crawler bỏ ảnh. og:url lệch domain (www vs non-www) → cache tách đôi khó xóa.

Twitter/X còn twitter:card, nhưng Facebook/Zalo/LinkedIn chủ yếu dựa Open Graph.


Ba nguyên nhân card “không hiện” hoặc “cũ”

1. Cache scraper (hay nhất)

Lần đầu ai đó share URL, nền tảng lưu title/ảnh. Bạn đổi PNG trên CDN — họ vẫn phục vụ bản cũ hàng giờ đến vài ngày cho đến khi được re-scrape.

Refresh trình duyệt của bạn không có tác dụng với cache phía Facebook/Zalo/LinkedIn.

2. Ảnh không fetch được

  • URL http (mixed) hoặc 403/401 với bot
  • Ảnh > giới hạn thực tế / timeout
  • Kích thước quá nhỏ (ví dụ 200×200) bị bỏ hoặc crop xấu
  • Cloudflare/Hotlink chặn user-agent lạ

3. Meta không có trong HTML tĩnh

SPA chỉ set document.title sau hydrate — crawler share thường không thấy og:*. Dùng SSR (Next/Nuxt), SSG (Astro), hoặc middleware inject.


Kích thước và định dạng ảnh

Khuyến nghịChi tiết
Kích thước1200×630 px (an toàn đa nền tảng)
Tỷ lệ~1.91:1 — tránh ảnh vuông làm letterbox xấu
Định dạngJPG/PNG/WebP tùy CDN; JPG thường ổn cho ảnh chụp
URLhttps://… tuyệt đối, ổn định
Safe zoneText quan trọng tránh mép — LinkedIn/Facebook crop khác nhau

Ảnh story dọc 1080×1920 không thay cho og:image link card. Tách asset: story vs link preview.

Đổi ảnh nhưng giữ nguyên URL → cache bám. Cách cưỡng bức: og:image = https://cdn…/launch.png?v=20260719.


Checklist theo nền tảng

Debug cache theo kênh
Kênh Công cụ / hành động Lưu ý VN
Facebook / Messenger [Sharing Debugger](https://developers.facebook.com/tools/debug/) → Scrape Again Group và ads hay lấy cache Facebook; scrap trước khi boost bài
LinkedIn Post Inspector / inspector LinkedIn → submit URL Hiring post: title cắt ngắn — viết og:title ≤ ~60–70 ký tự hữu ích
Zalo Share thử trên app; xóa cache phía Zalo khó hơn Facebook Thử link sạch (ít UTM), https đúng, ảnh đủ lớn; đổi ?v= nếu kẹt
X (Twitter) Preview khi compose / Card validator (thay đổi theo thời kỳ) Nên có twitter:card = summary_large_image nếu nhắm X

Zalo không luôn có debugger công khai ổn định như Facebook — vì vậy chặn lỗi từ đầu (meta đúng + ảnh đúng) quan trọng hơn “cậy clear cache”.


Checklist trước khi post launch

In và tick trước giờ G:

HTML / deploy

  • og:title, og:description, og:image, og:url có trong View Source
  • og:image https tuyệt đối, ~1200×630
  • Trang không trả 404/5xx cho bot
  • Không chặn crawler cần thiết trong robots.txt đối với URL landing (cẩn thận Disallow toàn site)

Xem trước

  • Chạy OGP Preview với URL production (hoặc staging giống hệt meta)
  • Title không bị cắt nghĩa; description có CTA ngắn

Sau deploy

  • Facebook Debugger → Scrape Again → xác nhận ảnh mới
  • LinkedIn Post Inspector
  • Share thử Zalo từ tài khoản thật (không chỉ giả lập)
  • Mới đăng hàng loạt group / OA / ads

Nếu vẫn cũ

  • Đổi query ?v= trên og:image
  • Đổi path file ảnh hoàn toàn
  • Kiểm tra CDN vẫn trỏ bản cũ (purge CDN)

Case study: launch tool trên Zalo và Facebook

Team indie ship trang /vi/tools/…, gắn UTM ?utm_source=zalo. Lần share đầu (trước khi thêm og:image) tạo cache “không ảnh”. Sau khi thêm ảnh 1200×630, Zalo/Facebook vẫn trống.

Xử lý:

  1. Confirm View Source đã có meta
  2. Facebook Debugger scrape — Facebook ra ảnh
  3. Zalo vẫn cũ → đổi launch.png?v=2 và share URL không UTM lần đầu để tạo cache sạch, rồi mới dùng link UTM trong campaign (hoặc chấp nhận card theo URL canonical og:url)

Bài học: URL đầu tiên được share gắn với cache. Nên hoàn thiện OGP trước khi paste link vào group đông.


Dùng OGP Preview trong quy trình

Xem trước OGP giúp kiểm tra title, mô tả và ảnh trước khi nhờ marketing đăng. Phù hợp vòng lặp design ↔ dev trên staging. Sau khi public, vẫn cần debugger chính thức vì chỉ chúng mới xóa/refresh cache phía mạng xã hội.

Không giả định “preview đẹp trên Chrome = Zalo đẹp” — luôn thử một share thật.


Meta tối thiểu copy-paste

<meta property="og:type" content="website" />
<meta property="og:site_name" content="Tên thương hiệu" />
<meta property="og:title" content="Tiêu đề ≤ ~60–70 ký tự có nghĩa" />
<meta property="og:description" content="1–2 câu lợi ích + CTA ngắn" />
<meta property="og:url" content="https://domain.com/vi/landing/" />
<meta property="og:image" content="https://domain.com/og/landing-1200x630.png?v=1" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />

og:locale (vi_VN) hữu ích nếu site đa ngôn ngữ — giúp một số nền tảng chọn đúng bản.


Liên kết hữu ích

Tóm lại: card Zalo/Facebook/LinkedIn phụ thuộc meta public + ảnh fetch được + cache scraper. Hoàn thiện OGP trước lần share đầu, đo kích thước 1200×630, scrap lại sau mỗi lần đổi ảnh — rồi mới bấm đăng campaign.