InstagrapiでInstagram自動化:わかりやすいガイド

Mark Ponomarev

Mark Ponomarev

5 6月 2025

InstagrapiでInstagram自動化:わかりやすいガイド

Instagramでのタスク自動化は、オンラインプレゼンスの管理方法を大幅に効率化できます。instagrapiは、まさにそれを支援するために設計されたPythonライブラリです。公式モバイルアプリが使用しているのと同じ、Instagram自身のバックエンドシステムと直接連携します。この直接通信により、instagrapiは高速かつ効率的であり、ウェブブラウザを必要としません。

このガイドは、instagrapiを使い始めるための明確な道筋を提供することを目的としています。インストール方法、Instagramアカウントへの安全なログイン方法、投稿やユーザーとのやり取りなどの一般的なアクションの実行方法、コンテンツのアップロード方法、そして自動化を安全かつ効果的に行うための必須の実践方法について説明します。

💡
美しいAPIドキュメントを生成する優れたAPIテストツールをお探しですか?

最大限の生産性で開発チームが協力して作業できる、統合されたオールインワンプラットフォームをお探しですか?

Apidogはあなたのすべての要望に応え、Postmanをはるかに手頃な価格で置き換えます
button

システムへのInstagrapiの導入

instagrapiを使用する前に、インストールする必要があります。まず、コンピュータにPythonがインストールされていることを確認してください。instagrapiはPythonバージョン3.9以降で最適に動作します。ターミナル(Command Prompt、PowerShell、またはmacOS/LinuxのTerminal)を開き、python --versionまたはpython3 --versionと入力することで、Pythonのバージョンを確認できます。

Pythonの準備ができたら、Pythonのパッケージインストーラーであるpipを使用してinstagrapiを簡単にインストールできます。ターミナルで、次のコマンドを実行してください。

pip install instagrapi

Python 3のインストールに特にpython3を使用している場合は、次のコマンドが必要になる場合があります。

python3 -m pip install instagrapi

このコマンドは、instagrapiとその依存ライブラリをダウンロードしてインストールします。プロジェクト管理をよりクリーンに行うために、Pythonの仮想環境を使用することがよく推奨されます。これは、プロジェクトの依存関係を分離します。python3 -m venv your_project_nameで仮想環境を作成し、それをアクティベートしてから、その中でpip install instagrapiコマンドを実行できます。

Instagramアカウントへの接続

Instagramでアクションを実行するには、スクリプトがログインする必要があります。instagrapiはこのプロセスを処理します。Pythonスクリプトの最初のステップは、Clientクラスをインポートし、そのインスタンスを作成することです。このClientオブジェクトが、すべてのインタラクションの主要なツールとなります。

from instagrapi import Client
import os
import time
import random

cl = Client()

次に、ログインしましょう。スクリプトにユーザー名とパスワードを直接ハードコーディングすることは、強く推奨されません。環境変数を使用する方がより安全な方法です。

INSTAGRAM_USERNAME = os.getenv("INSTA_USERNAME", "your_insta_username")
INSTAGRAM_PASSWORD = os.getenv("INSTA_PASSWORD", "your_insta_password")

try:
    cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
    print(f"Login successful as @{INSTAGRAM_USERNAME}!")
except Exception as e:
    print(f"Login failed for @{INSTAGRAM_USERNAME}. Error: {e}")

アカウントで二段階認証(2FA)が有効になっている場合(これはセキュリティのために非常に良いことです)、loginメソッドには追加のverification_codeパラメータが必要になります。通常、このコードは認証アプリまたはSMSから取得し、ログイン呼び出し時に渡します:cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD, verification_code="YOUR_2FA_CODE")

ユーザー名とパスワードで常にログインし続けることは非効率的であり、Instagramから不要な注目を集める可能性があります。よりスマートなアプローチは、最初のログイン成功後にログインセッションを保存し、その後のスクリプト実行時にこのセッションを再ロードすることです。

セッションを管理する方法は以下の通りです。

from instagrapi.exceptions import LoginRequired

SESSION_FILE_PATH = "my_active_session.json"

if os.path.exists(SESSION_FILE_PATH):
    cl.load_settings(SESSION_FILE_PATH)
    print(f"Loaded session from {SESSION_FILE_PATH}.")
    try:
        cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
        cl.get_timeline_feed()
        print("Session is valid and login successful using saved session.")
    except LoginRequired:
        print("Saved session was invalid. Need to perform a fresh login.")
        try:
            cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
            cl.dump_settings(SESSION_FILE_PATH)
            print("Fresh login successful, new session saved.")
        except Exception as e_relogin:
            print(f"Fresh login failed after invalid session: {e_relogin}")
    except Exception as e_session_use:
        print(f"Error while using saved session: {e_session_use}. Trying fresh login.")
        try:
            cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
            cl.dump_settings(SESSION_FILE_PATH)
            print("Fresh login successful after session error, new session saved.")
        except Exception as e_fresh_fallback:
            print(f"Fresh login fallback also failed: {e_fresh_fallback}")

else:
    print("No session file found. Performing fresh login...")
    try:
        cl.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
        cl.dump_settings(SESSION_FILE_PATH)
        print(f"Fresh login successful, session saved to {SESSION_FILE_PATH}.")
    except Exception as e_initial_login:
        print(f"Initial fresh login failed: {e_initial_login}")

if cl.user_id:
    print(f"Successfully authenticated. User ID: {cl.user_id}")
else:
    print("Authentication failed. Check credentials and previous error messages.")

この組み合わせたアプローチは、まず保存されたセッションを使用しようとし、必要に応じて新規ログインにフォールバックし、次回の使用のために新しいセッションを保存します。

InstagrapiによるコアなInstagramインタラクション

ログインに成功したら、Instagramとのインタラクションを開始できます。以下の例では、clが正常にログインしたClientオブジェクトであると仮定します。

ユーザー情報の取得
ユーザー名がわかっていれば、任意のInstagramユーザーの公開情報を取得できます。これには、固有のユーザーID(PK)、フルネーム、自己紹介、フォロワー数などが含まれます。

target_user = "instagram"
try:
    user_id_num = cl.user_id_from_username(target_user)
    print(f"The unique User ID for @{target_user} is {user_id_num}.")

    user_details = cl.user_info_by_username(target_user)
    print(f"\nDetails for @{user_details.username}:")
    print(f"  Followers: {user_details.follower_count}")
    print(f"  Bio: {user_details.biography[:50]}...")
except Exception as e:
    print(f"Could not fetch info for @{target_user}. Error: {e}")

投稿(メディア)とのインタラクション
Instagramの投稿は、instagrapiでは「メディア」と呼ばれます。投稿とインタラクションするには、通常、そのmedia_pk(投稿の固有の数値ID)が必要です。このmedia_pkは、投稿のURLから取得できます。以下の例は、投稿の詳細を取得する方法を示しています。いいねやコメントなどのインタラクションは自動化に非常に敏感です。このような機能は控えめに、常に倫理的に使用してください。

example_post_url = "https://www.instagram.com/p/C_q9Jg1NAn1/"

try:
    media_pk_val = cl.media_pk_from_url(example_post_url)
    print(f"The media_pk for the post is: {media_pk_val}")

    media_details = cl.media_info(media_pk_val)
    print(f"\nPost by @{media_details.user.username} has {media_details.like_count} likes.")
    print(f"Caption snippet: {media_details.caption_text[:60]}...")
    
    string_media_id_for_action = cl.media_id(media_pk_val)
    print(f"String media_id for actions (like liking/commenting): {string_media_id_for_action}")
    
except Exception as e:
    print(f"Error interacting with post {example_post_url}. Error: {e}")

投稿に「いいね」をするには、cl.media_like(string_media_id_for_action)を使用します。コメントするには、cl.media_comment(string_media_id_for_action, text="Your comment")を使用します。このようなアクションの後には、必ず遅延(time.sleep())を含めてください。

コンテンツのアップロード
instagrapiを使用すると、写真、ビデオ、アルバム、ストーリーズをアップロードできます。

写真のアップロード:
JPG画像ファイルへのパスが必要です。以下の例は構造を示しており、有効な画像へのパスを提供する必要があります。

from pathlib import Path

image_path_to_upload = Path("your_image.jpg")
photo_caption = "My first photo upload with Instagrapi! #Python #Automation"

if image_path_to_upload.exists() and image_path_to_upload.suffix.lower() == ".jpg":
    try:
        uploaded_photo = cl.photo_upload(image_path_to_upload, photo_caption)
        print(f"Photo uploaded! View it at: https://www.instagram.com/p/{uploaded_photo.code}/")
    except Exception as e:
        print(f"Photo upload failed for {image_path_to_upload}. Error: {e}")
else:
    print(f"'your_image.jpg'を有効なJPGファイルへのパスに置き換えてください。")

ストーリーズのアップロード:
ストーリーズは通常、9:16のアスペクト比を使用します。写真またはビデオをアップロードできます。写真ストーリーズをアップロードするコードは、通常の写真投稿と似ていますが、photo_upload_to_storyを使用します。

from instagrapi.types import StoryMention, StoryLink

story_image_path = Path("your_story_image.jpg")

if story_image_path.exists() and story_image_path.suffix.lower() == ".jpg":
    try:
        uploaded_story = cl.photo_upload_to_story(
            story_image_path,
            caption="My Instagrapi Story!"
        )
        print(f"Story uploaded successfully! PK: {uploaded_story.pk}")
    except Exception as e:
        print(f"Story upload failed for {story_image_path}. Error: {e}")
else:
    print(f"'your_story_image.jpg'をストーリーズ用の有効な9:16 JPGファイルへのパスに置き換えてください。")

mentionslinksのようなインタラクティブな要素を追加するには、StoryMentionまたはStoryLinkオブジェクトを準備し、photo_upload_to_storyにパラメータとして渡します。

スムーズな自動化のための重要な考慮事項

