【Python】インスタハッシュタグの情報取得・分析|Instagram Graph APIで運用自動化

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

こんな方におすすめ
  • Python環境でInstagram Graph APIを活用する方法が知りたい
  • Instagram Graph APIの「ハッシュタグ検索機能を活用し、検索結果(メディア・投稿文・Like数)を取得する方法」が知りたい
目次

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を活用して「インスタグラムのハッシュタグ検索結果を一括取得する方法」について解説します。

PythonでAPIを呼び出す際、requestsライブラリを使用します。インストールが未済の場合、ターミナル(Mac)またはコマンドプロンプト(Windows)を開き、以下を実行しておきましょう。

pip install requests

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

この見出しではInstagram Graph 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

【事前準備】ハッシュタグ検索結果を取得するID関数を作成

Instagram Graph APIでハッシュタグ検索結果を取得する場合、以下の関数利用を起点にします。

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

def get_hashtag_id(hashtag_word):
    
    """
    ***********************************************************************************
    【APIのエンドポイント】
    https://graph.facebook.com/{graph-api-version}/ig_hashtag_search?user_id={user-id}&q={hashtag-name}&fields={fields}
    ***********************************************************************************
    """
    # リクエスト
    Params = basic_info()                   # リクエストパラメータ
    Params['hashtag_name'] = hashtag_word   # ハッシュタグ情報
    
    # エンドポイントに送付するパラメータ
    Params['user_id'] = Params['instagram_account_id']  # インスタユーザID
    Params['q'] = Params['hashtag_name']                # ハッシュタグ名
    Params['fields'] = 'id,name'                        # フィールド情報
    url = Params['endpoint_base'] + 'ig_hashtag_search' # エンドポイントURL

    # レスポンス
    response = InstaApiCall(url, Params, 'GET')
    
    # 戻り値(ハッシュタグID)
    return response['json_data']['data'][0]['id']

Instagram Graph APIの呼出関数の動作チェックをチェックリストに沿って行いたい場合、以下の記事をご参考ください。

【Python】インスタグラムのハッシュタグ検索結果を取得

Python環境でInstagram Graph APIを活用し、インスタグラムのハッシュタグ検索結果を取得する方法について解説します。

ハッシュタグの検索結果には「トップメディアの検索」と「最近のメディア検索」に2種類があるため、それぞれ個別に後述します。

「トップ」のハッシュタグメディアの検索結果を取得

ハッシュタグの「トップメディア」として表示されるメディア情報を一括取得したい場合、次のコードを実行します。

hashtag_wordに検索したいハッシュタグワードを指定し、コードを実行しましょう。

コード

def get_hashtag_media_top(params,hashtag_id) :
    
    """
    ***********************************************************************************
    【APIのエンドポイント】
    https://graph.facebook.com/{graph-api-version}/{ig-hashtag-id}/top_media?user_id={user-id}&fields={fields}
    ***********************************************************************************
    """
    # パラメータ
    Params = dict()
    Params['user_id'] = params['instagram_account_id']
    Params['fields'] = 'id,children,caption,comment_count,like_count,media_type,media_url,permalink'
    Params['access_token'] = params['access_token']
    
    # エンドポイントURL
    url = params['endpoint_base'] + hashtag_id + '/' + 'top_media'
    
    return InstaApiCall(url, Params, 'GET')


# 【要修正】検索したいハッシュタグワードを記述
hashtag_word = 'おしゃれカフェ'

# ハッシュタグIDを取得
hashtag_id = get_hashtag_id(hashtag_word)

# パラメータセット
params = basic_info() 

# ハッシュタグ情報取得
hashtag_response = get_hashtag_media_top(params,hashtag_id)

# 出力
print("「"+hashtag_word+"」のハッシュタグID: "+str(hashtag_id))
for post in hashtag_response['json_data']['data'] : 
    print ("\n\n---------- トップメディア ----------\n") 
    print ("ID: "+post["id"])
    print ("\n投稿リンク: "+post['permalink'])
    try:
        print ("\nいいね数: "+str(post["like_count"]))
    except:
        pass
    print ("\n投稿文:")
    print (post['caption']) 
    print ("\nメディアタイプ:") 
    print (post['media_type'])

出力イメージ

# 「おしゃれカフェ」のハッシュタグID: 17841551125094952
# ---------- トップメディア ----------
# ID: 17929547714372703
# 投稿リンク: https://www.instagram.com/p/Cf_RIl6NEXD/
# いいね数: 729
# 投稿文:
# 他のカフェも見る→cafe_hiko
# ———————————————————
# 【こちらのカフェについて】
# 今回は、富士市にある、
# デートでも使いたい穴場カフェのご紹介です!
# こちらのカフェは、富士市にひっそりと佇み、内装が黒に統一されていて、フォトジェニックな印象を受けます!
# 他のカフェも見る→cafe_hiko
# ——————————————————— 
# #静岡 #静岡カフェ #静岡グルメ 
# メディアタイプ:
# CAROUSEL_ALBUM

コード実行後、ハッシュタグ検索結果(メディアID・投稿リンク・投稿文・いいね数)の一覧が取得できます。

「最近」のハッシュタグメディアの検索結果を取得

ハッシュタグの「最近のメディア」として表示されるメディア情報を一括取得したい場合、次のコードを実行します。

hashtag_wordに検索したいハッシュタグワードを指定し、コードを実行しましょう。

コード

# 【要修正】検索したいハッシュタグワードを記述
hashtag_word = 'おすすめ旅行'


def get_hashtag_media_recent(params,hashtag_id) :
    
    """
    ***********************************************************************************
    【APIのエンドポイント】
    https://graph.facebook.com/{graph-api-version}/{ig-hashtag-id}/recent_media?user_id={user-id}&fields={fields}
    ***********************************************************************************
    """
    # パラメータ
    Params = dict()
    Params['user_id'] = params['instagram_account_id']
    Params['fields'] = 'id,children,caption,comment_count,like_count,media_type,media_url,permalink'
    Params['access_token'] = params['access_token']
    
    # エンドポイントURL
    url = params['endpoint_base'] + hashtag_id + '/' + 'recent_media'
    
    return InstaApiCall(url, Params, 'GET')


# ハッシュタグIDを取得
hashtag_id = get_hashtag_id(hashtag_word)
print("「"+hashtag_word+"」のハッシュタグID: "+str(hashtag_id))

# パラメータセット
params = basic_info() 

# ハッシュタグ情報取得
hashtag_response = get_hashtag_media_recent(params,hashtag_id)

# 出力
print("「"+hashtag_word+"」のハッシュタグID: "+str(hashtag_id))
for post in hashtag_response['json_data']['data'] : 
    print ("\n\n---------- 最近メディア ----------\n") 
    print ("ID: "+post["id"])
    print ("\n投稿リンク: "+post['permalink'])
    try:
        print ("\nいいね数: "+str(post["like_count"]))
    except:
        pass
    print ("\n投稿文:")
    print (post['caption']) 
    print ("\nメディアタイプ:") 
    print (post['media_type'])

出力イメージ

# 「おすすめ旅行」のハッシュタグID: 17841506677082246
# ---------- 最近メディア ----------
# ID: 18171153640242596
# 投稿リンク: https://www.instagram.com/p/CgDdhMZBboU/
# いいね数: 30
# 投稿文:
# これは、私の家でお父さんがつまみとして食べていたホタルイカの佃煮です!🦑
# ぜひ皆さんも食べてみてください😀!
# #島巡り #知多半島 #食べ物 #フォローしてね #是非日間賀島に遊びに来てね♡
# メディアタイプ:
# IMAGE

コード実行後、ハッシュタグ検索結果(メディアID・投稿リンク・投稿文・いいね数)の一覧が取得できます。

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

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

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

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

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

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

Twitter運用の効率化

最後に

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

本記事をシェア!
目次