利用程序化SEO構建10,000+頁面HTS編碼查詢工具
去年,我們打造了一個關稅查詢工具,從協調關稅表資料庫生成超過 12,000 個頁面。在六個月內,它每月從進口商、報關行和物流專業人士的有機搜尋中獲得 40,000+ 次瀏覽,這些人都在搜尋特定的商品編碼 (HS codes)。這個專案讓我們學到了大規模可程式化 SEO、關稅資料結構,以及將政府資料集轉化為人們真正想使用的東西時遇到的奇特邊界情況。
這是我們如何做到這一點的完整分解——架構、資料管道、SEO 策略,以及我們沿途犯下的錯誤。
目錄
- 什麼是 HS 編碼和 HTS 編碼?
- 為什麼關稅資料非常適合可程式化 SEO
- 資料管道:從 USITC 到您的資料庫
- 10,000+ HTS 編碼頁面的頁面架構
- 建立查詢工具前端
- 關稅編碼頁面的 SEO 策略
- 效能和基礎設施
- 海關資料網站的變現策略
- 常見陷阱及我們如何修復它們
- 常見問題

什麼是 HS 編碼和 HTS 編碼?
在進入技術構建之前,讓我們確保我們使用相同的語言。協調制度 (HS) 是由世界海關組織 (WCO) 開發的國際編碼法。它被超過 200 個國家用於分類貿易商品。每個跨越邊界的產品都會被標記上一個 HS 編碼。
以下是美國市場的有趣之處:美國使用協調關稅表 (HTS),它將國際標準的 6 位數 HS 編碼擴展至 8 位或 10 位數,以提供更詳細的分類。前 6 位數是國際標準化的。第 7-8 位數是美國特定的關稅線。第 9-10 位數是普查局用於貿易資料的統計後綴。
資料規模
HTS 大約包含:
| 層級 | 位數 | 約數量 | 目的 |
|---|---|---|---|
| 章節 | 2 | 99 | 廣泛類別(例如,第 61 章:針織服裝) |
| 稅目 | 4 | ~1,200 | 產品組 |
| 稅號 | 6 | ~5,000 | 國際標準層級 |
| 美國關稅線 | 8 | ~10,000 | 美國特定關稅率 |
| 統計後綴 | 10 | ~17,000 | 普查報告詳情 |
這是超過 10,000 個獨特的關稅線,每一個都有自己的關稅率、數量單位、特殊計畫資格和相關備註。每一個都可能是某個海關經紀人、進口商或物流公司在谷歌上搜尋的東西。
為什麼關稅資料非常適合可程式化 SEO
當您有一個具有一致結構的大型資料集,其中每個條目都回答一個特定搜尋查詢時,可程式化 SEO 效果最好。關稅資料滿足所有條件:
聚合搜尋量高。 單個 HTS 編碼每月可能獲得 50-200 次搜尋,但乘以 10,000 個編碼,您就會獲得大量流量。
清晰的搜尋意圖。 當有人在谷歌上搜尋「HTS code 6110.30.30」或「棉質毛衣的關稅率」時,他們想要一個特定的答案。您可以提供它。
市場供應不足。 官方 USITC HTS 網站 (hts.usitc.gov) 功能齊全但不友好。這是一個基於 PDF 的系統,多年沒有進行過有意義的更新。大多數競爭網站要麼被付費牆保護(例如來自海關經紀公司的網站),要麼建設不佳。
商業意圖明確。 搜尋關稅編碼的人都在做生意。他們正在進口商品。他們在花錢。這意味著流量具有實際價值——無論是用於潛在客戶開發、SaaS 訂閱還是廣告。
我見過基於郵遞區號、食譜變體和產品比較的可程式化 SEO 專案。關稅資料處於甜蜜點,因為查詢足夠具體,可以避免與大型權威網站競爭,但足夠商業化,可以變現。
資料管道:從 USITC 到您的資料庫
這是大多數人放棄的地方。將關稅資料轉化為可用格式真的很煩人。以下是我們的做法。
資料來源
美國國際貿易委員會以多種格式發佈 HTS:
- PDF 文件——官方格式,按章節組織。對於可程式化使用毫無用處。
- XML/JSON 饋送——USITC 在
api.usitc.gov有一個 API,提供結構化資料。這是您的主要來源。 - Excel 下載——可從 USITC 網站獲得,適合一次性匯入,但不適合保持最新。
我們使用 USITC API 作為主要資料來源,並將 Excel 文件作為驗證的備份。
擷取指令碼
以下是我們在 Python 中的資料擷取管道的簡化版本:
import requests
import json
from datetime import datetime
USITC_API_BASE = "https://api.usitc.gov/hts/v1"
def fetch_chapters():
"""從 USITC API 擷取所有 HTS 章節"""
response = requests.get(f"{USITC_API_BASE}/chapters")
return response.json()
def fetch_headings(chapter_id):
"""擷取章節內的所有稅目"""
response = requests.get(f"{USITC_API_BASE}/chapters/{chapter_id}/headings")
return response.json()
def fetch_subheadings(heading_id):
"""擷取稅目的關稅線"""
response = requests.get(f"{USITC_API_BASE}/headings/{heading_id}")
return response.json()
def build_tariff_record(raw_data):
"""將 API 回應轉換為我們的內部架構"""
return {
"hts_code": raw_data["htsno"],
"description": raw_data["description"],
"general_rate": raw_data.get("general", "Free"),
"special_rate": raw_data.get("special", ""),
"column_2_rate": raw_data.get("other", ""),
"unit_of_quantity": raw_data.get("units", ""),
"chapter": raw_data["htsno"][:2],
"heading": raw_data["htsno"][:4],
"last_updated": datetime.utcnow().isoformat(),
"notes": raw_data.get("footnotes", []),
}
資料豐富化
原始 HTS 資料很乾燥。為了製作實際排名和提供價值的頁面,我們用以下內容豐富了每條記錄:
- 簡明英文描述——官方 HTS 描述用法律/貿易行話撰寫。我們使用 GPT-4 生成易懂的摘要,然後由貿易合規顧問審查。
- 相關編碼——連結到父級稅目、同級編碼和常見混淆的替代品。
- 歷史關稅率——我們維護一個變更日誌,顯示隨時間推移的費率變化,這對於考慮到最近關稅變動特別有價值。
- 貿易計畫資格——編碼是否符合 GSP、USMCA、CAFTA-DR 和其他優惠計畫的資格。
- 第 301/232 條適用性——對於任何從中國進口的人來說都很關鍵。我們交叉參考 USTR 豁免清單。
保持資料最新
關稅會改變。很多。在第 301 條關稅、反傾銷稅和 2025 年關稅調整之間,HTS 經常更新。我們執行每日 cron 作業來檢查變更並標記任何已修改的記錄以供審查。
# 每日同步 cron 作業
0 4 * * * /usr/bin/python3 /app/scripts/sync_hts_data.py --notify-on-changes

