jsonscraper
市場
ジャーナルに戻る

IGプロフィールを毎日の変化記録にする方法

公開プロフィールの指標を定期的に収集し、スナップショットを保存して、実在しない指標を作り出さずに変化を記録します。

編集方針 誤りを報告する

マーケターが公開IGプロフィールを何十件も手作業で確認する場合、最も大きな損失はページを開く時間ではなく、比較可能な履歴が残らないことです。スナップショットが1つあれば今日のフォロワー数がわかります。2つあれば、選択した期間の差を計算できます。シンプルなプロフィール監視なら、リクエストを自動化し、必要なフィールドだけを保存して、変化の一覧を作成できます。

以下はPythonの最小限の実用例です。IG Scraper APIを使ってユーザー名からプロフィール情報を取得し、タイムスタンプ付きのJSONL行を書き込みます。これにより、cron、n8n、自社のストレージに接続できる小さな履歴データが得られます。エンドポイントとパラメーターの公式な説明はIG APIリファレンスに記載されています。

毎日のスナップショットで解決できること

たとえば、チームがブランドやパートナーの公開アカウントを追跡し、フォロワー数、投稿数、認証状態の変化を把握したいとします。プロフィールページには現在の値が表示されますが、それだけでは先週の状態は保存されません。そこで、まず重要なフィールドを決め、観測日時とともに保存します。

記事:IGプロフィールを毎日の変化記録にする方法
概要:公開IGプロフィールを監視する実践ガイド。APIへのリクエスト、キーの安全な保管、履歴スナップショットの記録、実行間の変化の計算方法を紹介します。
画像の役割:カバー — 中心となるアイデア
セクション:毎日のスナップショットで解決できること
ビジュアルの内容:抽象的な色付きSNSタイルで表現した印刷済みIGプロフィールカードと、日付入りの紙のデータスナップショットを並べたエディトリアル写真
プロフィールが示すのは現在のスナップショットです。日付入りの記録を重ねることで比較できる履歴が作られます。© jsonscraper · AIで作成

エンドポイント /v1/user/by/username は必須パラメーター username を受け取ります。レスポンスには、follower_count、following_count、media_count、is_verified、is_private、biographyなどが含まれます。この項目セットはプロフィールのスナップショットに適していますが、投稿履歴は含まれず、指標が変化した理由もそれ自体では説明しません。

このスクリプトの目的は意図的に絞られています。指定した時点で観測可能な項目を取得し、前回の記録と比較します。たとえば、保存した日付の間にフォロワー数が変化したことを分析担当者が確認し、その後、自動収集とは別に詳細を調べられます。

キーとアカウント一覧を準備する

リクエスト用ライブラリをインストールし、APIキーを環境変数に設定します。シークレットをソースファイル、リポジトリ、プログラムの出力に含めないでください。APIはリクエストパラメーター license_key を使用します。以下のライブラリがクエリ文字列を自動的に作成します。

python -m pip install requests
export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="あなたのキー"

プロフィール一覧は設定ファイルやプロジェクト変数に保存すると便利です。初回は、レスポンス、アクセス権、ストレージへの書き込みを確認するため、ユーザー名を1つだけ指定すれば十分です。この例では username をAPIパラメーターとして指定し、キーは環境からのみ読み込みます。

Pythonでリクエストしてスナップショットを保存する

このスクリプトはHTTPレスポンス、APIのステータス、igオブジェクトの存在を確認します。次に、明示的に存在する値だけを保存します。フィールドがない場合、記録には null が残ります。ゼロを代わりに入れると、不明な値と実際のゼロが混同されるためです。

記事:IGプロフィールを毎日の変化記録にする方法
概要:公開IGプロフィールを監視する実践ガイド。APIへのリクエスト、キーの安全な保管、履歴スナップショットの記録、実行間の変化の計算方法を紹介します。
画像の役割:補足イラスト2 — 別の具体的な側面
セクション:Pythonでリクエストしてスナップショットを保存する
ビジュアルの内容:スケジュール実行するPythonからIGプロフィールのエンドポイントへリクエストし、JSONファイルに記録して比較するまでのデータフローを示すロシア語の図解
プロフィールへのリクエストから、保存した2つの観測結果の比較までの流れを示しています。© jsonscraper · AIで作成
import json
import os
from datetime import datetime, timezone
from pathlib import Path

import requests

API_URL = "https://ig.jsonscraper.com/v1/user/by/username"
LICENSE_KEY = os.environ["JSONSCRAPER_INSTAGRAM_LICENSE_KEY"]
USERNAME = "apple"  # 自分のリストにあるプロフィールに置き換えてください
OUTPUT = Path("instagram-profile-snapshots.jsonl")

response = requests.get(
    API_URL,
    params={"username": USERNAME, "license_key": LICENSE_KEY},
    timeout=30,
)
response.raise_for_status()
payload = response.json()

if payload.get("status") != "ok" or not isinstance(payload.get("ig"), dict):
    raise RuntimeError("APIが予期しないステータスまたは構造を返しました")

