Contents
はてなブックマーク API の概要と主要エンドポイント
はてなブックマークが提供する公式 API では、ブックマーク数・コメント・タグ情報などをプログラムから取得できます。SEO やコンテンツ企画の根拠データとして活用できる点が最大の魅力です。本セクションでは、エンドポイントの概要と実際に取得可能な項目を整理し、利用時に注意すべきポイントも合わせて解説します。
※重要 以下に掲載した URL は執筆時点で確認されたものですが、公式ドキュメント(https://developer.hatena.ne.jp/)と食い違う場合があります。実装前に必ず最新のエンドポイントを確認してください。
GET /entries で記事単位のブックマーク情報を取得
指定した URL に対するブックマーク数やコメント一覧を取得できるエンドポイントです。SEO 評価指標として最も頻繁に利用されます。
|
1 2 |
GET https://bookmark.hatenaapis.com/v1/entries?url={対象URL} |
主なレスポンス項目
| フィールド | 説明 |
|---|---|
count |
合計ブックマーク数 |
entry_url |
はてなのエントリページ URL |
title |
記事タイトル |
description |
ユーザーが入力したサマリー |
users |
ブックマーク実施ユーザーの配列(ID・ニックネーム) |
comments |
コメントオブジェクトの配列 |
ポイント
countが高いほど検索エンジンからの評価材料になりやすく、コメント数はエンゲージメント指標として有用です。
GET /users/{user_id}/entries で特定ユーザーのブックマーク一覧を取得
インフルエンサー分析やターゲット層の興味関心抽出に活かせます。
|
1 2 |
GET https://bookmark.hatenaapis.com/v1/users/{user_id}/entries |
主なレスポンス項目
| フィールド | 説明 |
|---|---|
user_id |
ユーザー ID |
entries |
ユーザーがブックマークした記事オブジェクト配列 |
created_at |
各ブックマークの登録日時(ISO8601) |
ポイント インフルエンサーがどのようなジャンルに関心を持っているかを把握でき、コンテンツテーマ選定の根拠になります。
はてなのコミュニティが自然に付与したタグはトレンド把握に最適です。
|
1 2 |
GET https://bookmark.hatenaapis.com/v1/tags |
主なレスポンス項目
| フィールド | 説明 |
|---|---|
tag |
タグ文字列 |
count |
そのタグが付いたブックマーク総数 |
updated_at |
最終更新日時(ISO8601) |
ポイント 急増したタグは新興トピックのシグナルとなり、記事企画に即座に反映できます。
開発者キー取得手順と認証方式
はてなブックマーク API を利用するには「アプリケーションキー(Client ID/Secret)」または OAuth2 アクセストークンが必要です。正しい取得フローを踏むことで、認証エラーや利用停止リスクを回避できます。
はてなデベロッパーズでのアプリ登録手順
- はてなデベロッパーズ(https://developer.hatena.ne.jp)にログイン
- 「マイアプリ」 → 「新規アプリ作成」をクリック
- アプリ名・説明・コールバック URL を入力し保存
ポイント 登録完了後に表示される Client ID と Client Secret が認証の基礎情報です。外部へ漏洩しないよう、暗号化されたシークレット管理ツールで保管してください。
OAuth2 認可コードフロー(公式エンドポイントは要確認)
| ステップ | 内容 |
|---|---|
| 1. 認可リクエスト | https://www.hatena.ne.jp/oauth/authorize?client_id={ClientID}&response_type=code&redirect_uri={CallbackURL} |
| 2. コード受領 | ユーザーが許可すると、code がコールバック URL のクエリに付与されます。 |
| 3. トークン取得(POST) | https://www.hatena.ne.jp/oauth/token に client_id, client_secret, code, grant_type=authorization_code を送信 |
| 4. アクセストークン使用 | 以降の API 呼び出しは Authorization: Bearer {access_token} ヘッダーで認証 |
注意 OAuth2 エンドポイントは公式ドキュメントと相違があるケースがあります。実装前に最新エンドポイントを必ず確認してください。
シンプルキー(API キー)による認証
ブックマーク数やタグ情報だけを取得する場合は、シンプルキーで十分です。
|
1 2 |
Authorization: Bearer {YOUR_API_KEY} |
ポイント シンプルキーはレートリミットが厳しいため、キャッシュ戦略と併用することが推奨されます。
利用制限・レートリミットと回避策
過剰なリクエストは 429 Too Many Requests で応答され、一時的にアクセスが遮断されます。安定運用のために、レートリミットの正確な数値を把握し、適切なバックオフ処理を実装しましょう。
公式が示すレートリミット(※2024年時点)
| 区分 | 上限(リクエスト/分) |
|---|---|
| パブリックエンドポイント(未認証) | 60 |
| 認証済みエンドポイント(OAuth2) | 120 |
※注意 レートリミットは IP ベースで適用され、同一キーでも共有されます。公式が改訂した場合は必ず最新情報を参照してください。
キャッシュ活用による呼び出し削減テクニック
- HTTP キャッシュ:
Cache-Control: max-age=300(5分) を設定すると、同一リクエストの再取得が抑制されます。 - ローカル永続化:SQLite や Redis に取得結果を保存し、有効期限管理で再利用します。
ポイント キャッシュ率が高いほどレートリミット超過リスクが低減し、レスポンス速度も向上します。
指数バックオフ実装例(Python)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import time, requests def request_with_backoff(url, headers, max_retry=5): wait = 1 # 初期待機秒数 for attempt in range(max_retry): resp = requests.get(url, headers=headers) if resp.status_code == 200: return resp.json() if resp.status_code == 429: # レートリミット超過 retry_after = int(resp.headers.get("Retry-After", wait)) time.sleep(retry_after) wait *= 2 # 指数的に待機時間を増加 else: resp.raise_for_status() raise RuntimeError("レートリミットが継続して発生しています") |
ポイント 指数バックオフは突発的なトラフィック増大時でもサーバ側への負荷を抑えられる安全策です。
データ取得から SEO 活用までのステップバイステップガイド
実務で即活用できるコード例と、取得したブックマークデータを SEO ツールや GA に組み込む手順を示します。
Python でシンプルキー利用 → CSV 出力サンプル
以下は entries エンドポイントから複数 URL のブックマーク情報を取得し、上位 10 件を CSV に保存する例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import csv, requests API_KEY = "YOUR_API_KEY" HEADERS = {"Authorization": f"Bearer {API_KEY}"} TARGET_URLS = [ "https://example.com/article1", "https://example.com/article2", # 必要に応じて追加 ] def fetch_entry(url): endpoint = f"https://bookmark.hatenaapis.com/v1/entries?url={url}" resp = requests.get(endpoint, headers=HEADERS) resp.raise_for_status() return resp.json() with open("hatena_bookmarks.csv", "w", newline="", encoding="utf-8") as fp: writer = csv.writer(fp) writer.writerow(["URL", "Title", "BookmarkCount", "CommentCount"]) for u in TARGET_URLS: data = fetch_entry(u) writer.writerow([ u, data.get("title"), data.get("count", 0), len(data.get("comments", [])) ]) |
ポイント 取得した
countとコメント数は、Google Search Console の「ページパフォーマンス」レポートと突き合わせて検索順位変動要因を分析できます。
Node.js(OAuth2)で非同期取得サンプル
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// npm i node-fetch p-limit dotenv require('dotenv').config(); const fetch = require('node-fetch'); const pLimit = require('p-limit'); const ACCESS_TOKEN = process.env.ACCESS_TOKEN; const HEADERS = { Authorization: `Bearer ${ACCESS_TOKEN}` }; const limit = pLimit(5); // 同時リクエスト上限 5 async function getEntry(url) { const endpoint = `https://bookmark.hatenaapis.com/v1/entries?url=${encodeURIComponent(url)}`; const res = await fetch(endpoint, { headers: HEADERS }); if (!res.ok) throw new Error(`HTTP ${res.status}`); return await res.json(); } (async () => { const urls = [ "https://example.com/post-a", "https://example.com/post-b" ]; const results = await Promise.all(urls.map(u => limit(() => getEntry(u)))); results.forEach(e => console.log(`${e.title} – ブックマーク:${e.count}`)); })(); |
ポイント
p-limitによる同時リクエスト数制御でレートリミット超過を防ぎます。
コンテンツ評価指標(ContentScore)
ブックマークとコメントから算出できるシンプルなスコアです。Google Data Studio / Looker Studio へインポートしてページ別ランキングに活用できます。
|
1 2 |
ContentScore = (BookmarkCount × 0.7) + (CommentCount × 0.3) |
- ブックマーク数:外部評価の主軸として重みを高めに設定。
- コメント数:ユーザーエンゲージメントの副指標として加算。
注意 スコアは相対比較用であり、単独で SEO 効果を保証するものではありません。検索ボリュームや被リンク等と組み合わせて総合評価してください。
トレンド分析・コンテンツ企画への応用と実装上の注意点
取得したタグやブックマークデータは、トレンドドリブンな記事制作に直結します。ただし、法的・倫理的配慮を怠るとリスクが生じます。
人気タグ・トレンドキーワード抽出手順
- 取得:
GET /tagsで全タグとcountを取得。 - スナップショット保存:毎朝 02:00 に CSV として永続化(例:
tags_YYYYMMDD.csv)。 - 増加率算出:前日・週間ベースで増加率を計算し、上位 10 件を「今週の注目タグ」としてレポート。
|
1 2 3 4 5 6 7 8 9 10 |
import pandas as pd today = pd.read_csv('tags_20240629.csv') last_week = pd.read_csv('tags_20240622.csv') merged = today.merge(last_week, on='tag', suffixes=('_now','_prev')) merged['increase_rate'] = (merged['count_now'] - merged['count_prev']) / merged['count_prev'] top_trends = merged.sort_values('increase_rate', ascending=False).head(10) print(top_trends[['tag','increase_rate']]) |
ポイント 増加率が高いタグは新興ニーズを示すため、企画会議のアイデアソースとして有効です。
インサイトから記事テーマ選定までのフロー
| フェーズ | 作業内容 |
|---|---|
| 1️⃣ タグ抽出 | 急上昇タグ例:#AI活用、#サステナビリティ |
| 2️⃣ エントリ確認 | /entries で実際の記事タイトル・概要を取得し、競合状況を把握 |
| 3️⃣ ギャップ分析 | 検索ボリュームは高いがコンテンツが少ないテーマを特定 |
| 4️⃣ 企画書作成 | キーワード・想定読者・SEO 目標(CTR、滞在時間)を明記し、制作チームへ共有 |
ポイント インサイトだけで執筆せず、検索ボリュームや競合分析と組み合わせることで、実装効果が最大化します。
API 利用規約・プライバシー保護・社内データポリシー例
| 項目 | 社内規程の具体例 |
|---|---|
| 利用規約遵守 | 取得データは「分析目的」に限り使用。ユーザーコメントやブックマーク情報をそのまま外部サイトに再掲載しない。 |
| 個人情報保護 | ユーザー ID・ニックネームは SHA‑256 ハッシュ化して保存し、元データは 30 日以内に削除。 |
| データ保持期間 | 集計結果(タグ集計・スコア)は最大 90 日間保存し、以降は自動的に削除するバッチを実装。 |
| 暗号化・アクセス制御 | データベースは AES‑256 暗号化、閲覧権限は「データ分析チーム」だけに限定。 |
| エラーハンドリング | 4xx 系エラーはリクエスト内容をログ出力し即時修正、5xx 系は自動リトライ+アラート送信。 |
ポイント 社内ポリシーを文書化し、全開発者が遵守できるよう教育・レビュー体制を整えることが法的リスク回避の鍵です。
まとめ
はてなブックマーク API は、ブックマーク数・コメント・タグという3つの主要指標を通じて、コンテンツの人気度やトレンドを定量的に把握できる強力なツールです。正しいエンドポイントと認証フローを確認し、レートリミットとキャッシュ戦略で安定運用を実現すれば、SEO 改善や企画立案のスピードが格段に向上します。
次のアクション例
- 開発環境で公式エンドポイント(最新 URL)を検証。
- OAuth2 アプリ登録 → シークレット管理ツールへ安全に保存。
- レートリミットとバックオフロジックを実装し、キャッシュ層を構築。
- 社内データポリシーに沿った保存・削除スクリプトを作成。
これらの手順を踏むことで、はてなブックマーク API を安全かつ効果的に活用できるようになります。