Backlink. Schema. Core Web Vitals. AI Overviews. Đây là 4 thứ mà 95% bài SEO tiếng Việt cứ lặp đi lặp lại. Còn internal linking — đòn bẩy mạnh nhất, rẻ nhất, dễ làm nhất — thì gần như bị bỏ quên.
Tôi đã làm SEO 10 năm và đây là sự thật: trong 3 dự án thành công nhất của tôi, internal linking đóng góp lớn hơn cả backlink building. Một client B2B SaaS tôi tăng organic traffic từ 14K lên 19.6K/tháng trong 4 tháng — không thêm bài, không thêm backlink, chỉ restructure internal link. Đó là tăng 40%.
Bài này tôi sẽ chỉ:
- 9 nguyên tắc internal linking đúng kỹ thuật
- Cách audit link structure hiện tại (kèm tools)
- Anchor text strategy mà 80% agency Việt làm sai
- Quy trình triển khai 30 ngày
Internal Link là gì — và tại sao Google quan tâm
Định nghĩa khô khan: internal link = link từ 1 trang trong domain bạn đến 1 trang khác cũng trong domain.
Nhưng cách Google sử dụng internal link mới là quan trọng. Có 3 vai trò chính:
1. PageRank distribution (vẫn còn quan trọng dù Google không gọi tên) Mỗi page nhận PageRank từ external link + internal link. Internal link là cách bạn điều hướng PageRank giữa các page trong site mình. Page mạnh (homepage, pillar) chia juice xuống page yếu.
2. Crawl path Googlebot follow internal link để discover page. Page không có link nào trỏ tới = orphan page = gần như không bao giờ index.
3. Contextual signal Anchor text + context xung quanh link cho Google biết page đích nói về gì. Đây là tín hiệu ranking quan trọng — nhiều khi mạnh hơn cả title tag.
Tại sao 80% website Việt làm sai internal linking
Qua audit 60+ website Việt trong 5 năm, đây là 5 sai lầm phổ biến nhất:
1. Chỉ link về homepage Mọi bài blog kết thúc bằng "truy cập [tên brand].vn để biết thêm". Đây là spam PageRank kiểu cũ, không hiệu quả.
2. Anchor text 100% "click here" / "đọc thêm" / "xem thêm" Google không hiểu được link này nói về gì. Phí tín hiệu.
3. Internal link kiểu random Link chèn bừa, không theo logic ngữ nghĩa. Bài về "khởi nghiệp" link sang bài "giảm cân" vì cùng domain → tín hiệu nhiễu.
4. Quá ít hoặc quá nhiều Bài 3000 từ chỉ 1 internal link (lãng phí), hoặc 50 internal link (spam). Cả 2 cực đều hại.
5. Không cập nhật link cũ khi có bài mới Viết bài cluster mới mà không quay lại các bài cũ liên quan để add link → bài mới mãi không có visibility.
9 Nguyên tắc Internal Linking đúng kỹ thuật
Nguyên tắc 1: Link theo cấu trúc Hub-Spoke, không Hierarchy thuần
Hệ thống Hub-Spoke (như tôi đã viết ở bài Topic Cluster):
- Hub (pillar page) link xuống mọi spoke (cluster post)
- Spoke link ngược lên hub + link chéo sang spoke liên quan
Không phải hierarchy đơn thuần kiểu Home → Category → Subcategory → Article (đây là menu, không phải linking strategy).
Ví dụ: pillar "Content marketing" link xuống 30 spoke. Mỗi spoke link ngược lên pillar. Spoke "SEO copywriting" link chéo sang spoke "Long-form content" vì 2 cái liên quan ngữ nghĩa.
Nguyên tắc 2: Anchor Text đa dạng, dùng partial match là chính
Đây là phần kỹ thuật quan trọng nhất. Phân bổ anchor text tôi áp dụng:
| Loại anchor | Tỷ lệ | Ví dụ |
|---|---|---|
| Exact match | 15-25% | "internal linking" |
| Partial match | 35-45% | "cách làm internal linking đúng" |
| Branded | 10-15% | "hướng dẫn từ GoSeedUp" |
| Generic | 5-10% | "xem thêm tại đây" |
| LSI/Synonym | 15-25% | "liên kết nội bộ", "link nội bộ" |
| URL bare | 1-3% | "goseedup.com/blog/..." |
Tuyệt đối không để exact match > 30% — Google flag over-optimization.
Nguyên tắc 3: Mỗi bài 5-12 internal link, không hơn không kém
Tôi đã test: bài dưới 3 internal link thường rank chậm, bài trên 15 link bị giảm dwell time (user bị overwhelm).
Công thức:
- Bài 1500-2000 từ: 5-7 internal link
- Bài 2500-3500 từ: 7-10 internal link
- Bài 4000+ từ (pillar): 10-15 internal link
Trong đó:
- 1-2 link về pillar (nếu là spoke)
- 2-4 link sang spoke khác cùng cluster
- 1-2 link sang content cross-cluster (chỉ khi thực sự liên quan)
- 1 link CTA về service/product page
Nguyên tắc 4: Link từ content body, không phải sidebar/footer
Google weight in-content link cao hơn navigation link rất nhiều. Sidebar "Bài viết liên quan" và footer "Liên kết hữu ích" gần như không có value SEO.
Phân bổ trong bài đúng:
- 60-70% link nằm trong các paragraph của body
- 20-30% trong section "Đọc tiếp" cuối bài (vẫn trong body)
- 0-10% trong sidebar/footer (chỉ để UX, không tính)
Nguyên tắc 5: Link đến content có chất lượng cao hơn hoặc bằng
Đây là lỗi tinh tế. Nếu pillar page (chất lượng A) link xuống spoke (chất lượng C) — không sao, chia juice xuống. Nhưng nếu spoke C link "cross" sang spoke D chất lượng F — bạn đang chia juice cho rác.
Trước khi add internal link, hỏi: "Page đích có deserve thêm authority không?" Nếu không → fix page đích trước, hoặc đừng link.
Nguyên tắc 6: Vị trí link trong bài quan trọng
Google đọc page top-down. Link xuất hiện sớm trong bài có weight cao hơn link cuối bài.
Strategy:
- Link quan trọng nhất (về pillar hoặc service page) nên xuất hiện trong 30% đầu bài
- Link "đọc thêm" cuối bài: ít weight nhưng tốt cho UX (user scroll xuống cuối)
- Đừng nhồi toàn bộ link vào 1 paragraph
Nguyên tắc 7: Context xung quanh link là tín hiệu mạnh
Google không chỉ đọc anchor — đọc cả paragraph chứa link. Nếu paragraph nói về "backlink" mà link đến page về "social media" — tín hiệu rối.
Best practice:
- Paragraph chứa link phải có ngữ cảnh liên quan đến page đích
- Tốt nhất: trước link có 1-2 câu setup ngữ cảnh, sau link có 1 câu mở rộng
- Không link giữa câu cụt: "Đọc bài này." — không có context
Nguyên tắc 8: Internal link audit hàng quý
Website thay đổi liên tục. Bài cũ bị xoá, URL đổi, content mới thêm. Mỗi quý phải:
- Tìm orphan pages (bài không có link nào trỏ tới)
- Tìm broken internal link (404)
- Tìm pillar nào đang "underlinked" (ít link trỏ tới hơn các spoke)
- Tìm anchor text quá đồng nhất (over-optimization)
Dùng Screaming Frog + Ahrefs Site Audit để audit. Tôi sẽ chỉ cụ thể ở section sau.
Nguyên tắc 9: Update internal link mỗi khi publish bài mới
Khi publish bài cluster mới, không bao giờ chỉ press publish. Quy trình của tôi:
- Identify 3-5 bài cũ liên quan ngữ nghĩa
- Add link từ những bài đó về bài mới (anchor đa dạng)
- Add link từ pillar về bài mới
- Bài mới link ngược về pillar + 2-3 bài cũ
Nếu skip bước này, bài mới sẽ mất 6-12 tháng để được Google index và rank — thay vì 4-8 tuần.
Anecdote: 4 tháng tăng 40% traffic không thêm bài
Năm 2024, tôi nhận audit cho client SaaS B2B. Họ có 180 bài blog, organic traffic plateau 14,000/tháng suốt 8 tháng.
Tôi chạy Screaming Frog crawl full site:
- 67 orphan page (37%)
- Anchor text "click here" / "đọc thêm" chiếm 62%
- 4 pillar page chỉ có 8-12 link trỏ tới (nên có 30+)
- 23 broken internal link (404)
- Pillar về "Customer Success" có 0 link trỏ tới — chính họ quên
Kế hoạch 4 tháng tôi triển khai:
- Tháng 1: Fix 23 broken link, re-link 67 orphan page vào cluster phù hợp
- Tháng 2: Restructure anchor text — viết lại 200+ link điểm, đa dạng anchor theo công thức 15/40/15/10/20
- Tháng 3: Add 25-30 link trỏ về mỗi pillar từ các spoke + cross-cluster có liên quan
- Tháng 4: Audit lại, fine-tune, fix các edge case
Kết quả:
| Metric | Trước | Sau 4 tháng |
|---|---|---|
| Organic traffic | 14,000 | 19,600 (+40%) |
| Pages ranking top 10 | 87 | 134 |
| Avg crawl depth | 4.8 | 3.2 |
| Time to index bài mới | 14 ngày | 4 ngày |
| Orphan pages | 67 | 0 |
Không thêm bài mới. Không build thêm backlink. Cost: 1 senior SEO làm 4 tháng. ROI dễ chịu nhất tôi từng deliver.
Quy trình Audit Internal Link — step-by-step
Bước 1: Crawl toàn site với Screaming Frog
Free đến 500 URL, sau đó $259/năm. Worth it.
Settings cần thiết:
- Configuration → Crawl → respect robots.txt: OFF (để crawl được hết)
- Custom search: track internal link với anchor text
- Export sau khi crawl: All Inlinks + All Anchors + Internal pages
Bước 2: Find Orphan Pages
Cách 1: Trong Screaming Frog → Reports → Orphan Pages (cần import GSC + Analytics data)
Cách 2: Manual với Ahrefs:
- Pull list all URLs từ sitemap
- Pull list URLs có inlinks (Site Explorer → Internal pages)
- Diff 2 list → orphan
Orphan = page tồn tại nhưng không có link nào trỏ tới (trừ XML sitemap).
Bước 3: Phân tích Anchor Text Distribution
Export "All Anchors" từ Screaming Frog. Trong Excel/Sheet:
- Group by destination URL
- Count anchor variations per destination
- Calculate exact match % cho mỗi URL
Nếu URL nào có exact match > 40% → giảm bớt, đa dạng hoá.
Bước 4: Tính Crawl Depth của mỗi page
Screaming Frog hiển thị Crawl Depth column. Page càng xa homepage (depth cao), càng ít PageRank.
Target:
- Homepage: depth 0
- Pillar page: depth 1-2
- Cluster post: depth 2-3
- Đừng để bất kỳ page nào depth > 4
Nếu pillar đang ở depth 3-4 → fix internal link để pull nó về depth 1-2.
Bước 5: Identify Underlinked Important Pages
Dùng Ahrefs Site Explorer → Best by Links (Internal). Sort theo internal link đếm ngược.
Nếu trang quan trọng (service page, pillar) có ít hơn 10-15 internal link → underlinked. Add thêm link từ các bài liên quan.
Tools tôi dùng — không bullshit
Free / cheap:
- Screaming Frog SEO Spider: $259/năm, free đến 500 URL. Must-have.
- Google Search Console: track query đến từng page
- Ahrefs Webmaster Tools (free cho site mình sở hữu): limited nhưng dùng được
Paid (worth it nếu serious):
- Ahrefs: $99-449/tháng, all-in-one
- SEMrush: alternative
- Sitebulb: $35/tháng, focused on audit, very detailed
Tip pro: dùng combo Screaming Frog (crawl) + Ahrefs (link data) + GSC (performance) — đủ cho 95% case.
Anchor Text Strategy — đi sâu vào kỹ thuật
Phần này tôi muốn dành riêng vì nó là điểm yếu phổ biến nhất.
Phân loại anchor text cho từng tình huống:
Trường hợp 1: Link đến pillar page
- Anchor chính: partial match hoặc LSI (40-50%)
- Anchor phụ: exact match (15-20%)
- Lý do: pillar muốn rank cho head keyword nhưng cần đa dạng để natural
Ví dụ: pillar "content marketing":
- "chiến lược content marketing" (partial)
- "content marketing là gì" (partial, question)
- "content marketing" (exact - chỉ 15-20%)
- "hướng dẫn content marketing đầy đủ" (long-tail)
Trường hợp 2: Link giữa các cluster post
- Anchor: chủ yếu LSI và context-rich
- Lý do: không cạnh tranh keyword với nhau, focus vào ngữ nghĩa
Trường hợp 3: Link đến service/product page
- Anchor: branded + generic
- Lý do: tránh over-optimization cho commercial keyword
Ví dụ link đến trang dịch vụ:
- "dịch vụ seeding của GoSeedUp" (branded + service)
- "xem bảng giá tại đây" (generic + UX)
- Tránh: "dịch vụ seeding TPHCM giá rẻ" (over-optimization)
Internal Linking cho từng loại website
E-commerce
- Category page: link đến top 5-10 product nổi bật + related categories
- Product page: link đến "thường mua cùng" + parent category + brand page
- Blog post: link đến product page liên quan với anchor "sản phẩm X" hoặc descriptive
- Quy tắc: mỗi product page có ít nhất 5-8 internal link trỏ tới
SaaS B2B
- Pillar topic page link đến feature page + use case page
- Case study link đến feature liên quan + competitor comparison
- Blog post link đến signup page với anchor partial match
- Quy tắc: mỗi feature page có ít nhất 10-15 internal link
Media / Blog
- Article link đến category page + 2-3 related article
- Category page link đến top article + sub-category
- Author page link đến all articles by author
- Quy tắc: top article có 30+ link trỏ tới
Local Service
- Service page link đến location page + related service
- Location page link đến service available + about
- Blog post link đến service + location nếu liên quan
- Quy tắc: mỗi service x location combination phải có dedicated page với ít nhất 5 link trỏ tới
5 Lỗi internal linking gây giảm rank — fix ngay
Lỗi 1: Nofollow internal link Một số developer set rel="nofollow" cho tất cả link để "control PageRank". Sai. Internal link nên follow.
Lỗi 2: Link đến URL có trailing slash inconsistent /blog/article-1 và /blog/article-1/ là 2 URL khác nhau với Google. Chọn 1 và stick.
Lỗi 3: Link xuyên qua redirect chain Link → 301 → 301 → final page. Mỗi hop mất ~10% PageRank. Update link trỏ thẳng final URL.
Lỗi 4: Pagination dùng JavaScript Nếu pagination (next/prev) load qua JS, Googlebot không follow → cluster bài có thể bị missing. Dùng standard HTML link.
Lỗi 5: Mobile menu khác desktop Nếu mobile menu giấu một số link (do UX), Google (mobile-first index từ 2024) sẽ không thấy → fix mobile menu chứa đủ link quan trọng.
Roadmap 30 ngày triển khai
Tuần 1: Audit
- Day 1-3: Setup tools, crawl full site
- Day 4-5: Identify orphan, broken link, underlinked page
- Day 6-7: Analyze anchor text distribution, list need-to-fix URLs
Tuần 2: Quick Fix
- Day 8-10: Fix broken links
- Day 11-13: Re-link orphan pages vào cluster phù hợp
- Day 14: Verify với Screaming Frog re-crawl
Tuần 3: Restructure
- Day 15-18: Add 20-30 link cho mỗi pillar từ các spoke
- Day 19-21: Restructure anchor text cho top 50 page (đa dạng hoá)
Tuần 4: Polish & Process
- Day 22-25: Cross-cluster linking cho topics liên quan
- Day 26-28: Final crawl + audit
- Day 29-30: Document quy trình linking để team áp dụng cho bài mới
Internal Linking với JavaScript Framework (Next.js, Nuxt, etc.)
Năm 2026, nhiều startup Việt build site bằng Next.js/Nuxt/SvelteKit. Internal linking có specific concerns:
1. Dùng Link component, không anchor tag thuần
// Sai - Next.js không prefetch, mất performance
<a href="/blog/article">Đọc thêm</a>
// Đúng
import Link from 'next/link'
<Link href="/blog/article">Đọc thêm</Link>
2. SSR/SSG cho SEO-critical pages Client-side rendering = Googlebot khó crawl internal link. Bài blog phải SSR hoặc SSG.
3. Cẩn thận với dynamic route
// URLs phải consistent
/blog/[slug] vs /blog/[...slug] — chọn 1
// Trailing slash setting trong next.config.js phải cố định
4. Sitemap generation tự động
Dùng next-sitemap hoặc tương tự để sitemap luôn fresh. Tránh manual sitemap (drift theo thời gian).
5. Internal link inside CMS markdown content Nếu content lưu trong CMS (Contentful, Sanity, Strapi), parse markdown thành Link component khi render. Đừng để raw HTML <a> tag.
Internal Linking khi migrate domain hoặc redesign site
Đây là moment dễ phá vỡ internal linking nhất. Tôi đã thấy site mất 60% organic traffic trong 30 ngày sau migration vì internal link broken.
Pre-migration checklist:
- Crawl toàn site với Screaming Frog, export all internal links
- Map URL cũ → URL mới (Excel/Sheet)
- Plan 301 redirect cho mọi URL thay đổi
- Identify pillar/cluster cần preserve link structure
Post-migration checklist:
- Re-crawl với Screaming Frog, so sánh internal link count
- Fix mọi link trỏ đến URL cũ (kể cả đã 301 — Google ưu tiên direct link)
- Verify anchor text consistency (đôi khi CMS migration làm mất anchor text)
- Submit new sitemap to GSC
- Monitor GSC "Coverage" report 2 tuần liên tục để catch issues
Trường hợp redesign giữ nguyên URL
Nếu chỉ redesign UI, URL không đổi:
- Vẫn phải re-crawl để verify navigation link không broken (menu, footer thay đổi)
- Check breadcrumb structure consistent
- Check internal search auto-suggest có pollute internal link không
Internal Link Velocity — đừng add link đồng loạt
Đây là tip ít ai nói: Google nhìn vào velocity của internal link changes.
Nếu site đột nhiên có 500 internal link mới trong 1 tuần (vd: deploy script auto-link), Google có thể flag suspicious. Đặc biệt với site nhỏ, internal link velocity bất thường có thể trigger algorithmic review.
Best practice:
- Roll out internal link changes theo batch: 50-100 link/tuần
- Đối với site lớn (1000+ pages), có thể batch lớn hơn nhưng spread over 2-4 tuần
- Monitor GSC sau mỗi batch để catch dip ranking sớm
Tips & Tricks tôi đã tích luỹ — không tìm thấy ở blog SEO khác
Trick 1: Link từ "high-performer" post xuống bài mới Identify top 10 bài có traffic cao nhất → add 1 link xuống bài mới publish. Bài mới được boost ranking trong 2-4 tuần.
Trick 2: "Reverse silo" cho competitive keyword Nếu cluster có 1 keyword cực competitive, dồn tất cả cluster post link về spoke đó (không phải pillar). Spoke trở thành "super-spoke" với power tập trung.
Trick 3: Anchor text dài hơn = ranking signal mạnh hơn Anchor 5-8 từ có weight hơn anchor 1-2 từ. "hướng dẫn chi tiết về internal linking SEO" > "internal linking".
Trick 4: Link từ comment-rich post Bài có nhiều comment thường có engagement signal cao. Link từ những bài này có weight hơn link từ bài 0 comment.
Trick 5: "Hub page" cho seasonal traffic Tạo hub page riêng cho mùa (vd: "Tết 2026 — tất tật về quà tặng"). Mỗi năm refresh + link xuống nội dung mới. Hub này tích luỹ authority qua các năm.
Edge cases — khi quy tắc internal linking bình thường không apply
Edge case 1: Site multi-language
Nếu site có /vi/ và /en/, internal link chỉ trong cùng language version. Cross-language link chỉ dùng hreflang, không text link.
Edge case 2: Subdomain vs Subdirectory
blog.brand.com vs brand.com/blog: link giữa subdomain ít equity hơn link nội bộ subdirectory. Tốt nhất dùng subdirectory cho SEO.
Edge case 3: AMP pages (nếu còn dùng)
AMP page link đến canonical desktop, không link giữa AMP. Tuy AMP đã ít quan trọng từ 2022, nhưng nếu còn dùng phải structure đúng.
Edge case 4: Paginated content
/blog/page/1, /blog/page/2... — dùng rel="prev" và rel="next" (deprecated nhưng vẫn helpful). Mỗi paginated page link về pillar/category chính.
Kết luận: Internal Linking là Free Money
Tôi đã thấy quá nhiều brand chi 50-100 triệu/tháng cho backlink building mà bỏ quên internal linking — thứ họ kiểm soát 100%, không tốn tiền build, và có thể fix trong 4 tuần.
Nếu năm 2026 bạn chỉ có ngân sách làm 1 thứ SEO, làm internal linking trước. 40% organic traffic không phải lý thuyết — đó là số thực tôi đã deliver.
CTA
GoSeedUp giúp startup Việt audit + restructure internal linking đúng kỹ thuật ngay từ ngày đầu — Senior Marketing setup hub-spoke architecture + content map, seeding boost authority cho pillar page, và KOC review tăng EEAT cho cluster content. Đừng đợi 6 tháng plateau rồi mới fix — set up đúng từ đầu rẻ hơn 10 lần.
Đọc tiếp:
- Topic cluster vs single keyword — content map 2026
- Tối ưu conversion rate landing page — 15 nguyên tắc startup Việt
- Đo lường ROI marketing campaign — framework & tools 2026