profile = payload["ig"]
record = {
    "observed_at": datetime.now(timezone.utc).isoformat(),
    "username": profile.get("username", USERNAME),
    "pk": profile.get("pk"),
    "follower_count": profile.get("follower_count"),
    "following_count": profile.get("following_count"),
    "media_count": profile.get("media_count"),
    "is_verified": profile.get("is_verified"),
    "is_private": profile.get("is_private"),
}

with OUTPUT.open("a", encoding="utf-8") as file:
    file.write(json.dumps(record, ensure_ascii=False) + "\n")

print("スナップショットを保存しました:", record["username"], record["observed_at"])

フィールドと構造は、このエンドポイントについて説明されているプロフィール情報に対応しています。リクエストに成功すると、呼び出し時点の観測結果が返されます。変化を分析するには、スクリプトを繰り返し実行して各スナップショットを保存します。IG Scraper APIのページには、基本的なリクエストとJSON形式のサンプルレスポンスが掲載されています。

スナップショット間の変化を計算する

JSONLは1行に1件の記録を保存するため、Pythonの標準モジュールで読み込めます。次のコードは、プロフィールの直近2件の記録を選び、フォロワー数の差を計算します。両方の記録に数値がある場合のみ結果を出力します。

import json
from pathlib import Path

rows = [
    json.loads(line)
    for line in Path("instagram-profile-snapshots.jsonl").read_text(encoding="utf-8").splitlines()
]

username = "apple"
profile_rows = [row for row in rows if row.get("username") == username]
profile_rows.sort(key=lambda row: row["observed_at"])

if len(profile_rows) >= 2:
    previous, current = profile_rows[-2:]
    old = previous.get("follower_count")
    new = current.get("follower_count")
    if isinstance(old, int) and isinstance(new, int):
        print({
            "username": username,
            "from": previous["observed_at"],
            "to": current["observed_at"],
            "follower_delta": new - old,
        })

差分が示すのは、選択した2つの観測結果の間の変化に限られます。実行を飛ばすと観測間隔が長くなるため、レポートには両方の日付を表示し、変化を自動的に「1日あたり」と表現しないでください。定期運用にはcronやクラウドプラットフォームのスケジューラーを設定します。n8nでは、スケジューラー、HTTPリクエスト、データベースまたは表への書き込みの各ノードを組み合わせて同じ処理を構成できます。ノード名やストレージへの接続方法は、利用環境によって異なります。

複数のプロフィールに拡張する

アカウント一覧を扱う場合は、ユーザー名を別ファイルに移し、ループで処理します。各リクエストのステータスを個別に保存すれば、1つのプロフィールで障害が起きても、ほかのプロフィールから正常に取得したデータは失われません。タイムアウト、エラーログを追加し、リクエストに失敗したアカウントだけを再実行します。

APIが返した場合、記録のキーには pk を使い、読みやすさのためユーザー名も保存できます。識別子があれば、レポート上のテキストラベルとプロフィールを区別しやすくなります。値がない場合は、作り出したり別のフィールドで代用したりしないでください。分析には収集時刻をUTCで保存し、比較期間を明示すると便利です。

一定の頻度で情報を取得できれば十分な場合、ドキュメントに記載されている cache_timeout パラメーターで秒単位のキャッシュ期間を指定できます。IGではキャッシュはデフォルトで無効です。監視間隔に合わせて期間を選び、収集設定とともに保存しておけば、結果を解釈する際にリクエストの条件を考慮できます。

最終的に得られるもの

数回実行すれば、公開指標の時系列スナップショットをまとめたファイルと、選択した日付間の単純な差分を得られます。Google Sheets、PostgreSQL、分析システムに取り込めます。別の処理レイヤーで、チームが設定したしきい値を変化が超えたときに通知を作成することもできます。このしきい値はAPIの組み込み機能ではなく、独自に定める業務ルールです。

プロフィールエンドポイントが返すのはアカウントのフィールドです。そのため、新しい投稿を監査するには、media_countから推測するのではなく、対応するメディア取得機能を使う必要があります。IG APIリファレンスには、user_idとend_cursorパラメーターによるページ単位の取得に対応した投稿取得エンドポイントも記載されています。投稿そのものを調べる必要がある場合は、そちらを利用してください。ここで説明したプロフィール指標の履歴表を作るだけなら、ユーザーごとに1回リクエストし、スナップショットを繰り返し保存すれば十分です。

まずはプロフィール1件で2回実行し、レスポンスのステータスが正しいこと、日付が保存されること、欠損データが明示的に不明のまま保持されることを確認してください。その後、アカウント一覧とスケジュールを追加します。これにより、期間と元の値が明確で、検証や後続の分析プロセスへの引き渡しが可能な、再現性のある観測データが得られます。

人々

この記事にはまだ人物がリストされていません。

読み続けてください投稿の推移からIGクリエイターを評価する:Python実践パイプライン
次の記事を読む

読んだ内容を実用的な連携へ

jsonscraperのソーシャルデータAPIを調べ、リクエストを試し、次のワークフローを構築しましょう。

APIを探す