こんにちは、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でAPIを呼び出す際、requestsモジュールを活用します。インストールが未済の場合、ターミナルまたはコマンドプロンプトを開き、以下を実行しておきましょう。
pip install requests
【Python】Instagram Graph API呼出関数を作成
この見出しではInstagram Graph APIをPythonで呼び出すための関数作成方法について解説します。
【事前準備】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 res
【事前準備】Instagram Graph APIでメディアを操作する関数
インスタグラムに写真や動画をアップロードする場合、以下に示すcreateMedia関数、getMediaStatus関数、publishMedia関数、getContentPublishingLimit関数を用います。
以下のコードをそのまま記述しましょう。
import time
# メディア作成
def createMedia(params) :
"""
******************************************************************************************************
【画像・動画コンテンツ作成】
https://graph.facebook.com/v5.0/{ig-user-id}/media?image_url={image-url}&caption={caption}&access_token={access-token}
https://graph.facebook.com/v5.0/{ig-user-id}/media?video_url={video-url}&caption={caption}&access_token={access-token}
******************************************************************************************************
"""
# エンドポイントURL
url = params['endpoint_base'] + params['instagram_account_id'] + '/media'
# エンドポイント用パラメータ
Params = dict()
Params['caption'] = params['caption'] # 投稿文
Params['access_token'] = params['access_token'] # アクセストークン
# メディアの区分け
if 'IMAGE' == params['media_type'] :
# 画像:メディアURLを画像URLに指定
Params['image_url'] = params['media_url'] # 画像URL
else :
# 動画:メディアURLを動画URLに指定
Params['media_type'] = params['media_type'] # メディアタイプ
Params['video_url'] = params['media_url'] # ビデオURL
# 出力
return InstaApiCall(url, Params, 'POST')
# メディアID別ステータス管理
def getMediaStatus(mediaObjectId, params) :
"""
******************************************************************************************************
【APIエンドポイント】
https://graph.facebook.com/v5.0/{ig-container-id}?fields=status_code
******************************************************************************************************
"""
# エンドポイントURL
url = params['endpoint_base'] + '/' + mediaObjectId
# パラメータ
Params = dict()
Params['fields'] = 'status_code' # フィールド
Params['access_token'] = params['access_token'] # アクセストークン
# 出力
return InstaApiCall(url, Params, 'GET')
# メディア投稿
def publishMedia(mediaObjectId, params):
"""
******************************************************************************************************
【APIエンドポイント】
https://graph.facebook.com/v5.0/{ig-user-id}/media_publish?creation_id={creation-id}&access_token={access-token}
******************************************************************************************************
"""
# エンドポイントURL
url = params['endpoint_base'] + params['instagram_account_id'] + '/media_publish'
# エンドポイント送付用パラメータ
Params = dict()
Params['creation_id'] = mediaObjectId # メディアID
Params['access_token'] = params['access_token'] # アクセストークン
# 出力
return InstaApiCall(url, Params, 'POST')
# ユーザの公開レート制限・使用率を取得
def getContentPublishingLimit( params ) :
"""
******************************************************************************************************
https://graph.facebook.com/v5.0/{ig-user-id}/content_publishing_limit?fields=config,quota_usage
******************************************************************************************************
"""
# エンドポイントURL
url = params['endpoint_base'] + params['instagram_account_id'] + '/content_publishing_limit' # endpoint url
# エンドポイント送付用のパラメータ
Params = dict()
Params['fields'] = 'config,quota_usage' # フィールド
Params['access_token'] = params['access_token'] # アクセストークン
return InstaApiCall(url, Params, 'GET')
Instagram Graph APIの呼出関数の動作チェックをチェックリストに沿って行いたい場合、以下の記事をご覧下さい。
【Python】Instagram Graph APIの動作チェック
Python環境でInstagram Graph APIを活用したい Instagram Graph APIを正常に呼出できているのか動作確認したい
【Python】Instagramに画像を投稿
Python環境でInstagram Graph APIを活用し、インスタ画像を投稿する方法を以下に示します。
media_url
に投稿したい写真のリンク、media_caption
に投稿文を記載した上でコードを実行してみましょう。
# 画像投稿
def instagram_upload_image(media_url, media_caption):
# パラメータ
config_dict['media_type'] = 'IMAGE' # メディアType
config_dict['media_url'] = media_url # メディアURL
config_dict['caption'] = media_caption
# APIでメディア作成&ID発行
imageMediaId = createMedia(config_dict)['json_data']['id']
# メディアアップロード
StatusCode = 'IN_PROGRESS';
while StatusCode != 'FINISHED' :
# メディアステータス取得
StatusCode = getMediaStatus(imageMediaId,config_dict)['json_data']['status_code']
# 待ち時間
time.sleep(5)
# Instagramにメディア公開
publishImageResponse = publishMedia(imageMediaId,config_dict)
# 出力
print("Instagram投稿完了")
return publishImageResponse['json_data_pretty']
# 【要修正】投稿内容
media_url = 'https://di-acc2.com/wp-content/uploads/2022/07/cropped-DXCELWAVE.jpg' # 画像
media_caption = '投稿文を記述' # 投稿文
# 関数実行
instagram_upload_image(media_url, media_caption)
【Python】Instagramに動画を投稿
Python環境でInstagram Graph APIを活用し、インスタ動画を投稿する方法を以下に示します。
media_url
に投稿したい動画のリンク、media_caption
に投稿文を記載した上でコードを実行してみましょう。
# 動画投稿
def instagram_upload_video(media_url, media_caption):
# パラメータ
params = basic_info()
params['media_type'] = 'VIDEO'
params['media_url'] = media_url
params['caption'] = media_caption
# APIで動画メディア作成&ID発行
videoMediaId = createMedia(params)['json_data']['id']
# メディアアップロード
StatusCode = 'IN_PROGRESS';
while StatusCode != 'FINISHED' :
# メディアステータス取得
StatusCode = getMediaStatus(videoMediaId, params) ['json_data']['status_code']
# 待ち時間
time.sleep(5)
# Instagramに動画公開
publishVideoResponse = publishMedia( videoMediaId, params )
# API制限確認
contentPublishingApiLimit = getContentPublishingLimit( params )
# 出力
print("Instagram投稿完了")
return contentPublishingApiLimit['json_data_pretty']
# 【要修正】投稿内容
media_url = 'https://動画メディア.mp4' # 画像
media_caption = '投稿文を記述' # 投稿文
# 関数実行
instagram_upload_video(media_url, media_caption)
【参考】インスタグラム・その他SNSの運用効率化
当サイトではSNS運用を効率化するための方法を多数解説しています。
Instagram Graph APIを活用したインスタ運用の自動化
カテゴリ | 記事名 |
---|---|
API利用手順 | Instagram Graph APIの使い方・認証手順・できること |
API利用手順 | Instagram Graph APIの動作チェック |
API利用手順 | 有効期限を長期化したアクセストークン取得 |
インスタ運用効率化 | Instagramユーザー情報取得 |
インスタ運用効率化 | Instagramに投稿したメディア情報取得 |
インスタ運用効率化 | Instagramハッシュタグの検索結果取得 |
インスタ運用効率化 | Instagramに写真や動画をアップロード |
インスタ運用効率化 | Instagramメディア・ユーザーインサイト取得 |
インスタグラム運用代行サービス
「面倒なSNS運用を全て代行してほしい」「質のいいフォロワーを獲得したい」「SNS経由での収益導線を強化したい」という方向けにこちらのサービスもおすすめします。
Twitter運用の効率化
Twitter運用を自動化する方法
- Twitter検索結果に基づくデータ収集・分析
- 定期的に自動ツイートする方法
- 自動でファボ(いいね)やリツイートする方法
- 自動でフォロー・ブロック・ミュートする方法
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら