こんにちは、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
 
上記の具体的な取得方法についてはこちらの記事で解説しています。
Instagram Graph APIの認証・利用手順|アクセストークン・アプリ・インスタビジネスアカウントID取得
Instagram Graph APIを活用したインスタ自動運用に興味がある方向けに、API利用に至るまでの準備事項・手順を詳しく解説します。
Python活用によるInstagram自動操作|本記事での解説内容
本記事ではPythonを活用して「インスタグラムに投稿したメディア情報を一括取得する方法」について解説します。
【Python】Instagram Graph API呼出関数を作成
インスタグラムに投稿したメディア情報を取得できるAPIを活用するには、API呼出用の関数を作成する必要があります。
以下、Instagram Graph API認証用関数とAPI呼出関数を事前に作成しておきましょう。
【事前準備】Instagram Graph APIの認証用関数を作成
はじめに、Instagram Graph APIを使用するための、API認証用関数を作成します。
認証には以下のコードを用い、XXXX部分を必要な認証情報に書き換えて利用しましょう。
endpont_baseにはgraph_domain(https://graph....com/)と最新のバージョンvxx.0/を指定しています。
config_dict = {
        "access_token": '<アクセストークン>',
        "app_id":'<アプリID>',
        "app_secret":'<アプリシークレット>',
        "instagram_account_id":'<インスタビジネスのアカウントID>',
        "endpoint_base":'https://graph.facebook.com/v21.0/',
    }【事前準備】Instagram Graph API呼出関数を作成
続いて、インスタグラム Graph APIを呼び出す関数を作成します。
以下のコードをそのままコピー&ペーストしましょう。
import requests
import json
import datetime
from pprint import pprint
# API Request Func
def InstaApiCall(url, params, request_type):
    # Request
    if request_type == 'POST':
        req = requests.post(url,params)
    else :
        req = requests.get(url,params)
    
    # Response
    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 resInstagram Graph APIの呼出関数の動作時にエラーが発生した場合、チェックリストに沿った動作チェックを推奨します。以下のリンクを参照下さい。
【Python】Instagram Graph APIの動作チェック
Python環境でInstagram Graph APIを活用したい Instagram Graph APIを正常に呼出できているのか動作確認したい
【Python】Instagram運用アカウントで投稿したメディアの情報取得
Instagramに投稿したメディア(写真・動画)情報を取得する場合、以下に示す関数と出力コードを合わせて活用しましょう。
メディア(写真・動画)情報を取得する関数
def getUserMedia(params,pagingUrl='') :
    """ 
    ***************************************************************************************
    【APIのエンドポイント】
    https://graph.facebook.com/{graph-api-version}/{ig-user-id}/media?fields={fields}&access_token={access-token}
    ***************************************************************************************
    """
    # エンドポイントに渡すパラメータ
    Params = dict()
    Params['fields'] = 'id,caption,media_type,media_url,permalink,thumbnail_url,timestamp,username' # フィールド
    Params['access_token'] = params['access_token']                                                 # アクセストークン
    
    if pagingUrl=='':
        # 先頭のページリンク取得
        url = params['endpoint_base'] + params['instagram_account_id'] + '/media'
    else :
        # 特定のページリンク取得
        url = pagingUrl
    
    # 出力
    return InstaApiCall(url, Params, 'GET')出力コード
# 結果出力(先頭ページ)
response = getUserMedia(config_dict)
print ("\n----------"+str(response['json_data']['data'][0]["username"])+"の投稿内容 ----------\n")
for i, post in enumerate(response['json_data']['data']) :
    print ("\n----------投稿内容("+str(i+1)+")----------\n")
    print ("投稿日: " + post['timestamp'])
    print ("投稿メディアID: "+post['id'])
    print ("メディア種別: " + post['media_type'])
    print ("投稿リンク: " + post['permalink'])
    print ("\n投稿文: "  + post['caption'])
    
# 結果出力(2ページ目)
try:
    response = getUserMedia(config_dict, response['json_data']['paging']['next'])
    print ("\n----------"+str(response['json_data']['data'][0]["username"])+"の投稿内容 ----------\n")
    for i, post in enumerate(response['json_data']['data']) :
        print ("\n----------投稿内容("+str(i+1)+")----------\n")
        print ("投稿日: " + post['timestamp'])
        print ("投稿メディアID: "+post['id'])
        print ("メディア種別: " + post['media_type'])
        print ("投稿リンク: " + post['permalink'])
        print ("\n投稿文: "  + post['caption'])
except:
    pass出力イメージ
# ----------usernameの投稿内容 ----------
# ----------投稿内容(1)----------
# 投稿日: 2022-07-11
# 投稿メディアID: 1234567890
# メディア種別: IMAGE
# 投稿リンク: https://www.instagram.com/p/xxxxxxx/
# 投稿文: APIサンプルテスト
# ----------投稿内容(2)----------
# 投稿日: 2022-07-10
# 投稿メディアID: 0234567890
# メディア種別: IMAGE
# 投稿リンク: https://www.instagram.com/p/xxxxxxx/
# 投稿文: APIサンプルテストこれまでに示したコードを全て記載し実行すると、上記のように、「投稿日」「メディアID」「メディア種別」「投稿リンク」「投稿文」を出力結果として取得できます。
【参考】メディアのインサイトを取得する方法
インスタグラムに投稿したメディアのインサイト(インプレッション数・リーチ数・保存数など)を取得したい場合、以下の記事をご参考ください。
【Python】インスタのユーザー・メディアインサイト指標取得|Instagram Graph APIで運用自動化
Python環境でInstagram Graph APIを活用し、インスタグラムのユーザー・メディアインサイト(インプレッション・リーチ数・セーブ数など)を取得する方法について解説します。
【参考】インスタグラム・その他SNSの運用効率化
当サイトではSNS運用を効率化するための方法を多数解説しています。
Instagram Graph APIを活用したインスタ運用の自動化
| カテゴリ | 記事名 | 
|---|---|
| API利用手順 | Instagram Graph APIの使い方・認証手順・できること | 
| API利用手順 | Instagram Graph APIの動作チェック | 
| API利用手順 | 有効期限を長期化したアクセストークン取得 | 
| インスタ運用効率化 | Instagramユーザー情報取得 | 
| インスタ運用効率化 | Instagramに投稿したメディア情報取得 | 
| インスタ運用効率化 | Instagramハッシュタグの検索結果取得 | 
| インスタ運用効率化 | Instagramに写真や動画をアップロード | 
| インスタ運用効率化 | Instagramメディア・ユーザーインサイト取得 | 
Twitter運用の効率化
Twitter運用を自動化する方法
- Twitter検索結果に基づくデータ収集・分析
 - 定期的に自動ツイートする方法
 - 自動でファボ(いいね)やリツイートする方法
 - 自動でフォロー・ブロック・ミュートする方法
 
最後に

お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら
