昨年、私たちはカスタムズ関税検索ツールを構築しました。このツールは調和関税スケジュール (Harmonized Tariff Schedule) データベースから12,000ページ以上を生成しています。6ヶ月以内に、輸入業者、税関ブローカー、物流専門家が特定のHS コードを検索して月間40,000以上のオーガニック訪問を獲得しました。このプロジェクトは、大規模なプログラマティック SEO、関税データ構造、および政府データセットを実際に使いたいものに変えるときに発生する奇妙なエッジケースについて、私たちに多くのことを教えてくれました。

これは、アーキテクチャ、データパイプライン、SEO戦略、および途中で犯した間違いを含む完全な内訳です。

目次

プログラマティック SEO を使用した 10,000+ ページ HTS コード検索ツールの構築

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以上の一意の関税ラインで、それぞれに独自の関税率、数量単位、特別プログラムの適格性、および関連ノートがあります。それらのすべては、税関ブローカー、輸入業者、または物流会社が Google で検索する可能性があるものです。

関税データがプログラマティック SEO に最適な理由

プログラマティック SEO は、一貫した構造を持つ大規模なデータセットがある場合に最もうまく機能し、各エントリが特定の検索クエリに答えます。関税データはすべてのボックスにチェックを入れます:

集計で高い検索ボリューム。 個別の HTS コードは月に50〜200回の検索を獲得する可能性がありますが、それを10,000のコード全体で乗算すると、深刻なトラフィックに直面しています。

明確な検索意図。 誰かが「HTS code 6110.30.30」または「cotton sweaters の関税率」を Google で検索するとき、彼らは特定の答えを望んでいます。それを提供できます。

過剰サービスの市場。 公式の 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 は頻繁に更新されます。変更をチェックし、変更されたレコードにフラグを付けるために、毎日クーロンジョブを実行します。

# 毎日の同期クーロンジョブ
0 4 * * * /usr/bin/python3 /app/scripts/sync_hts_data.py --notify-on-changes

プログラマティック SEO を使用した 10,000+ ページ HTS コード検索ツールの構築 - アーキテクチャ

10,000+ HTS コードページのページアーキテクチャ

ここは Web 開発が興味深くなる場所です。何万ものページに拡張しながら品質を維持する URL 構造とページテンプレートシステムが必要です。

URL 構造

このヒエラルキーに決定しました:

/hts/                          → メイン検索ツール
/hts/chapter/{chapter}/         → チャプター概要 (99 ページ)
/hts/heading/{heading}/         → ヘディング詳細 (1,200 ページ)
/hts/code/{hts-code}/           → 個別関税ライン (10,000+ ページ)
/hts/search?q={query}           → 検索結果

各レベルはヒエラルキーの上下にリンクします。関税ラインページはその親ヘディングにリンクし、これは親チャプターにリンクします。これは検索エンジンが好きな強い内部リンク構造を作成します。

ページテンプレート

すべての HTS コードページは同じテンプレートに従いますが、ユニークで価値のあるリソースのように感じられます。ここに含まれるものがあります:

  1. ヒーロセクション -- HTS コード番号、公式説明、および一般的な関税率が目立つように表示
  2. 関税率表 -- 一般 (列 1)、特別 (FTA 率)、および列 2 の関税率
  3. 平易な英語の説明 -- このコードが対象とする製品、例付き
  4. セクション 301/232 のステータス -- 追加関税が適用されるかどうか
  5. 関連コード -- 似ているか一般的に混同される HTS 番号
  6. パンくずナビゲーション -- チャプター → ヘディング → サブヘディング → コード
  7. インポートデータ (利用可能な場合) -- 国勢調査からの集計貿易統計
  8. ノートとルーリング -- 分類を明確にする関連カスタムズルーリング

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 structured data */}
    </article>
  );
}

export const revalidate = 86400; // 毎日再検証

このようなものを構築することを検討している場合、Social Animal のチームはこれらの種類のデータの多いプログラマティック SEO ビルドの Next.js 開発 について深い経験を持っています。

検索ツールフロントエンドの構築

静的ページはオーガニックトラフィックを促進しますが、対話的な検索ツールはサイトをブックマークして戻ってくる人を作ります。ここは含まれるものです:

検索機能

ユーザーは HTS コードを2つの方法で検索します: コード番号または製品説明による。これらを処理する検索を構築しました。

コードベースの検索では、メモリに読み込まれたトライデータ構造を使用したプレフィックスマッチングを使用します。「6110」と入力すると、それらの数字で始まるすべてのコードが即座に表示されます。

テキストベースの検索では、PostgreSQL フルテキスト検索と Typesense の組み合わせを使用して、即座に結果を得ます。重要な洞察: 人々は公式の HTS 用語を使用して検索しません。「knitted or crocheted apparel of cotton, other」ではなく「cotton t-shirt tariff」を検索します。約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 タイプはありませんが、DatasetWebPage、およびカスタムプロパティの組み合わせを使用します:

{
  "@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 コード」など) のための「カテゴリハブ」ページを構築しました。これはトピッククラスターとして機能します。

薄いコンテンツペナルティの回避

Google の有用なコンテンツアップデートは、多くのプログラマティック SEO サイトに大きな打撃を与えました。ページを品質閾値を超えて保つ方法:

リスク要因 私たちのソリューション
重複/定型コンテンツ 各ページには、テンプレート変数だけではなく、ユニークなエンリッチ説明があります
ソースに対してユニークな価値がない 平易な英語の説明、セクション 301 交差参照、および計算機を追加
浅いページ 関連コード分析を含む、ページあたりの一意のコンテンツ最小 300 ワード
不十分な内部リンク 意味のあるアンカーテキストを持つ階層的 + ラテラルリンク構造
欠落している E-E-A-T シグナル 貿易コンプライアンスコンサルタントレビュー、日付付き更新、引用されたソース

サイトマップ戦略

10,000以上のページでは、複数のサイトマップが必要です。プログラマティックに生成します:

  • sitemap-chapters.xml -- 99 URL
  • sitemap-headings.xml -- ~1,200 URL
  • sitemap-codes-01.xml から sitemap-codes-20.xml まで -- 各 ~500 URL
  • sitemap-index.xml -- すべてを結びます

Google Search Console を通じてこれらを送信し、毎週のインデックス作成レートを監視します。このサイズのサイトがGoogle で完全にクロール およびインデックスされるのに2〜3ヶ月かかるでしょう。

パフォーマンスとインフラストラクチャ

ホスティングとビルド

私たちのスタック:

  • フレームワーク: App Router を使用した Next.js 14
  • データベース: 関税データに関する Supabase の PostgreSQL
  • 検索: Typesense (Hetzner ボックスで自己ホスト ($20/月))
  • ホスティング: Vercel Pro ($20/月)
  • CDN: Vercel Edge Network (付属)
  • データ同期: Railway クーロンジョブ上の Python スクリプト ($5/月)

合計インフラストラクチャコスト: 約 $50-60/月。これは、40,000以上の月次訪問者を持つ10,000以上のページを提供するサイトの場合、非常識なほど安いです。

ビルド時間は最初は課題でした。Vercel で10,000以上の静的ページを生成するのに30分以上かかり、メモリ制限に達します。ISR とオンデマンド再検証に切り替えたため、初期ビルドは5分未満に短縮されました。ページは最初の訪問時に生成され、キャッシュされます。

このスケールのサイトでは、Astro を使用した成功例も見てきました。これは、場合によっては Next.js よりも大量のページの静的生成をより効率的に処理できます。トレードオフは、すぐに少ないインタラクティビティです。

Core Web Vitals

ヒットしたターゲット:

  • LCP: 1.2s (主に静的コンテンツ、最適化された画像)
  • FID/INP: 45ms (コードページの最小 JavaScript)
  • CLS: 0 (レイアウトシフトなし -- すべてサーバーレンダリング)

カスタムズデータサイトのマネタイゼーション戦略

輸入業者と税関ブローカーからトラフィックを獲得すると、複数のマネタイゼーションパスがあります:

税関ブローカーのリード生成。 税関ブローカー企業は、適格リードあたり $50-200 を支払います。地理的マッチングを備えた「税関ブローカーを探す」機能はよく変換されます。

SaaS サブスクリプション。 バルク コード検索、API アクセス、関税変更アラート、および分類履歴などのプレミアム機能を提供します。このスペースのツールが月 $49-199 を請求しているのが見られています。

広告。 貿易出版物広告とサプライチェーンソフトウェア企業は、プレミアム CPM を支払います。トラフィックが商業的な意図を持っているため、Google AdSense からの基本的なディスプレイ広告でも適切に機能します。

アフィリエイトパートナーシップ。 カスタムズコンプライアンスソフトウェア (Descartes、Amber Road/E2open など)、貿易金融プラットフォーム、および運送会社サービスはすべてアフィリエイトプログラムを持っています。

データライセンス。 生の HTS データを大幅に充実させた場合 (より良い説明、セクション 301 マッピング、分類ガイド)、企業はあなたのエンリッチされたデータセットへの API アクセスに対して支払います。

一般的な落とし穴とその修正方法

落とし穴 1: データが古い。 関税率は予告なく変更されます。セクション 301 関税が変更され、サイトが2週間間古い情報を表示しているときに私たちはやられました。修正: 毎日の自動同期と、連邦官報が関税通知を公開するときのマニュアルレビュートリガー。

落とし穴 2: コードレベル全体での重複コンテンツ。 チャプター、ヘディング、および個別コードページは非常に似た内容になる可能性があります。修正: 各レベルは明確なコンテンツフォーカスがあります。チャプターは広く製品カテゴリについて説明します。ヘディングは関連製品を比較します。個別コードは特定の関税率と分類ガイドを提供します。

落とし穴 3: インデックス作成の問題。 Google は最初の2,000を超えるページのインデックス作成が遅かった。修正: 適切なサイトマップの分割、内部リンク改善、および IndexNow 経由の Bing/Yandex を使用してクロール検出を加速しました。忍耐も役に立ちます -- 90%以上のインデックス作成を取得するのに約10週間かかりました。

落とし穴 4: 法的懸念。 HTS データ自体は公有財産 (政府データ) ですが、いくつかの付加価値データセットはライセンス制限があります。USITC から直接ソースしていることを確認してください。商用データベースからスクレイピングしてはいけません。

落とし穴 5: ユーザーインテント不一致。 一部のユーザーはコードページに到着しますが、分類を支援する必要があります -- 正しいコードがあるかどうかわかりません。「このコードが正しいコードではないですか?」セクションを追加しました。関連コードへのリンクと分類ガイドです。これにより、バウンス率が15%削減されました。

プログラマティック SEO プロジェクトを貿易データまたは他の大規模なデータセットを中心に構築することに関心がある場合、私たちはこの種の ヘッドレス CMS 開発 を専門としています。お気軽にお問い合わせください

FAQ

HS コードと HTS コードの違いは何ですか?

HS (調和システム) コードは国際標準で、200を超える国で使用される6桁で構成されています。HTS (調和関税スケジュール) コードは米国固有の拡張で、最大10桁です。任意の HTS コードの最初の6桁は国際 HS コードと一致します。追加の数字は米国固有の関税率と統計の詳細を提供します。

HTS 関税データは Web サイトで自由に使用できますか?

はい。調和関税スケジュール は米国国際貿易委員会によって公開され、公有財産政府データです。それを自由に使用、再現、およびそれを中心にツールを構築できます。ただし、商用プロバイダーからの付加価値データセットの使用に注意してください -- これらはしばしばライセンス制限があります。

HTS はどのくらいの頻度で更新されますか?

HTS は年に複数回更新されます。主要な改正は通常1月に行われ、連邦官報を通じて暫定的な変更が年間を通じて公開されます。2024-2025年では、セクション 301 関税修正、ダンピング防止義務の変更、および貿易プログラムの調整の結果、特に頻繁に更新されています。データパイプラインはこのペースを説明する必要があります。

HTS コード検索ツールには何ページありますか?

完全なツールは、すべての約10,000個の8桁関税ラインをカバーする必要があります。plus ページは99チャプターと約1,200ヘディングです。10桁の統計サフィックスを含めると、17,000ページを超えることができます。プログラマティック SEO の目的では、8桁レベルが最適なスポットです -- 関税率に直接マップされ、最も検索トラフィックを生成します。

数千ページを持つプログラマティック SEO サイトを構築するのに最適なテックスタックは何ですか?

Next.js with Incremental Static Regeneration (ISR) は、50,000ページ未満のサイトに関しては私たちのゴートゥーです。Astro は、最小限のインタラクティビティを持つ純粋に静的なサイトに優れています。非常に大規模なサイト (100,000以上のページ) の場合、サーバー側のレンダリングと CDN レベルでの積極的なキャッシングを持つハイブリッドアプローチを検討してください。PostgreSQL はデータレイヤーをうまく処理し、Typesense または Meilisearch は Algolia のコストなしで高速検索を提供します。

Google が 10,000以上のプログラマティックページをインデックスするのにどのくらいの時間がかかりますか?

私たちの経験では、10,000以上のページを持つ新しいドメインの完全なインデックス作成に8〜12週間かかることを期待してください。Google は新しいサイトを慎重にクロールします。これを適切な XML サイトマップ、Search Console 送信、IndexNow プロトコル、および強い内部リンク構造で加速できます。既存のドメイン権を持つサイトは、時には2〜3週間以内にはるかに高速にインデックスされます。

Google の有用なコンテンツアップデートによってプログラマティック SEO ページがペナルズされていますか?

薄くテンプレート化されたページで、ソースデータから簡単に入手できない一意の値がない場合、可能性があります。重要な点は、ユーザーがソースデータから簡単に入手できない情報を各ページが提供することを確認することです。私たちの場合、平易な英語の説明、セクション 301 交差参照、関連コード提案、およびジュティ計算機を追加します。Google のガイダンスは明確です: プログラマティックコンテンツは検索者に本当に役立つ限り問題ありません。

HTS コード検索ツールの収益可能性は何ですか?

貿易専門家からの40,000〜100,000月次訪問を生成する、十分に構築されたツールは、ディスプレイ広告、税関ブローカーのリード生成、およびプレミアムサブスクリプション機能の組み合わせを通じて、現実的に月 $3,000-15,000 を生成できます。トラフィックは高い商業的意図を持つ -- これらはビジネスユーザーが積極的に商品を輸入しています -- したがって RPM は一般的なウェブトラフィックよりも大幅に高くなる傾向があります。