【Python】インスタのユーザー・メディアインサイト指標取得|Instagram Graph APIで運用自動化

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ
  • Python環境でInstagram Graph APIを活用する方法が知りたい
  • Instagram Graph APIで「ユーザーインサイト・メディアインサイトを確認する方法」が知りたい
目次

Instagramの運用自動化とは|何ができるの?

Instagramの運用自動化とは、これまで手作業で行なってきたインスタ操作をシステムで自動化することを指します。

Instagramの運用自動化は、Meta(旧Facebook)が提供するInstagram Graph APIを活用すると実現でき、具体的に上記の操作が自動化できるようになります。

インスタアプリ上での操作は全て自動化できることが分かりますね。Instagram APIの機能を組み合わせると、インスタデータの自動収集、グラフ作成や結果考察という一連作業もまとめて効率化できるようになります。

Instagram運用の自動化|APIの利用

Instagramの自動操作を実現するには、Meta(旧Facebook)が提供するInstagram Graph APIを活用します。

InstagramグラフAPIとは、Meta開発者向けに提供されるInstagram運用の効率化ツールになります。

Instagramの運用自動化を検討する場合、Meta For Developersにて以下の認証情報を取得しておく必要があります。

  • アクセストークン
  • アプリID
  • アプリシークレット
  • インスタグラムビジネスアカウントID

上記の具体的な取得方法についてはこちらの記事で解説しています。

Python活用によるInstagram自動操作|本記事での解説内容

本記事ではPythonを活用して「インスタグラムのユーザーインサイトおよびメディアインサイトを獲得する方法」について解説します。

具体的に次のような指標が確認できるようになります。

  • インプレッション数
  • リーチ数
  • エンゲージメント数
  • 保存数
  • プロフィール訪問者数
  • メール・電話番号・地図・Webサイトクリック数

【Python】Instagram Graph API呼出関数を作成

Instagram Graph APIを活用してユーザー・メディアインサイトを獲得するには、事前にAPIを呼び出すための関数を作成しておく必要があります。以下、PythonコードとしてAPIの認証用関数呼出関数をそれぞれ準備しましょう。

【事前準備】Instagram Graph APIの認証用関数を作成

はじめに、Instagram Graph APIを使用するための、API認証用関数を作成します。

認証には以下のコードを用い、XXXX部分を必要な認証情報に書き換えて利用しましょう。

import requests
import json
import datetime
from pprint import pprint

def basic_info():
    # 初期
    config = dict()
    # 【要修正】アクセストークン
    config["access_token"]         = 'XXXXXXX'
    # 【要修正】アプリID
    config["app_id"]               = 'XXXXXXX'
    # 【要修正】アプリシークレット
    config["app_secret"]           = 'XXXXXXX'
    # 【要修正】インスタグラムビジネスアカウントID
    config['instagram_account_id'] = "XXXXXXX"
    # 【要修正】グラフバージョン
    config["version"]              = 'v14.0'
    # 【修正不要】graphドメイン
    config["graph_domain"]         = 'https://graph.facebook.com/'
    # 【修正不要】エンドポイント
    config["endpoint_base"]        = config["graph_domain"]+config["version"] + '/'
    # 出力
    return config

【事前準備】Instagram Graph API呼出関数を作成

続いて、インスタグラム Graph APIを呼び出す関数を作成します。

以下のコードをそのままコピー&ペーストしましょう。

import requests
import json
import datetime
from pprint import pprint

# APIリクエスト用の関数
def InstaApiCall(url, params, request_type):
    
    # リクエスト
    if request_type == 'POST' :
        # POST
        req = requests.post(url,params)
    else :
        # GET
        req = requests.get(url,params)
    
    # レスポンス
    res = dict()
    res["url"] = url
    res["endpoint_params"]        = params
    res["endpoint_params_pretty"] = json.dumps(params, indent=4)
    res["json_data"]              = json.loads(req.content)
    res["json_data_pretty"]       = json.dumps(res["json_data"], indent=4)
    
    # 出力
    return res

上記関数のエラー対応のために、Instagram Graph APIの呼出関数の動作チェックをしたい場合、以下の記事をご覧下さい。

【Python】インスタグラムのユーザーインサイトを確認

インスタグラムのユーザーインサイトを確認するためのコードをご紹介します。

コード(関数)

ユーザーインサイトを確認するAPI呼出関数を以下に示します。そのままコピー&ペーストして利用しましょう。

# インスタグラム運用アカウントのインサイトを確認
def UserInsights(params, period='day') :
    """
    ***********************************************************************************
    【APIエンドポイント】
    https://graph.facebook.com/{graph-api-version}/{ig-user-id}/insights?metric={metric}&period={period}
    ***********************************************************************************
    """
    # エンドポイントに渡すパラメータ
    Params = dict()
    Params['metric'] = 'follower_count,impressions,profile_views,reach, get_directions_clicks, text_message_clicks, website_clicks, email_contacts, phone_call_clicks' # インサイト指標
    Params['period'] = period                                           # 集計期間
    Params['access_token'] = params['access_token']                     # アクセストークン
    
    # エンドポイントURL
    url = params['endpoint_base'] + params['instagram_account_id'] + '/insights' # endpoint url
    
    # 出力
    return InstaApiCall(url, Params, 'GET')

コード(実行用)

前述の関数を活用してユーザーインサイト指標を出力するコードを以下に示します。

# メディア期間
period = 'day'

# API呼出
params   = basic_info()
response = UserInsights(params, period)["json_data"]["data"]

# 結果出力 
for insight in response:
    print (insight['title'] + "(" + insight['description'] + ")" + " (" + insight['period'] + ")") 
    for value in insight['values'] : # loop over each value
        print ("\t" + value['end_time'] + ": " + str( value['value'] )) # print out counts for the date

出力結果イメージ

# フォロワー数(このプロフィールをフォロー中のユニークアカウントの合計数です) (day)
#  2022-07-16: 100
#  2022-07-17: 200
# インプレッション(ビジネスアカウントのメディアオブジェクトの合計ビュー数です) (day)
#  2022-07-16: 100
#  2022-07-17: 200
# プロフィールビュー(指定された期間にビジネスアカウントのプロフィールを見た合計ユーザー数です) (day)
#  2022-07-16: 100
#  2022-07-17: 200
# リーチ(ビジネスアカウントのメディアオブジェクトの合計ユニークビュー数です) (day)
#  2022-07-16: 100
#  2022-07-17: 200
# [道順を表示]のクリック(このプロフィールの道順の表示リンクの合計タップ数です) (day)
#  2022-07-16: 100
#  2022-07-17: 200
# SMS送信のクリック(このプロフィールのSMSリンクの合計タップ数です) (day)
#  2022-07-16: 100
#  2022-07-17: 200
# ウェブサイトクリック(このプロフィールのウェブサイトリンクの合計タップ数です) (day)
#  2022-07-16: 100
#  2022-07-17: 200
# メールアドレス(このプロフィールのメールリンクの合計タップ数です) (day)
#  2022-07-16: 100
#  2022-07-17: 200
# 電話発信のクリック(このプロフィールの通話発信リンクの合計タップ数です) (day)
#  2022-07-16: 100
#  2022-07-17: 200

【Python】インスタグラムのメディアインサイトを確認

インスタグラムのメディアインサイトを確認するためのコードをご紹介します。

メディアインサイトを確認する場合、後述するコードにメディアIDを指定する必要があります。インスタグラムのメディアIDを指定する方法は別途以下の記事で解説していますため、合わせてご覧下さい。

コード(関数)

メディアインサイトを確認するAPI呼出関数を以下に示します。そのままコピー&ペーストして利用しましょう。

# 特定のメディアIDを指定しインサイトを確認
def MediaInsights(params, media_id, media_type) :
    """
    ***********************************************************************************
    【APIエンドポイント】
    https://graph.facebook.com/{graph-api-version}/{ig-media-id}/insights?metric={metric}
    ***********************************************************************************
    """
    # エンドポイントに渡すパラメータ
    Params = dict()
    if media_type == 'VIDEO':
        # 動画の場合
        Params['metric'] = 'engagement,impressions,reach,saved,video_views'             # 動画インサイト指標
    elif media_type == "REEL":
        # Reelの場合
        Params['metric'] = 'comments,likes,reach,saved,plays,shares,total_interactions' # リールインサイト指標
    elif media_type == 'STORY':
        # ストーリーの場合
        Params['metric'] = 'exits,impressions,reach,replies,taps_forward,taps_back'     # ストーリーインサイト指標
    else:
        # 写真の場合
        Params['metric'] = 'engagement,impressions,reach,saved'                         # 写真インサイト指標
    
    Params['access_token'] = params['access_token']                                     # アクセストークン
    
    # エンドポイントURL
    url = params['endpoint_base'] + media_id + '/insights'
    
    # 出力
    return InstaApiCall(url, Params, 'GET')

コード(実行用)

前述の関数を活用してメディアインサイト指標を出力するコードを以下に示します。media_id(メディアID)およびmedia_type(メディア種別:IMAGE or VIDEO or STORY or REEL)を修正した上で、コードを実行しましょう。

# 【要修正】メディアID
media_id   = 'XXXXX'
# 【要修正】メディア種別(IMAGE or VIDEO or STORY or REEL)
media_type = 'IMAGE'

# API呼出
params   = basic_info()
response = MediaInsights(params, media_id, media_type)['json_data']['data']

# 結果出力 
for insight in response:
    print (insight['title'] + "(" + insight['description'] + ")")
    print (">> " + str(insight["values"][0]["value"]))

出力イメージ

# エンゲージメント(メディアオブジェクトの「いいね!」とコメントの合計数です)
# >> 200
# インプレッション(メディアオブジェクトの合計ビュー数です)
# >> 300
# リーチ(メディアオブジェクトを見たユニークアカウントの合計数です)
# >> 70
# 保存(メディアオブジェクトを保存したユニークアカウントの合計数です)
# >> 30

【参考】インスタグラム・その他SNSの運用効率化

当サイトではSNS運用を効率化するための方法を多数解説しています。

Instagram Graph APIを活用したインスタ運用の自動化

カテゴリ記事名
API利用手順Instagram Graph APIの使い方・認証手順・できること
API利用手順Instagram Graph APIの動作チェック
API利用手順有効期限を長期化したアクセストークン取得
インスタ運用効率化Instagramユーザー情報取得
インスタ運用効率化Instagramに投稿したメディア情報取得
インスタ運用効率化Instagramハッシュタグの検索結果取得
インスタ運用効率化Instagramに写真や動画をアップロード
インスタ運用効率化Instagramメディア・ユーザーインサイト取得

インスタグラム自動運用ツールでインスタ運用を効率化

Python言語で構築することに障壁がある方向けに、ノーコードかつ手軽にインスタグラム運用・管理ができるようになるツールを紹介します。Pythonで実装したインスタ機能と上記システム機能を比較し、お好みの方法を選択できると良いですね。

Twitter運用の効率化

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次