App Indexing — App Deep Linking cho tìm kiếm
Google App Indexing từng là gì, vì sao đã deprecated và giải pháp thay thế: Android App Links bằng assetlinks.json cùng iOS Universal Links bằng apple-app-site-association; lịch sử, ngộ nhận về thứ hạng, cách triển khai và đo lường.
Ngôn ngữ
App Indexing là hệ thống Google giai đoạn 2013–khoảng 2021 để crawl nội dung ứng dụng native và từng streaming ứng dụng chưa cài trong kết quả tìm kiếm. Nó đã deprecated. Giải pháp thay thế là app deep link: Android App Links xác minh bằng assetlinks.json và iOS Universal Links xác minh bằng apple-app-site-association. Dữ kiện hiện hành quan trọng nhất: deep link không thay đổi lập chỉ mục hoặc thứ hạng — Google vẫn xếp hạng webpage — mà chỉ định tuyến người đã cài ứng dụng vào ứng dụng sau khi nhấp. Yêu cầu thực sự là nội dung tương đương giữa màn hình ứng dụng và webpage. Đo bằng bộ lọc Android app trong Search Console.
Tóm tắt — “App Indexing” là tính năng cũ của Google, từng lấy nội dung từ ứng dụng điện thoại và hiển thị trong kết quả tìm kiếm. Google đã dừng tính năng này. Hiện nay người ta dùng app deep link — liên kết mở kết quả tìm kiếm bên trong ứng dụng thay vì trình duyệt điện thoại nếu ứng dụng đã được cài. Điểm quan trọng: cách này không giúp xếp hạng cao hơn. Google vẫn xếp hạng website; deep link chỉ thay đổi nơi người dùng đến sau khi nhấn.
“App Indexing” từng là gì
Nhiều năm trước, Google cho phép kết nối website với ứng dụng mobile native để hiển thị nội dung trong ứng dụng — cùng liên kết đi thẳng tới nội dung đó — trong kết quả tìm kiếm. Hệ thống mang tên App Indexing, sau đổi thành Firebase App Indexing. Khi người dùng tìm kiếm và đã cài ứng dụng tương ứng, Google có thể đưa họ vào ứng dụng thay vì webpage.
Nếu bạn đọc bài này vì thấy “App Indexing” trong checklist SEO cũ, tài liệu developer hoặc cài đặt plugin, câu trả lời ngắn là: tính năng đã deprecated. Google đã tắt nó. Bạn không cần thiết lập; hướng dẫn nào bảo làm vậy đều đã lỗi thời.
Giải pháp thay thế
Phiên bản hiện đại của việc “mở ứng dụng từ kết quả tìm kiếm” gọi là app deep link, và mỗi platform có tên riêng:
- Android gọi là App Links.
- iOS gọi là Universal Links.
Cả hai cùng làm một việc: khi ai đó nhấn liên kết tới website của bạn — từ kết quả Google, website khác hoặc ứng dụng — và họ đã cài ứng dụng, điện thoại mở nội dung đó bên trong ứng dụng. Nếu chưa cài, cùng liên kết sẽ mở bình thường trong trình duyệt.
Điều nhiều người hiểu sai nhất
App deep link không giúp tăng thứ hạng. Đây là ngộ nhận cần loại bỏ. Bài cũ cho rằng “lập chỉ mục ứng dụng” cải thiện thứ hạng. Google nói rõ là không: Search vẫn dùng nội dung webpage để quyết định thứ hạng. Deep link chỉ thay đổi trải nghiệm sau khi nhấp cho người đã cài ứng dụng. Đây là tính năng tiện lợi, không phải thủ thuật xếp hạng.
Có một quy tắc thực sự khi thiết lập: màn hình ứng dụng được liên kết phải hiển thị cùng nội dung với webpage. Google tạo snippet tìm kiếm từ webpage; nếu ứng dụng hiển thị nội dung khác, bạn đã gây hiểu nhầm cho người nhấn.
Muốn xem toàn bộ lịch sử, tệp và bước chính xác cho Android/iOS cùng cách đo trong Search Console? Hãy chuyển sang tab Nâng cao.
Tóm tắt — Google App Indexing (2013) → Firebase App Indexing (2016, kèm thử nghiệm “app streaming” ngắn hạn) → deprecated khoảng năm 2021. Giải pháp kế nhiệm là app deep link: Android App Links, được xác minh bằng Digital Asset Links tại
/.well-known/assetlinks.jsoncùng intent filterandroid:autoVerify; và iOS Universal Links, được xác minh bằng tệpapple-app-site-associationcùng entitlement Associated Domains. Theo hướng dẫn Google tháng 5 năm 2025, deep link không thay đổi lập chỉ mục hoặc thứ hạng — Search vẫn xếp hạng webpage — và đích deep link phải tương ứng nội dung URL web. Hãy đo hành vi app link bằng analytics của platform và ứng dụng thay vì giả định luôn có báo cáo Search Console riêng.
Ba thời kỳ, một tên gọi gây nhầm lẫn
“App Indexing” gây nhiều nhầm lẫn vì cùng ý tưởng mang ba tên khác nhau trong một thập kỷ, còn lần chuyển đổi cuối là một đợt deprecation mà nhiều nội dung cũ không cập nhật kịp.
2013–2016 — Google App Indexing. Tháng 10 năm 2013, Google thông báo “Googlebot can now index content in your Android app” (bản dịch) “Googlebot giờ có thể lập chỉ mục nội dung trong ứng dụng Android”, đưa deep link tới ứng dụng “straight in our search results when we think they’re relevant… and if the user has the app installed” (bản dịch) “thẳng vào kết quả tìm kiếm khi Google cho rằng phù hợp… và nếu người dùng đã cài ứng dụng”. Bạn khai báo nội dung ứng dụng qua sitemap hiện có và Webmaster Tools. Khi đó Google crawl bên trong ứng dụng tương tự crawl webpage.
2016–khoảng 2021 — Firebase App Indexing. Sau khi Google mua Firebase năm 2014, App Indexing được đổi tên thành Firebase App Indexing quanh Google I/O 2016. Nó bổ sung hỗ trợ iOS và từng có thử nghiệm app streaming — nút “Try Now” cho phép chạy một ứng dụng chưa cài trong trình duyệt vài phút ngay từ kết quả tìm kiếm. App streaming chỉ là thử nghiệm hạn chế giai đoạn 2015–2016 và đã biến mất từ lâu; đừng xây kế hoạch dựa vào nó.
Khoảng 2021–nay — deprecated. Interface AppIndexApi được đánh dấu deprecated trong tài liệu tham chiếu Android của Google. Tài liệu Firebase hiện hành nói Firebase App Indexing “is no longer the recommended way of indexing content for display as suggested results in Google Search App,” (bản dịch) “không còn là cách được khuyến nghị để lập chỉ mục nội dung nhằm hiển thị dưới dạng kết quả gợi ý trong Google Search App”, đồng thời cảnh báo rõ “the Google Search App for Android no longer uses local content indexed via Firebase App Indexing to provide results to users.” (bản dịch) “Google Search App trên Android không còn dùng nội dung local được lập chỉ mục qua Firebase App Indexing để cung cấp kết quả”. Firebase nay hướng tới App Links và Universal Links. Việc chuyển đổi diễn ra năm 2021; thông báo deprecation có trong snapshot tháng 10 năm 2022 nhưng chưa có vào tháng 10 năm 2020.
Giải pháp thay App Indexing: app deep link
Theo cách Google diễn đạt, deep link là “special URIs that take users beyond your mobile app’s homepage, leading them directly to specific in-app content” (bản dịch) “URI đặc biệt đưa người dùng vượt qua homepage của ứng dụng mobile và tới thẳng nội dung cụ thể bên trong”. Thay đổi tư duy quan trọng so với mô hình cũ: đây là xác minh và định tuyến ở cấp hệ điều hành cùng trình duyệt, không phải pipeline lập chỉ mục do Google vận hành. Không có gì ở đây được “gửi vào chỉ mục”.
Android App Links — Digital Asset Links / assetlinks.json
Theo Google, Android App Links là “an enhanced deep linking capability that verifies deep links to your own website by establishing a trusted association between your app and your website. After they are verified, deep links to your website can immediately open corresponding content in your app, without requiring the user to select your app from a disambiguation dialog” (bản dịch) “khả năng deep link nâng cao xác minh liên kết tới website bằng quan hệ tin cậy giữa ứng dụng và website; sau khi xác minh, deep link có thể mở ngay nội dung tương ứng trong ứng dụng mà không yêu cầu người dùng chọn ứng dụng từ hộp thoại phân định”. App Links được hỗ trợ từ Android 6 và được Google gọi là “cách tiếp cận được khuyến nghị” cho deep link tới website riêng.
Bắt tay xác minh dùng tệp Digital Asset Links. Khi bạn đặt android:autoVerify="true" trên intent filter và ứng dụng được cài, “Android queries the corresponding websites for the Digital Asset Links file at https://hostname/.well-known/assetlinks.json” (bản dịch) “Android truy vấn website tương ứng để lấy tệp Digital Asset Links tại URL đó”. Tệp JSON liệt kê package ứng dụng cùng fingerprint chứng thư ký được phép xử lý liên kết của tên miền. Android 15 bổ sung Dynamic App Links, cho phép tinh chỉnh cách khớp URL mà không phát hành phiên bản ứng dụng mới.
Hai ranh giới về phiên bản và chữ ký rất quan trọng. Thứ nhất, Dynamic App Links mở rộng liên kết trong manifest thay vì thay thế; trên Android trước phiên bản 15, xác minh vẫn chỉ dựa trên khớp manifest/assetlinks.json tiêu chuẩn. Thứ hai, xác minh thất bại hoàn toàn chứ không một phần nếu fingerprint chứng thư ký trong assetlinks.json không khớp chính xác danh tính ký của bản build đã cài. Bản debug ký bằng key khác entry assetlinks.json sẽ không bao giờ được xác minh dù mọi field khác đều đúng.
Điểm cần phân biệt: deep link Android cơ bản dùng intent filter nhưng có thể mở hộp thoại “bạn muốn mở bằng ứng dụng nào?”. App Links thêm xác minh Digital Asset Links để tên miền đã xác minh mở thẳng trong ứng dụng, không có hộp thoại.
iOS Universal Links — apple-app-site-association
Tương đương trên Apple là Universal Links. Apple nói: “When users tap or click a universal link, the system redirects the link directly to your app without routing through the person’s default web browser or your website… because universal links are standard HTTP or HTTPS links, one URL works for both your website and your app. If the person hasn’t installed your app, the system opens the URL in their default web browser.” (bản dịch) “Khi người dùng nhấn universal link, hệ thống chuyển thẳng tới ứng dụng mà không đi qua trình duyệt mặc định hay website… vì đây là liên kết HTTP/HTTPS tiêu chuẩn, một URL hoạt động cho cả website và ứng dụng. Nếu chưa cài ứng dụng, hệ thống mở URL trong trình duyệt mặc định.”
Tệp xác minh là apple-app-site-association, được host trên web server: “When someone installs your app, the system checks a file stored on your web server to verify that your website allows your app to open URLs on its behalf.” (bản dịch) “Khi ai đó cài ứng dụng, hệ thống kiểm tra tệp trên web server để xác minh website cho phép ứng dụng mở URL thay mặt”. Phía ứng dụng cần entitlement Associated Domains khớp tên miền trong tệp. Nguyên tắc giống Android: bắt tay tin cậy giữa website và ứng dụng do thiết bị kiểm tra, không phải tín hiệu xếp hạng.
Tuy nhiên, tệp apple-app-site-association hợp lệ và entitlement khớp đúng không bảo đảm mọi lần nhấn đều mở ứng dụng. Apple mô tả các trường hợp Universal Link vẫn mở Safari dù association hoạt động — chẳng hạn khi nhấn liên kết ngay trong Safari lúc đang duyệt cùng tên miền, hoặc người dùng trước đó chọn tiếp tục mở liên kết của tên miền trong trình duyệt. Khi ứng dụng thực sự chưa cài hoặc association không khớp, liên kết HTTP(S) tiêu chuẩn phải fallback về trình duyệt thay vì dừng ở custom scheme hỏng. Đó là hệ thống hoạt động đúng thiết kế, không phải bug cần truy đuổi.
Cả hai platform đều được Google Search hỗ trợ làm đích deep link.
App deep link có ảnh hưởng thứ hạng không? Không — đây là trích dẫn chính xác
Đây là sửa đổi quan trọng nhất của toàn chủ đề vì các trang đang xếp hạng vẫn nói sai. Bạn sẽ thấy nhận định như “App Indexing sẽ ảnh hưởng thứ hạng… bất kể người dùng đã cài ứng dụng hay chưa” hoặc “Google dùng nội dung trong ứng dụng làm tín hiệu xếp hạng”. Những nhận định đó sai, và bài tháng 5 năm 2025 của Google nói trực tiếp:
Evidence for this claim Google says adding app deep links does not change how Search indexes or ranks content; the corresponding web page remains the indexing and ranking source. Scope: public web Confidence: high · Verified: App deep links: connecting your website and app“Adding deep links to your website connects the website’s URLs with the relevant app pages. It doesn’t change how Google Search shows your content; Search continues to use the content of your web pages for indexing and ranking. App deep links enable users to go from Search results directly to the corresponding app page (if installed), resulting in a better user experience.” (bản dịch) “Thêm deep link vào website kết nối URL website với trang ứng dụng liên quan. Việc này không thay đổi cách Google Search hiển thị nội dung; Search tiếp tục dùng nội dung webpage để lập chỉ mục và xếp hạng. App deep link cho phép người dùng đi thẳng từ kết quả Search tới trang ứng dụng tương ứng nếu đã cài, mang lại trải nghiệm tốt hơn.”
Hãy đọc kỹ: webpage mới là thứ được lập chỉ mục và xếp hạng. Deep link là lớp định tuyến sau khi nhấp, chỉ kích hoạt với người đã cài ứng dụng. Đây là cải thiện UX, không phải đòn bẩy khả năng hiển thị. Ai nói cấu hình assetlinks.json sẽ tăng thứ hạng là sai.
Yêu cầu thực sự duy nhất: nội dung tương đương
Chỉ có một quy tắc thực chất và nó liên quan tới tính trung thực với người dùng. Google nói:
“Because Search uses your web page content for indexing and ranking, you should only add deep links in cases where the app page contains the same content as the corresponding web page. Otherwise, the title and snippet shown for the page in Google Search could mislead users about the content they will see after they click. Layout or other UX differences between app pages and the corresponding web pages are OK, as long as the content matches.” (bản dịch) “Vì Search dùng nội dung webpage để lập chỉ mục và xếp hạng, bạn chỉ nên thêm deep link khi trang ứng dụng chứa cùng nội dung với webpage tương ứng. Nếu không, title và snippet trong Google Search có thể gây hiểu nhầm về nội dung sau khi nhấp. Khác biệt layout hoặc UX là chấp nhận được miễn nội dung khớp.”
Vì vậy, màn hình ứng dụng native đẹp hơn và bố cục khác vẫn ổn. Màn hình hiển thị nội dung khác webpage thì không, vì snippet người dùng nhấn được tạo từ webpage nhưng đích đến không khớp. Tính tương đương ở đây là nội dung, không phải diện mạo.
Cách triển khai hiện nay
Android: Dùng App Links. Liên kết ứng dụng với website trong app manifest bằng intent filter có android:autoVerify="true", rồi xuất bản /.well-known/assetlinks.json trên website với package name cùng fingerprint chứng thư ký của ứng dụng. Android xác minh association khi cài. App Links Assistant trong Android Studio và trang Deep Links của Play Console giúp tạo và xác thực thiết lập.
iOS: Triển khai Universal Links. Xuất bản tệp apple-app-site-association trên web server để mô tả path ánh xạ tới ứng dụng, rồi thêm entitlement Associated Domains cho tên miền khớp. Hướng dẫn debug Universal Links của Apple trình bày lỗi phổ biến như content-type sai, thiếu entitlement và association bị cache.
Không tệp nào được crawl vào “search index” như tên App Indexing từng gợi ý; đây là bắt tay tin cậy do thiết bị kiểm tra. Cấu hình sai thì liên kết fallback về trình duyệt; cấu hình đúng thì người đã cài được định tuyến vào ứng dụng.
Kiểm tra tối thiểu tệp association
curl -sI https://example.com/.well-known/assetlinks.json
curl -sI https://example.com/.well-known/apple-app-site-associationCả hai endpoint phải trả 200 không redirect và cung cấp response JSON dự kiến. Lens Scripts có các phép kiểm tra mở rộng về content-type, redirect, PowerShell, DevTools và bookmarklet.
Cách đo: bộ lọc ứng dụng Android trong Search Console
Google cung cấp trực tiếp hiệu suất app deep link: “Search Console includes performance of your site’s app deep links for Android. In the Performance report, you can use the Android App Search appearance filter to see when your Android app deep links are found and shown to users.” (bản dịch) “Search Console bao gồm hiệu suất app deep link Android của website. Trong báo cáo Performance, bạn có thể dùng bộ lọc Search appearance Android App để xem khi nào deep link được tìm thấy và hiển thị cho người dùng.” Báo cáo cung cấp lượt nhấp, impression, CTR và vị trí cho kết quả có Android app deep link — cách hiện hành cụ thể để xem tính năng có hoạt động không. Bộ lọc được thêm năm 2019 và vẫn là công cụ hiện tại theo bài Google năm 2025.
Tuy vậy, hãy tách hai công việc. Bộ lọc Search Console là báo cáo traffic/appearance — chỉ Android, phụ thuộc việc Google thực sự hiển thị app-deep-link treatment cho truy vấn và không tự chứng minh điều gì được lập chỉ mục hay xếp hạng. Xác nhận deep link hoạt động về kỹ thuật là bài kiểm tra khác: fetch tệp association và thử nhấn trên thiết bị thực, xem tab Scripts cùng Validation Tests. Đừng coi báo cáo Search Console yên ắng là bằng chứng thiết lập hỏng; cũng đừng coi lượt nhấp trong báo cáo là tín hiệu SEO — nó nói về lượng định tuyến, không phải thứ hạng.
Bing và app deep link
Đừng giả định Google và Bing tương đương ở đây. Bing từng chạy chương trình “app linking” tập trung vào Windows từ tháng 4 năm 2014, hướng tới Windows 8,1 và Windows Phone; nhưng các trang đó nay đã chết — URL developer trả 404, bài blog redirect về homepage chung — và Windows Phone đã ngừng. Không có tài liệu hiện hành do Bing xuất bản tương đương hướng dẫn app deep link năm 2025 của Google. Kết luận thực tế: App Links và Universal Links vẫn hoạt động trong Bing/Edge mobile vì đó là tiêu chuẩn cấp hệ điều hành và trình duyệt, không cần công cụ tìm kiếm opt in. Vì vậy cách triển khai không đổi. Chỉ là không có tài liệu Bing để dẫn.
Những thứ legacy bạn vẫn gặp ngoài thực tế
Một vài kỹ thuật gần kề gây nhầm lẫn; hãy gọi đúng tên rồi bỏ qua:
- Markup schema.org
potentialAction/ViewActioncó đích deep linkandroid-app://. Đây là kỹ thuật legacy gắn với thời App Indexing cũ. Bạn vẫn có thể thấy nó trong codebase và vocabulary action của schema.org, nhưng khuyến nghị hiện tại của Google là cấu hình App Links / Universal Links, không phải markup này. Hãy coi là “thứ có thể còn thấy”, không phải khuyến nghị. - Firebase Dynamic Links là sản phẩm Firebase khác và được deprecated riêng — dịch vụ rút gọn URL/deferred deep linking cho attribution marketing, không phải hệ thống nội dung App Indexing. Nó cũng đang bị dừng và hướng dẫn migration riêng cũng trỏ tới App Links cùng Universal Links. Đừng đánh đồng hai đợt deprecation.
Mô hình rõ ràng cần ghi nhớ: (1) hệ thống crawl và streaming Google App Indexing / Firebase App Indexing cũ = đã chết; (2) deep linking bằng App Links / Universal Links = hiện hành, chỉ định tuyến/UX, không ảnh hưởng thứ hạng; (3) app linking thời Windows của Bing = cũng đã chết, không có giải pháp thay thế được ghi nhận.
Tóm tắt bằng AI
Bản cô đọng của phần Nâng cao:
- App Indexing đã deprecated. Google App Indexing (2013) → Firebase App Indexing (2016) → deprecated khoảng năm 2021.
AppIndexApiđược đánh dấu deprecated trong tài liệu Google; ứng dụng Google Search không còn dùng nội dung Firebase App Indexing. - Giải pháp thay thế là app deep link — Android App Links, xác minh qua Digital Asset Links tại
/.well-known/assetlinks.jsoncùng intent filterandroid:autoVerify; và iOS Universal Links, xác minh quaapple-app-site-associationcùng entitlement Associated Domains. Đây là xác minh và định tuyến cấp hệ điều hành/trình duyệt, không phải chỉ mục do Google vận hành. - Deep link KHÔNG ảnh hưởng thứ hạng. Theo bài Google tháng 5 năm 2025, chúng “don’t change how Google Search shows your content; Search continues to use the content of your web pages for indexing and ranking” (bản dịch) “không thay đổi cách Google Search hiển thị nội dung; Search tiếp tục dùng nội dung webpage để lập chỉ mục và xếp hạng”. Chúng chỉ định tuyến người đã cài vào ứng dụng sau khi nhấp.
- Quy tắc thực sự là nội dung tương đương: chỉ deep-link tới màn hình ứng dụng có cùng nội dung với webpage; khác biệt layout/UX vẫn ổn.
- Đo bằng bộ lọc Search appearance Android app trong Search Console, nhưng đó là báo cáo traffic, không chứng minh association kỹ thuật hoạt động hoặc thứ hạng thay đổi. Hãy xác minh association bằng kiểm thử tệp và thiết bị.
- Không platform nào bảo đảm mọi lần nhấn đã xác minh đều mở ứng dụng. Android thất bại hoàn toàn nếu chứng thư ký không khớp; Dynamic App Links trên Android 15 mở rộng chứ không thay manifest. iOS ghi nhận tình huống hợp lệ — duyệt cùng tên miền trong Safari hoặc lựa chọn trước của người dùng — khiến Universal Link vẫn mở trình duyệt dù association hoạt động.
- Bing không có hướng dẫn tương đương hiện hành; chương trình thời Windows đã chết, nhưng App Links/Universal Links vẫn hoạt động trong Edge vì là tiêu chuẩn cấp hệ điều hành.
- Đừng nhầm App Indexing với Firebase Dynamic Links, một sản phẩm khác cũng deprecated; cũng đừng coi markup
potentialAction/ViewActionlà best practice hiện tại.
Tài liệu chính thức
Tài liệu nguồn sơ cấp từ Google, Android và Apple.
Google — hướng dẫn hiện hành
- App deep link: kết nối website và ứng dụng (ngày 2 tháng 5 năm 2025) — giải thích hiện hành có thẩm quyền về chức năng deep link, việc không ảnh hưởng thứ hạng, nội dung tương đương và bộ lọc Search Console.
- Firebase App Indexing — trang trực tiếp chứa thông báo deprecation và trỏ tới App Links / Universal Links.
Google — tài liệu lịch sử để hiểu phần đã deprecated
- Lập chỉ mục ứng dụng giống website (ngày 31 tháng 10 năm 2013) — thông báo App Indexing ban đầu.
Android
- Giới thiệu deep link — deep link, App Links và mô hình xác minh, cập nhật ngày 18 tháng 6 năm 2026.
- Xác minh Android App Links — yêu cầu
android:autoVerify, Digital Asset Links vàassetlinks.json.
Apple
- Cho phép ứng dụng và website liên kết tới nội dung — tổng quan Universal Links và mô hình xác minh bằng tệp máy chủ.
- Hỗ trợ associated domain — tệp
apple-app-site-associationvà entitlement Associated Domains.
Tiêu chuẩn ngành — không riêng Google
- ViewAction / Actions (schema.org) — vocabulary legacy
potentialAction/ViewAction; hữu ích để hiểu ngữ cảnh, không phải khuyến nghị Google hiện tại.
Trích dẫn từ nguồn
Phát biểu chính thức từ Google, Android và Apple. Mỗi liên kết Google/Android là deep link dẫn thẳng tới đoạn được trích trên trang nguồn.
Google — thông báo App Indexing ban đầu năm 2013
- “Just like it crawls and indexes websites, Googlebot can now index content in your Android app… If both the webpage and the app contents are successfully indexed, Google will then try to show deep links to your app straight in our search results when we think they’re relevant for the user’s query and if the user has the app installed.” (bản dịch) “Giống như crawl và lập chỉ mục website, Googlebot giờ có thể lập chỉ mục nội dung trong ứng dụng Android… Nếu cả webpage và nội dung ứng dụng được lập chỉ mục thành công, Google sẽ cố hiển thị deep link tới ứng dụng ngay trong kết quả khi phù hợp với truy vấn và người dùng đã cài ứng dụng.” — Lawrence Chang, Product Manager, Google. Đi tới trích dẫn
Google — Firebase App Indexing đã deprecated, theo tài liệu trực tiếp
- “Firebase App Indexing is no longer the recommended way of indexing content for display as suggested results in Google Search App.” (bản dịch) “Firebase App Indexing không còn là cách được khuyến nghị để lập chỉ mục nội dung nhằm hiển thị dưới dạng kết quả gợi ý trong Google Search App.” Đi tới trích dẫn
Google — deep link không thay đổi thứ hạng, tháng 5 năm 2025
- “It doesn’t change how Google Search shows your content; Search continues to use the content of your web pages for indexing and ranking.” (bản dịch) “Việc này không thay đổi cách Google Search hiển thị nội dung; Search tiếp tục dùng nội dung webpage để lập chỉ mục và xếp hạng.” — John Mueller (Google Search Relations) và Sabs (Android Developer Relations). Đi tới trích dẫn
- “You should only add deep links in cases where the app page contains the same content as the corresponding web page.” (bản dịch) “Bạn chỉ nên thêm deep link khi trang ứng dụng chứa cùng nội dung với webpage tương ứng.” Đi tới trích dẫn
Android — App Links và tệp xác minh
- “Android App Links is an enhanced deep linking capability that verifies deep links to your own website by establishing a trusted association between your app and your website.” (bản dịch) “Android App Links là khả năng deep linking nâng cao, xác minh deep link tới website bằng cách thiết lập quan hệ tin cậy giữa ứng dụng và website.” — Android Developers. Đi tới trích dẫn
- “Android queries the corresponding websites for the Digital Asset Links file at
https://hostname/.well-known/assetlinks.json.” (bản dịch) “Android truy vấn website tương ứng để lấy tệp Digital Asset Links tại URL này.” Đi tới trích dẫn
Apple — Universal Links
- “When users tap or click a universal link, the system redirects the link directly to your app without routing through the person’s default web browser or your website… If the person hasn’t installed your app, the system opens the URL in their default web browser.” (bản dịch) “Khi người dùng nhấn liên kết phổ quát, hệ thống chuyển thẳng liên kết tới ứng dụng mà không đi qua trình duyệt mặc định hay trang web… Nếu chưa cài ứng dụng, hệ thống mở địa chỉ trong trình duyệt mặc định.” — Tài liệu Apple Developer, “Allowing apps and websites to link to your content” (bản dịch) “Cho phép ứng dụng và website liên kết tới nội dung”.
Bạn có nên thiết lập app deep link không?
Lộ trình nhanh cho câu hỏi “tôi có thực sự cần không?”, vì với nhiều website câu trả lời trung thực là “không”.
1. Bạn có ứng dụng mobile native phản chiếu nội dung website không?
- Không có ứng dụng → Dừng. Không có gì để deep-link. App Indexing/deep link không liên quan. Nếu thấy “App Indexing” trong checklist, hãy xóa dòng đó vì đã deprecated.
- Có → tiếp tục.
2. Bạn làm việc này để tăng thứ hạng?
- Có → Dừng và đọc lại. Deep link không ảnh hưởng lập chỉ mục hay thứ hạng. Nếu mục tiêu là khả năng hiển thị SEO, hãy đầu tư vào webpage mobile, không phải hệ thống deep link.
- Không — tôi muốn định tuyến người đã cài vào ứng dụng → tiếp tục.
3. Màn hình ứng dụng hiển thị cùng nội dung với webpage tương ứng?
- Không — nội dung khác → Đừng deep-link URL đó. Sai lệch gây hiểu nhầm vì snippet được tạo từ webpage. Hãy sửa parity trước; khác biệt layout/UX vẫn ổn, khác biệt nội dung thì không.
- Có → tiếp tục.
4. Platform nào?
- Android → App Links: intent filter
android:autoVerifycùng tệp Digital Asset Links tại/.well-known/assetlinks.json. - iOS → Universal Links:
apple-app-site-associationtrên máy chủ cùng entitlement Associated Domains. - Cả hai → triển khai cả hai; chúng độc lập.
5. Làm sao biết nó hoạt động?
- Kiểm tra bộ lọc Search appearance Android app trong Search Console.
- Thử nhấn thực trên thiết bị và xác thực tệp association bằng App Links Assistant trên Android hoặc hướng dẫn debug Universal Links của Apple trên iOS.
Quy tắc kinh nghiệm: deep link là nâng cấp UX/định tuyến cho website có ứng dụng thật với nội dung khớp — không phải dự án tăng thứ hạng SEO và không phải thứ cần gắn thêm chỉ vì hướng dẫn cũ nhắc “App Indexing”.
Checklist thiết lập app deep link
Chỉ liên quan nếu bạn có ứng dụng native phản chiếu nội dung web:
- Xác nhận bạn không kỳ vọng tăng thứ hạng — deep link đổi định tuyến, không đổi ranking.
- Đã xác minh nội dung tương đương: mỗi màn hình deep-linked hiển thị cùng nội dung với webpage tương ứng; khác biệt layout/UX vẫn ổn.
- Android: intent filter dùng
android:autoVerify="true"cho tên miền. - Android: đã xuất bản
/.well-known/assetlinks.jsonqua HTTPS với content type đúng, liệt kê package name và fingerprint chứng thư ký của ứng dụng. - iOS: đã xuất bản
apple-app-site-associationtrên máy chủ với content type, path pattern đúng và không redirect. - iOS: đã thêm entitlement Associated Domains khớp tên miền trong tệp association.
- Đã thử nhấn thực trên thiết bị Android và iOS vật lý, cả trường hợp cài và chưa cài.
- Đã review impression/click trong bộ lọc Search appearance Android app của Search Console sau khi chạy.
- Đã bỏ reference deprecated như tag sitemap App Indexing cũ, lệnh gọi Firebase App Indexing SDK hoặc markup
potentialAction/android-app://từng được coi là cơ chế chính.
Anti-pattern cần tránh
- Coi App Indexing là hiện hành.
AppIndexApiđã deprecated và ứng dụng Google Search không còn dùng nội dung Firebase App Indexing. Hướng dẫn, plugin hay checklist nào bảo “bật App Indexing” đều lỗi thời. - Kỳ vọng tăng thứ hạng. Ngộ nhận lặp nhiều nhất trên bài cũ là “lập chỉ mục ứng dụng ảnh hưởng thứ hạng”. Google nói ngược lại: Search xếp hạng webpage; deep link không thay đổi điều đó.
- Deep-link tới nội dung không khớp. Đưa người nhấn snippet webpage vào màn hình ứng dụng có nội dung khác. Google cảnh báo rõ việc này gây hiểu nhầm. Parity là nội dung, không phải diện mạo.
- Chạy theo “app streaming”. Nút “Dùng thử ngay” để xem trước ứng dụng chưa cài là thử nghiệm 2015–2016 và đã biến mất. Đừng thiết kế dựa vào nó.
- Nhầm Firebase App Indexing với Firebase Dynamic Links. Hai sản phẩm khác nhau, đều deprecated, giải quyết vấn đề khác nhau — lập chỉ mục nội dung so với rút gọn URL/attribution. Cả hai nay đều trỏ tới App Links / Universal Links.
- Giả định Bing tương đương. Chương trình app linking thời Windows của Bing đã chết và không có giải pháp thay thế được ghi nhận. App Links/Universal Links vẫn hoạt động trong Edge vì là tiêu chuẩn cấp hệ điều hành, nhưng không có tài liệu Bing để làm theo.
- Bỏ qua xác minh rồi thắc mắc vì sao “không hoạt động”. Kiểu nội dung sai, redirect trên tệp association hoặc thiếu entitlement sẽ âm thầm đưa người dùng về trình duyệt. Các tệp tạo bắt tay nghiêm ngặt, không phải gợi ý.
Các lỗi app deep link thường gặp
Liên kết web vẫn mở trình duyệt trên Android
Triệu chứng: Ứng dụng đã cài không nhận URL HTTPS khớp. Nguyên nhân có khả năng: Xác minh tên miền thất bại vì host trong manifest, package name, fingerprint chứng thư ký hoặc response assetlinks.json không khớp. Cách sửa: Kiểm tra danh tính ký của bản build đã cài, fetch trực tiếp tệp association và chạy lại xác minh liên kết Android trước khi thử nhấn lần nữa.
Universal Link mở Safari thay vì ứng dụng iOS
Triệu chứng: Cùng URL HTTPS hoạt động trên web nhưng bỏ qua ứng dụng đã cài. Nguyên nhân có khả năng: Entitlement Associated Domains hoặc path trong apple-app-site-association không cho phép URL; nhưng trước tiên hãy kiểm tra các trường hợp không hỏng đã được ghi nhận. Hướng dẫn Apple coi liên kết được nhấn trong Safari trên cùng tên miền, hoặc tên miền người dùng từng chọn tiếp tục mở trong trình duyệt, là hành vi mở trình duyệt dự kiến chứ không phải lỗi xác minh. Cách sửa: Xác nhận entitlement tên miền, khả năng truy cập tệp và quy tắc path; sau đó thử lại khi cài lại hoặc làm mới trạng thái association trên thiết bị. Loại trừ hành vi cùng tên miền/lựa chọn trước của người dùng trước khi kết luận association hỏng.
Ứng dụng mở sai màn hình
Triệu chứng: Xác minh thành công nhưng ứng dụng tới homepage hoặc nội dung không khớp. Nguyên nhân có khả năng: Association của hệ điều hành đúng nhưng ánh xạ route trong ứng dụng chưa đầy đủ. Cách sửa: Ánh xạ path cùng parameter đến màn hình tương ứng, giữ fallback web an toàn và so sánh nội dung ứng dụng với webpage đã cung cấp snippet tìm kiếm.
App deep link — bảng tra nhanh
Trước đây so với hiện nay
| Khái niệm | Trạng thái | Nội dung |
|---|---|---|
| Google App Indexing (2013) | Đã chết | Googlebot crawl nội dung trong ứng dụng và hiển thị deep link trong tìm kiếm |
| Firebase App Indexing (2016) | Đã chết | Đổi tên, thêm iOS và thử nghiệm “app streaming” |
| App streaming (“Try Now”) | Đã chết | Khoảng 2015–2016, xem trước ứng dụng chưa cài trong tìm kiếm |
| Android App Links | Hiện hành | Deep link đã xác minh bằng Digital Asset Links |
| iOS Universal Links | Hiện hành | Deep link đã xác minh bằng apple-app-site-association |
| Firebase Dynamic Links | Deprecated | Sản phẩm riêng về rút gọn URL/attribution, không phải App Indexing |
Tệp xác minh
| Platform | Tệp | Vị trí |
|---|---|---|
| Android | assetlinks.json (Digital Asset Links) | https://yourdomain.com/.well-known/assetlinks.json |
| iOS | apple-app-site-association | Root hoặc /.well-known/ trên web server |
Thông tin nhanh
- Deep link thay đổi định tuyến sau khi nhấp, không đổi lập chỉ mục hay thứ hạng.
- Chỉ deep-link màn hình ứng dụng có nội dung khớp webpage.
- Android cần intent filter
android:autoVerify="true". - iOS cần entitlement Associated Domains.
- Đo bằng bộ lọc Search appearance Android app trong GSC.
- Bing: không có hướng dẫn tương đương hiện hành; các tiêu chuẩn vẫn hoạt động trong Edge.
Kiểm tra tệp association
Deep link thất bại âm thầm, nên bước debug nhanh nhất là xác nhận hai tệp xác minh tồn tại, trả 200 và phục vụ đúng content type.
macOS / Linux — tải và kiểm tra các tệp
# Android — Digital Asset Links. Expect HTTP 200 and application/json.
curl -sI https://example.com/.well-known/assetlinks.json | grep -iE "HTTP/|content-type"
curl -s https://example.com/.well-known/assetlinks.json | head
# iOS — apple-app-site-association. Must be 200, JSON, and NOT redirected.
# -L follows redirects; if the final URL differs, that's a problem for iOS.
curl -sIL -o /dev/null -w "final: %{url_effective} code: %{http_code}\n" \
https://example.com/.well-known/apple-app-site-associationWindows (PowerShell)
# Android
(Invoke-WebRequest -Uri "https://example.com/.well-known/assetlinks.json").Headers["Content-Type"]
# iOS — confirm status and that it isn't redirecting away
Invoke-WebRequest -Uri "https://example.com/.well-known/apple-app-site-association" -MaximumRedirection 0Console Browser DevTools — kiểm tra nhanh khả năng truy cập
// Paste in the console on your own domain. Both should log ok:true.
["/.well-known/assetlinks.json", "/.well-known/apple-app-site-association"]
.forEach(async p => {
const r = await fetch(p, { redirect: "manual" });
console.log(p, "ok:", r.ok, "type:", r.headers.get("content-type"));
});Bookmarklet — kiểm tra website hiện tại bằng một lần nhấn
javascript:(async()=>{for(const p of["/.well-known/assetlinks.json","/.well-known/apple-app-site-association"]){try{const r=await fetch(p,{redirect:"manual"});alert(p+"\nstatus: "+r.status+"\ntype: "+(r.headers.get("content-type")||"—"));}catch(e){alert(p+" — fetch failed: "+e.message);}}})();Nếu không tìm thấy tệp, endpoint redirect hoặc phục vụ content type sai, hệ điều hành không xác minh association và liên kết âm thầm fallback về trình duyệt thay vì mở ứng dụng.
Công cụ thiết lập và debug deep link
- Android Studio — App Links Assistant — tạo intent filter, tạo và xác thực Digital Asset Links (
assetlinks.json), đồng thời kiểm thử xử lý liên kết. - Google Play Console — trang Deep Links — hiển thị trạng thái deep link và xác minh của ứng dụng.
- Xác thực Digital Asset Links — xác minh
assetlinks.jsonđã xuất bản liên kết đúng tên miền với package/fingerprint ứng dụng. - Debug Apple Universal Links — hướng dẫn Apple để chẩn đoán vì sao Universal Link mở trình duyệt thay vì ứng dụng, gồm content type tệp association, entitlement và cache.
- Google Search Console — báo cáo Performance — bộ lọc Search appearance Android app hiển thị impression, click, CTR và vị trí cho kết quả có Android app deep link.
curl/ DevTools / bookmarklet — kiểm tra nhanh nhất rằng cả hai tệp association trả200với content type đúng và không redirect; xem tab Scripts.
Những tài nguyên đáng dành thời gian
Bài viết của tôi
- Mobile-First Indexing chuyển sang mobile-only — khái niệm liên quan nhưng khác biệt về phiên bản trang Google lập chỉ mục; đừng đánh đồng với app deep linking.
- Hướng dẫn Technical SEO cho người mới — vị trí của mobile và chủ đề gần ứng dụng trong bức tranh crawl/index/rank lớn hơn.
Bài thuyết trình của tôi
- Cách Search hoạt động (SlideShare) — phần trình bày về crawl, render, lập chỉ mục và xếp hạng, gồm cách Googlebot crawl như smartphone. Lưu ý thường trực: “This is my understanding of systems… not going to be 100% complete or accurate.” (bản dịch) “Đây là hiểu biết của tôi về các hệ thống… không thể đầy đủ hoặc chính xác 100%.”
Từ ngành
- App deep link: kết nối website và ứng dụng (Google) — hướng dẫn hiện hành có thẩm quyền và nguồn cho các phát biểu không ảnh hưởng thứ hạng cùng nội dung tương đương.
- Firebase App Indexing (Google/Firebase) — thông báo deprecation trực tiếp trỏ tới App Links / Universal Links.
- Giới thiệu deep link (Android) — App Links và mô hình xác minh.
- Xác minh Android App Links (Android) — yêu cầu
assetlinks.json. - Cho phép ứng dụng và website liên kết tới nội dung (Apple) — Universal Links và
apple-app-site-association. - Google App Indexing trở thành Firebase App Indexing (Search Engine Land) — bài Barry Schwartz về lần đổi tên tại Google I/O 2016.
Những số liệu đáng dẫn
- App deep link không thay đổi lập chỉ mục hoặc thứ hạng — phát biểu Google tháng 5 năm 2025: Search “continues to use the content of your web pages for indexing and ranking” (bản dịch) “tiếp tục dùng nội dung webpage để lập chỉ mục và xếp hạng”. Đây là dữ kiện quan trọng nhất và bị trình bày sai nhiều nhất của chủ đề. Nguồn
- Firebase App Indexing đã deprecated — theo tài liệu Firebase trực tiếp, Google Search App trên Android “no longer uses local content indexed via Firebase App Indexing” (bản dịch) “không còn dùng nội dung local được lập chỉ mục qua Firebase App Indexing”. Chuyển đổi diễn ra năm 2021, có trong archive tháng 10 năm 2022 nhưng chưa có tháng 10 năm 2020. Nguồn
- App Links được hỗ trợ từ Android 6+ — Google gọi App Links là “cách tiếp cận được khuyến nghị” cho deep link tới website riêng, xác minh qua Digital Asset Links tại
/.well-known/assetlinks.json. Nguồn
Prompt cho QA app deep link
Review dữ liệu association Android
Review this Android intent-filter and assetlinks.json together. Check host/path
coverage, android:autoVerify, package name, relation value, and certificate
fingerprints for internal consistency. Return: definite mismatches, items that require
device verification, affected URL patterns, and exact tests to run. Do not assume an
unshown signing certificate or redirect behavior.
MANIFEST:
[paste]
ASSETLINKS_JSON:
[paste]Xây ma trận kiểm thử nội dung tương đương
Turn this list of web URLs and intended app destinations into a QA matrix. For each
row include web content identity, Android destination, iOS destination, installed-app
behavior, no-app fallback, and a pass/fail content-parity check. Flag rows where the
app screen's content appears different from the web page; do not treat layout changes
as content mismatches.
[paste URL-to-screen mapping] Xác thực bản phát hành app deep link
Kiểm thử tệp association công khai
Phép thử: Fetch cả hai endpoint association well-known không dùng cookie hay authentication và xác thực JSON. Kết quả dự kiến: Response thành công chứa identifier ứng dụng production, fingerprint và quy tắc path dự kiến. Diễn giải lỗi: Thiết bị không thể xác minh quan hệ website-ứng dụng. Cửa sổ theo dõi: Ngay sau triển khai và sau thay đổi chứng thư. Trigger rollback: Một trong hai tệp lỗi, redirect ngoài dự kiến hoặc cho phép sai danh tính production.
Kiểm thử hành vi khi đã cài và chưa cài
Phép thử: Nhấn các liên kết HTTPS đại diện trên thiết bị Android/iOS thực khi đã cài ứng dụng rồi khi chưa cài. Kết quả dự kiến: Người đã cài tới màn hình ứng dụng khớp; người khác tới cùng URL web. Diễn giải lỗi: Hành vi xác minh, định tuyến hoặc fallback chưa đầy đủ. Cửa sổ theo dõi: Ngay lập tức cho mỗi bản phát hành ứng dụng. Trigger rollback: Liên kết dừng ở ngõ cụt, mở sai màn hình hoặc không fallback về web.
Kiểm thử nội dung tương đương
Phép thử: So sánh nội dung có thể tìm kiếm của mỗi kết quả web với đích trong ứng dụng. Kết quả dự kiến: Chủ đề và nội dung thực chất khớp dù layout khác. Diễn giải lỗi: Deep link có thể gây hiểu nhầm vì Search lập chỉ mục webpage. Cửa sổ theo dõi: Trước khi ánh xạ route và sau thay đổi lớn về template nội dung. Trigger rollback: Đích ứng dụng không còn đáp ứng title và snippet của kết quả web.
Đo tình trạng app deep link
Search appearance ứng dụng Android
Chỉ số: Impression và click cho Search appearance Android App. Cho biết: Tần suất Google hiển thị kết quả có treatment Android deep link và lượng traffic dùng chúng. Cách lấy: Search Console Performance, lọc Search appearance Android App. Benchmark / khoảng thực tế: Thiết lập baseline theo truy vấn và trang; eligibility phụ thuộc mức sử dụng ứng dụng cùng kết quả phù hợp nên không có mục tiêu chung. Nhịp: Hằng tháng, kèm annotation bản phát hành.
Tỷ lệ mở route thành công
Chỉ số: Số lần mở deep link hợp lệ chia cho số lần thử app link. Cho biết: Liên kết đã xác minh có tới đúng màn hình thay vì fallback hoặc lỗi không. Cách lấy: Event analytics ứng dụng tại lúc nhận liên kết và render đích, loại parameter URL nhạy cảm. Benchmark / khoảng thực tế: Dùng baseline riêng theo platform và phiên bản; điều tra regression kéo dài sau bản phát hành. Nhịp: Hằng tuần và theo mỗi bản phát hành ứng dụng.
Số ngoại lệ parity
Chỉ số: URL web đã ánh xạ mà đích ứng dụng không còn nội dung tương đương. Cho biết: Định tuyến có còn đáp ứng yêu cầu nội dung tương đương cốt lõi hay không. Cách lấy: Inventory URL-tới-màn-hình được duy trì cùng QA bản phát hành. Benchmark / khoảng thực tế: Mục tiêu phù hợp là không có ngoại lệ đã biết. Nhịp: Mỗi bản phát hành và sau thay đổi lớn về kiến trúc thông tin web hoặc ứng dụng.
Tự kiểm tra: App Indexing
Năm câu hỏi nhanh về App Indexing từng là gì, giải pháp thay thế và tác động thực tế tới SEO. Chọn một đáp án cho mỗi câu rồi kiểm tra.
Nhật ký thay đổi
Đã cập nhật 22 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 9 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 8 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 28 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 18 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.