Instagramアクションを自動化する際には、信頼性を確保し、アカウントの問題を回避するために、いくつかの実践が不可欠です。

遅延を導入する:人間のユーザーは、次々と即座にアクションを実行しません。スクリプトもそうすべきではありません。アクション間にtime.sleep(random.uniform(min_seconds, max_seconds))を使用して、自然なインタラクションパターンを模倣してください。instagrapi自体には、特定の操作に自動遅延を追加するcl.delay_range = [min, max]設定があります。

集中的な使用にはプロキシを検討する:スクリプトが大量のリクエストを行う場合、または同じIPアドレスから複数のアカウントを管理している場合、Instagramがアクティビティを制限する可能性があります。プロキシサーバー(cl.set_proxy("your_proxy_string"))を使用すると、リクエストを分散させ、異なる場所から来ているように見せかけることができます。

潜在的なエラーを処理する:ネットワークの問題が発生したり、InstagramのAPIが変更されたり、レート制限に達したりする可能性があります。instagrapiの呼び出しをtry...exceptブロックで囲み、これらのエラーを適切に捕捉してください。instagrapiには、RateLimitErrorUserNotFoundMediaNotFoundなどの特定のエラーがあり、よりターゲットを絞ったエラー処理のためにこれらを捕捉できます。

責任を持って倫理的に使用する:自動化は強力です。スパム行為、ユーザーのプライバシー侵害、Instagramの利用規約やコミュニティガイドラインに違反する活動は避けてください。自動化の目標は、真のインタラクションを強化したり、プレゼンスを効率的に管理したりすることであり、操作や迷惑行為ではありません。

簡単な自動化の例:ハッシュタグの最近の投稿に「いいね」をする

特定のハッシュタグの最近の投稿を見つけて、いくつか「いいね」をする小さなスクリプトを作成しましょう。これは、いくつかのinstagrapi機能を組み合わせたデモンストレーションです。この例は、細心の注意を払って、責任ある使用に沿ったハッシュタグと量でのみ使用してください。このコードは例示であり、攻撃的な使用はアカウントに損害を与える可能性があります。

target_hashtag_for_liking = "pythonprogramming"
number_of_posts_to_like = 1

try:
    print(f"Fetching recent media for #{target_hashtag_for_liking}...")
    recent_hashtag_media = cl.hashtag_medias_recent(target_hashtag_for_liking, amount=number_of_posts_to_like * 2)

    liked_count = 0
    if recent_hashtag_media:
        for media_item in recent_hashtag_media:
            if liked_count >= number_of_posts_to_like:
                break

            if not media_item.has_liked:
                print(f"  Attempting to like post PK {media_item.pk} by @{media_item.user.username}...")
                try:
                    media_id_str_to_like = cl.media_id(media_item.pk)
                    cl.media_like(media_id_str_to_like)
                    liked_count += 1
                    print(f"    Successfully liked. Liked {liked_count}/{number_of_posts_to_like} posts so far.")
                    time.sleep(random.uniform(15, 25))
                except Exception as e_like:
                    print(f"    Could not like post PK {media_item.pk}. Error: {e_like}")
            else:
                print(f"  Skipping already liked post PK {media_item.pk} by @{media_item.user.username}.")
        print(f"\nFinished liking script for #{target_hashtag_for_liking}. Total liked in this run: {liked_count}")
    else:
        print(f"No recent media found for #{target_hashtag_for_liking}.")

except Exception as e_hashtag_script:
    print(f"An error occurred in the hashtag liking script: {e_hashtag_script}")

この例はデモンストレーション用です。「いいね」の自動化、特に大量に行うことは、Instagramによって簡単にフラグ付けされる可能性があります。常に、大量の自動化アクションよりも真のエンゲージメントを優先してください。

Instagrapiで先に進む

instagrapiは、Instagramとインタラクションするための豊富なツールセットを提供します。このガイドでは、セットアップ、ログイン、および最も一般的なアクションのいくつかを示すことで、表面をなぞったにすぎません。

instagrapiを真にマスターするには、公式ドキュメントを探索してください。Instagrapi GitHubリポジトリREADME.mdファイルは、通常、そのdocsフォルダ内のより詳細なガイドやAPIリファレンスへのリンクがあり、最適な出発点です。これらのリソースは、さらに多くの機能、高度な設定、およびさまざまなInstagramオブジェクトの特定の型をカバーしています。

InstagramプラットフォームとそのAPIは変更される可能性があるため、今日機能することが明日には調整が必要になる可能性があることを覚えておいてください。instagrapiライブラリとコミュニティの議論の最新情報を得ることは、適応に役立ちます。責任を持って、楽しく自動化しましょう!

💡
美しいAPIドキュメントを生成する優れたAPIテストツールをお探しですか?

最大限の生産性で開発チームが協力して作業できる、統合されたオールインワンプラットフォームをお探しですか?

Apidogはあなたのすべての要望に応え、Postmanをはるかに手頃な価格で置き換えます
button

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる