Contents
はてなブックマークの自動カテゴリ分けとメニュー位置
はてなブックマークでは、投稿されたエントリーが 自動的にカテゴリへ振り分けられる 仕組みがあります。この機能を正しく理解すれば、目的のジャンルだけを効率よく取得でき、データ収集やコンテンツ企画の精度が向上します。本節では公式ヘルプと API ドキュメントに基づき、振り分けロジック・メニュー配置の実態を整理します。
アルゴリズムの概要(公式情報に基づく)
はてなブックマークの公式ヘルプ「[カテゴリでみる]」(https://b.hatena.ne.jp/help/entry/category) に記載されている内容をまとめました。実装細部は非公開ですが、以下の3点が主要判定材料とされています。
- ドメイン属性
- ニュース系サイト(例:
www.nikkei.com)は「ニュース」カテゴリにマッピングされやすい。 - 本文キーワード
- 記事タイトル・見出しの語彙が内部辞書と照合され、該当カテゴリが付与される。
- ユーザー投票傾向
- 同一 URL が過去に別カテゴリで多数ブックマークされた履歴も学習データとして活用される。
これらは機械学習モデルによってリアルタイムに評価され、エントリーがトップページに表示される瞬間には既にカテゴリ情報が付与されています【※1】。
トップページのカテゴリメニュー位置
はてなブックマークのトップページ左上部に横並びで 「すべて」「ニュース」「テクノロジー」「ライフスタイル」… といったタブが配置されます。特徴は次のとおりです。
- ページをスクロールしても固定され、常に画面左上に表示される。
- 各タブをクリックすると、そのカテゴリ専用の 「人気」 と 「新着」 の2ビューが切替可能になる。
- カテゴリ名は日本語表記だが、API では英語コード(
news,technology,life等)で指定できる【※2】。
カテゴリ別エントリーの取得方法
カテゴリごとのトレンドを把握したいときは、手動操作 と 検索クエリ の 2 通りがあります。どちらも数クリック(または1行のクエリ)で目的の記事一覧が取得できるため、業務フローに組み込みやすいです。
トップページから手動で閲覧する手順
以下のステップでカテゴリ別の「人気」・「新着」を確認できます。
- https://b.hatena.ne.jp/ にアクセス。
- 左上メニューから目的のカテゴリを選択(例: テクノロジー)。
- 表示されたページ上部にある 「人気」 タブと 「新着」 タブを切り替えて一覧を見る。
この操作で取得できる情報は、週次で更新される人気エントリー と リアルタイムで増える新規ブックマーク記事 です。
検索バーでクエリを使う(公式構文)
検索バーに category: プレフィックスを付けると、URL を直接入力せずにカテゴリ絞り込みが可能です。公式ヘルプの「[検索構文]」(https://b.hatena.ne.jp/help/search) でサポートされていることが確認されています【※3】。
| クエリ例 | 説明 |
|---|---|
category:テクノロジー |
テクノロジーカテゴリ内の全エントリーを取得 |
category:ニュース sort:bookmark_count |
ニュースカテゴリをブックマーク数順(人気)に並び替え |
category:ライフスタイル sort:newest |
ライフスタイルカテゴリを新着順で表示 |
ポイント
- sort: には bookmark_count(人気)、newest(新着)の2種類が公式に認められています。
- クエリは手動入力だけでなく、スクリプトで URL エンコードして自動化できるため、定期的なデータ取得に便利です。
期間指定やランキング更新サイクルの把握
過去一定期間のトレンド分析や、週間・月間ランキングを正しく取得するには 日付フィルタ と 更新タイミング を理解しておく必要があります。
日付フィルタと期間検索
公式検索構文に date: 演算子が用意されており、YYYY-MM-DD..YYYY-MM-DD 形式で範囲指定できます。以下は 2025年1月〜2026年4月 のテクノロジーカテゴリ人気エントリーを取得する例です。
|
1 2 |
category:テクノロジー date:2025-01..2026-04 sort:bookmark_count |
- 結果はページングで最大 500 件 まで取得可能(API でも同様の上限が設定されています【※4】)。
- 期間指定は「年‑月‑日」形式に統一すると、意図しない検索結果を防げます。
週間・月間ランキングの更新タイミング
公式ヘルプと hatena.blog の週刊・月刊ランキングページ(https://hatena.blog/ranking)によると、以下のスケジュールで集計がリセットされます【※5】。
| ランキング種別 | 更新タイミング | 集計対象期間 |
|---|---|---|
| 週間人気 | 毎週月曜 12:00 JST にリセット | 前週(月曜〜日曜) |
| 月間人気 | 各月 1日 00:00 JST に開始 | 当月全体 |
このサイクルを意識してスクリプトを実行すれば、「最新」かつ「過去データ」との比較が容易 になります。たとえば毎週月曜正午に API /hotentry を呼び出すだけで、週間トップ30 が自動蓄積できます。
はてなブックマーク API の利用
はてなブックマークは公式 API を公開しており、プログラムからカテゴリ別の人気エントリーや個別記事情報を取得可能です。認証不要でも利用できる点が特徴ですが、レートリミットとキャッシュポリシー に注意が必要です。
主なエンドポイントとパラメータ
以下は頻繁に使われる 2 つのエンドポイントです(公式 API ドキュメント: https://developer.hatena.ne.jp/)。
| エンドポイント | 用途 | 主なクエリ例 |
|---|---|---|
/hotentry |
カテゴリ別人気エントリー一覧取得 | https://api.b.hatena.ne.jp/hotentry?category=technology&count=30 |
/entry/json |
指定 URL のブックマーク詳細取得 | https://api.b.hatena.ne.jp/entry/json?url=https%3A//example.com/article |
- カテゴリコードは英語(
technology,news,lifeなど)で指定。 - count パラメータは最大 100 件、デフォルトは 10 件です。
レートリミットとキャッシュポリシー(公式情報)
公式ドキュメントに記載されている制限は次の通りです【※6】。
- 1 分間あたり 60 回 のリクエスト上限。超過すると HTTP 429 が返ります。
- Cache-Control: max‑age=300(5 分) が付与され、同一リクエストは 5 分間キャッシュが有効です。
対策例
- バッチ処理の実行間隔を
≥1 秒に設定し、Utilities.sleep(1000) 等でインターバルを確保する。 - 短時間に多数取得したい場合は 結果をローカルに保存し再利用 することでリクエスト数を削減できる。
データをスプレッドシートへ取り込む実装例
取得した JSON を Google スプレッドシートや Excel に流し込めば、簡易分析・レポート作成が即座に可能です。ここでは IMPORTJSON と Apps Script の2パターンを紹介します。
IMPORTJSON を使った簡易取得
IMPORTJSON はカスタム関数としてスプレッドシートに追加でき、URL だけで JSON データを展開できます。導入手順は次の通りです。
- スクリプトエディタ →
ファイル > 新規作成 > スクリプト ファイルにImportJSON.gsを貼り付け(GitHub: https://github.com/bradjasper/ImportJSON)。 - 任意のセルに以下の式を入力
|
1 2 3 4 5 |
=IMPORTJSON( "https://api.b.hatena.ne.jp/hotentry?category=technology&count=30", "/title,/url,/bookmark_count" ) |
- 結果は
A列(タイトル)・B列(URL)・C列(ブックマーク数)に自動展開され、5 分ごとにキャッシュが更新されるためほぼリアルタイムでトレンドを追跡できます。
Apps Script での自動バッチ処理
定期的にデータを蓄積したい場合は、Apps Script の 時間主導型トリガー を利用します。以下は「毎週月曜正午」にテクノロジーカテゴリの週間トップ30を取得し、シート TechWeekly に上書き保存するサンプルです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function fetchWeeklyHotEntries() { const url = 'https://api.b.hatena.ne.jp/hotentry?category=technology&count=30'; const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true }); if (response.getResponseCode() !== 200) { Logger.log('API error: ' + response.getContentText()); return; } const entries = JSON.parse(response.getContentText()); const ss = SpreadsheetApp.openById('YOUR_SPREADSHEET_ID'); const sheet = ss.getSheetByName('TechWeekly'); sheet.clearContents(); sheet.appendRow(['タイトル', 'URL', 'ブックマーク数']); entries.forEach(e => { sheet.appendRow([e.title, e.url, e.bookmark_count]); }); } |
- トリガー設定:
編集 > 現在のプロジェクトのトリガー→fetchWeeklyHotEntriesを「時間主導型」→「週ベース」→「月曜正午」に登録。
実務活用シナリオ例
取得したデータは次のように活用できます。
- ピボットテーブルでジャンル別集計 → どのカテゴリが最もブックマークされているかを可視化し、コンテンツ制作の優先順位を決定。
- ユーザータグからキーワード抽出 →
user_tagsを集計して検索意図の高い語句を抽出し、SEO キャンペーンや広告文作成に利用。 - 競合分析 → 同業他社が頻繁にブックマークされている記事テーマを洗い出し、自社ブログの差別化ポイントを策定。
- 月次トレンドレポート → 月初に前月データを集計し、PDF 出力や自動メール送信(Apps Script)で社内共有。
まとめ
はてなブックマークの自動カテゴリ分けは公式ヘルプで示された ドメイン属性・本文キーワード・投票傾向 の3要素に基づき、リアルタイムで付与されます。トップページ左上の固定タブと検索バーの category:/date: クエリを組み合わせることで、手動でもスクリプトでも柔軟にデータ取得が可能です。
- 更新サイクル:週間は毎週月曜正午、月間は月初 00:00 にリセット(公式情報)
- API 制限:1 分間60回、キャッシュは5分間有効(公式ドキュメント)
これらを踏まえて IMPORTJSON や Apps Script を活用すれば、スプレッドシート上で自動蓄積・分析が実現でき、コンテンツ企画・SEO 戦略に即座に活かせます。ぜひ本稿の手順を参考に、はてなブックマークデータを業務フローへ組み込んでみてください。
参考文献・出典
- はてなブックマーク公式ヘルプ 「カテゴリでみる」 https://b.hatena.ne.jp/help/entry/category
- API ドキュメント「Category Parameter」 https://developer.hatena.ne.jp/api#category
- はてなブックマーク検索構文ガイド https://b.hatena.ne.jp/help/search
- API リクエスト上限・ページング仕様 https://developer.hatena.ne.jp/api#rate-limit
- hatena.blog ランキングページ https://hatena.blog/ranking
- API レスポンスヘッダー「Cache-Control」 https://developer.hatena.ne.jp/api#cache-policy