10,000+ HTS 編碼頁面的頁面架構
這是網頁開發變得有趣的地方。您需要一個 URL 結構和頁面範本系統,可以擴展到數萬個頁面,同時保持品質。
URL 結構
我們確定了這個層次結構:
/hts/ → 主要查詢工具
/hts/chapter/{chapter}/ → 章節概覽(99 頁)
/hts/heading/{heading}/ → 稅目詳情(~1,200 頁)
/hts/code/{hts-code}/ → 個別關稅線(10,000+ 頁)
/hts/search?q={query} → 搜尋結果
每個層級都連結到上下層級。關稅線頁面連結到其父級稅目,稅目連結到其父級章節。這創建了搜尋引擎喜歡的強大內部連結結構。
頁面範本
每個 HTS 編碼頁面都遵循相同的範本,但看起來像一個獨特的、有價值的資源。以下是我們包含的內容:
- 英雄部分——HTS 編碼號、官方描述和通用關稅率顯著顯示
- 關稅率表——通用(第 1 欄)、特殊(自貿協定費率)和第 2 欄費率
- 簡明英文解釋——該編碼涵蓋的產品,包括範例
- 第 301/232 條狀態——是否適用額外關稅
- 相關編碼——類似或常見混淆的 HTS 號碼
- 麵包屑導航——章節 → 稅目 → 稅號 → 編碼
- 進口資料(如可用)——來自普查的匯總貿易統計資料
- 備註和裁定——澄清分類的相關海關裁定
使用 Next.js 實現
我們使用 Next.js 和靜態生成加上增量靜態再生 (ISR) 構建了這個。對於像這樣的專案,您真的想要頁面被預先渲染以獲得效能和 SEO,但您也需要它們在關稅資料改變時更新。
// app/hts/code/[code]/page.tsx
import { getHTSCode, getAllHTSCodes } from '@/lib/tariff-data';
import { notFound } from 'next/navigation';
export async function generateStaticParams() {
const codes = await getAllHTSCodes();
return codes.map((code) => ({
code: code.hts_number.replace(/\./g, '-'),
}));
}
export async function generateMetadata({ params }) {
const code = await getHTSCode(params.code);
if (!code) return {};
return {
title: `HTS Code ${code.hts_number} - ${code.short_description} | Duty Rate & Details`,
description: `Look up HTS code ${code.hts_number}: ${code.description}. General duty rate: ${code.general_rate}. Find tariff details, Section 301 status, and trade program eligibility.`,
};
}
export default async function HTSCodePage({ params }) {
const code = await getHTSCode(params.code);
if (!code) notFound();
return (
<article>
<Breadcrumbs chapter={code.chapter} heading={code.heading} />
<h1>HTS Code {code.hts_number}</h1>
<DutyRateTable rates={code.rates} />
<ProductDescription description={code.enriched_description} />
<Section301Status code={code.hts_number} />
<RelatedCodes codes={code.related} />
<HTSCodeSchema code={code} /> {/* JSON-LD 結構化資料 */}
</article>
);
}
export const revalidate = 86400; // 每日再驗證
如果您正在考慮構建類似的東西,我們在 Social Animal 的團隊在 Next.js 開發 方面擁有深厚的經驗,正是這類資料繁重的可程式化 SEO 構建。
建立查詢工具前端
靜態頁面驅動有機流量,但互動式查詢工具是讓人們加入書籤並回訪的原因。以下是我們的包含內容:
搜尋功能
使用者以兩種方式搜尋 HTS 編碼:按編碼號或按產品描述。我們構建了一個同時處理兩者的搜尋。
對於基於編碼的搜尋,我們使用字首匹配和載入到記憶體中的 Trie 資料結構。輸入「6110」會立即顯示所有以這些數字開頭的編碼。
對於基於文本的搜尋,我們使用 PostgreSQL 全文搜尋和 Typesense 的組合來獲得即時結果。關鍵見解:人們不使用官方 HTS 術語搜尋。他們搜尋「棉質 T 恤關稅」而不是「棉製針織或鉤編服裝,其他」。我們建立了一個約 5,000 個條目的同義詞映射表來橋接這一差距。
// 簡化的搜尋端點
export async function GET(request: Request) {
const { searchParams } = new URL(request.url);
const query = searchParams.get('q');
// 偵測查詢是否看起來像 HTS 編碼
const isCodeSearch = /^[\d.]+$/.test(query?.trim() || '');
if (isCodeSearch) {
return searchByCode(query);
} else {
return searchByDescription(query);
}
}
關稅計算機
我們添加了一個關稅計算機,讓使用者輸入 HTS 編碼和申報價值,然後顯示估計的關稅金額。它考慮:
- 從量稅率(基於百分比)
- 特定稅率(每單位,如「$0.15/kg」)
- 複合稅率(兩者的組合)
- 第 301 條額外關稅
- 適用的貿易計畫折扣
這個功能本身就能產生大量的參與度,並將該工具定位為不僅僅是資料查詢。
關稅編碼頁面的 SEO 策略
生成 10,000 個頁面很容易。讓它們排名才是真正的工作。
結構化資料
我們在每個頁面上實現 JSON-LD。沒有官方的 schema.org 關稅資料型別,但我們使用 Dataset、WebPage 和自訂屬性的組合:
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "HTS Code 6110.30.30 - Cotton Sweaters",
"description": "Tariff details for HTS 6110.30.30",
"mainEntity": {
"@type": "Dataset",
"name": "HTS Code 6110.30.30 Duty Rates",
"description": "Current duty rates and tariff information"
}
}
內部連結策略
這對於可程式化 SEO 至關重要。每個頁面連結到:
- 其父級稅目和章節(向上連結)
- 5-8 個相同層級的相關編碼(橫向連結)
- 解釋分類細微差別的相關部落格文章
- 主要搜尋/查詢工具
我們也為常見產品類型(「服裝關稅編碼」、「電子產品 HTS 編碼」等)構建了「類別中心」頁面,作為主題群集。
避免內容薄弱處罰
谷歌的有幫助的內容更新打擊了許多可程式化 SEO 網站。以下是我們如何保持頁面超過品質閾值:
| 風險因素 | 我們的解決方案 |
|---|---|
| 重複/樣板內容 | 每個頁面都有獨特的豐富描述,而不僅僅是範本變數 |
| 相比於來源沒有獨特價值 | 新增了簡明英文解釋、第 301 條交叉參考和計算機 |
| 淺層頁面 | 每個頁面最少 300 字的獨特內容,包括相關編碼分析 |
| 內部連結較差 | 具有有意義的錨文本的層次 + 橫向連結結構 |
| 缺少 E-E-A-T 信號 | 貿易合規顧問審查、有日期的更新、引用的來源 |
網站地圖策略
對於 10,000+ 頁,您需要多個網站地圖。我們以程式方式生成它們:
sitemap-chapters.xml——99 個 URLsitemap-headings.xml——~1,200 個 URLsitemap-codes-01.xml至sitemap-codes-20.xml——每個約 500 個 URLsitemap-index.xml——將它們全部聯繫在一起
我們通過 Google Search Console 提交這些並每週監控索引率。預期 Google 完全爬取和索引這個規模的網站需要 2-3 個月。
效能和基礎設施
託管和構建
我們的技術堆疊:
- 框架:Next.js 14 with App Router
- 資料庫:Supabase 上的 PostgreSQL 用於關稅資料
- 搜尋:Typesense(自託管在 $20/月 Hetzner 盒子上)
- 託管:Vercel Pro($20/月)
- CDN:Vercel Edge Network(包含)
- 資料同步:Railway cron 作業上的 Python 指令碼($5/月)
總基礎設施成本:大約 $50-60/月。對於為 40,000+ 月度訪客提供服務的網站,擁有 10,000+ 頁,這便宜得離譜。
構建時間最初是一個挑戰。在 Vercel 上生成 10,000+ 靜態頁面會花費 30+ 分鐘並達到記憶體限制。我們切換到 ISR 和按需再驗證,這將初始構建減少到 5 分鐘以下。頁面在首次訪問時生成並快取。
對於這個規模的網站,我們也在 Astro 上取得了成功,在某些情況下可以比 Next.js 更有效地處理大量頁面的靜態生成。權衡是開箱即用的互動性較少。
核心網絡生命週期
我們達成的目標:
- LCP:1.2 秒(主要是靜態內容、優化的影像)
- FID/INP:45 毫秒(編碼頁面上的最少 JavaScript)
- CLS:0(沒有版面配置移動——一切都是伺服器呈現的)
海關資料網站的變現策略
一旦您從進口商和海關經紀人那裡獲得流量,就有幾條變現路徑:
為海關經紀人進行潛在客戶開發。 海關經紀公司會為每個合格潛在客戶支付 $50-200。具有地理匹配的「尋找海關經紀人」功能轉換效果良好。
SaaS 訂閱。 提供進階功能,如批量編碼查詢、API 存取、關稅變更警報和分類歷史。我們看到這個領域的工具收費 $49-199/月。
廣告。 貿易出版物廣告和供應鏈軟體公司支付溢價 CPM。即使是谷歌 AdSense 的基本展示廣告也表現良好,因為流量具有商業意圖。
聯盟合作夥伴。 海關合規軟體(如 Descartes、Amber Road/E2open)、貿易金融平台和貨運轉發服務都有聯盟計畫。
資料授權。 如果您顯著豐富了原始 HTS 資料(更好的描述、第 301 條映射、分類指南),公司將為 API 存取您的豐富資料集支付費用。
常見陷阱及我們如何修復它們
陷阱 1:資料過時。 關稅率在沒有多少通知的情況下改變。當第 301 條費率被修改且我們的網站兩週內顯示過時資訊時,我們蒙受損失。修復:當聯邦公報發佈關稅通知時,進行每日自動同步加上手動審查觸發。
陷阱 2:跨編碼層級的重複內容。 章節、稅目和個別編碼頁面最終可能會說非常相似的東西。修復:每個層級都有不同的內容焦點。章節廣泛討論產品類別。稅目比較相關產品。個別編碼提供具體的關稅率和分類指導。
陷阱 3:索引問題。 谷歌在前 2,000 頁之外索引頁面的速度很慢。修復:適當的網站地圖分段、內部連結改進,我們也透過 Bing/Yandex 使用 IndexNow 來加速爬蟲發現。耐心也會有幫助——完全索引需要約 10 週才能達到 90%+ 索引率。
陷阱 4:法律顧慮。 HTS 資料本身是公共領域(政府資料),但某些增值資料集具有許可限制。確保您直接從 USITC 獲取,而不是從商業資料庫抓取。
陷阱 5:使用者意圖不匹配。 某些使用者登陸編碼頁面,但需要分類幫助——他們不確定自己是否有正確的編碼。我們添加了一個「不確定這是正確的編碼嗎?」部分,其中包含相關編碼的連結和分類指南。這將跳出率降低了 15%。
如果您對在貿易資料或任何其他大型資料集周圍構建可程式化 SEO 專案感興趣,我們專門從事這類 無頭 CMS 開發。歡迎 聯繫我們 討論您的專案。
常見問題
HS 編碼和 HTS 編碼有什麼區別? HS(協調制度)編碼是國際標準,包含 6 位數,由超過 200 個國家使用。HTS(協調關稅表)編碼是美國特定的擴展,最多達 10 位數。任何 HTS 編碼的前 6 位數都符合國際 HS 編碼。額外的數字提供美國特定的關稅率和統計詳情。
HTS 關稅資料可以免費用於網站上嗎? 是的。協調關稅表由美國國際貿易委員會發佈,是公共領域政府資料。您可以自由使用、複製和圍繞它構建工具。但是,請小心使用來自商業提供商的增值資料集——這些通常有許可限制。
HTS 多久更新一次? HTS 每年更新多次。主要修訂通常在 1 月進行,整個一年都通過聯邦公報通知進行中期修改。在 2024-2025 年,由於第 301 條關稅修改、反傾銷稅變更和貿易計畫調整,更新特別頻繁。您的資料管道需要考慮這個節奏。
HTS 編碼查詢工具應該有多少頁? 一個全面的工具應該涵蓋所有約 10,000 個 8 位數關稅線,加上 99 個章節的頁面和 ~1,200 個稅目。包括 10 位數統計後綴可以將您推過 17,000 頁。對於可程式化 SEO 目的,8 位數層級是最佳位置——它直接映射到關稅率並生成最多搜尋流量。
建立具有數千頁的可程式化 SEO 網站的最佳技術堆疊是什麼? Next.js 與增量靜態再生 (ISR) 是我們首選的網站,少於 50,000 頁。Astro 對於純靜態網站且互動性最少來說很好。對於非常大的網站(100,000+ 頁),考慮使用伺服器端呈現和 CDN 層級的積極快取的混合方法。PostgreSQL 很好地處理資料層,Typesense 或 Meilisearch 提供快速搜尋,而無需 Algolia 的成本。
谷歌索引 10,000+ 個可程式化頁面需要多長時間? 根據我們的經驗,預期新域名具有 10,000+ 頁的完全索引需要 8-12 週。谷歌對新網站的爬蟲保守。您可以透過適當的 XML 網站地圖、Search Console 提交、IndexNow 協議和強大的內部連結來加快速度。具有現有域名權限的網站索引速度會快得多——有時在 2-3 週內。
可程式化 SEO 頁面是否受到谷歌有幫助內容更新的處罰? 如果您生成沒有獨特價值的薄、樣板頁面,則可能。關鍵是確保每個頁面提供使用者無法輕易從來源資料獲取的資訊。在我們的案例中,我們添加了簡明英文描述、第 301 條交叉參考、相關編碼建議和關稅計算機。谷歌的指導很明確:只要它對搜尋者真正有幫助,可程式化內容就很好。
HTS 編碼查詢工具的收益潛力是多少? 一個構建完善的工具,生成來自貿易專業人士的 40,000-100,000 月度瀏覽,透過展示廣告、海關經紀人潛在客戶開發和進階訂閱功能的組合可以實際上每月產生 $3,000-15,000。流量具有高商業意圖——這些是主動進口商品的商業使用者——所以 RPM 往往遠高於一般網路流量。