見出し画像

インスタAPI×生成AIの可能性を試してみた

SNSの投稿に”いいね”がつかない。そもそも、見てもらえない。そんな悩みがありませんか?私は気になってしょうがありません!そこで、SEO対策を調べていたところ、instagramグラフAPIというものを知りました。どうやら任意のハッシュタグを入れると、直近や人気の投稿を自動取得できるらしいのです。

そこで、ハッシュタグから流行を探ろうとAPIを取得してみようと思いましたが、これがとても複雑で非常に苦労しました。解説ページがたくさんありますが、バージョンが違うために一筋縄ではいきませんでした。以下にAPIの取得方法をざっとまとめました。

APIの取得方法

1、インスタのアカウントをプロアカウントに変更します。これはそんなに難しくありません。

2、Facebookアカウントをインスタと連携します。これがよくわからなくて何時間もかかりました。以下のページがわかりやすいので、おすすめです。

3、Meta for Developersでアプリを作り、アクセストークンを恒久化します。私は2を飛ばして3を進めたためにうまくいかず、APIを使うのに必要なビジネスIDを取得できませんでした。必ず順番通りに行いましょう。


ここまでで準備は完了です。ここからAPIを使って、任意のハッシュタグに関連する投稿を取得します。私は、以下のコードで投稿本文やいいね・コメント数、投稿時間を取得します。

 
def fetch_posts():
    hashtag = hashtag_entry.get()
    if not hashtag:
        messagebox.showwarning("入力エラー", "ハッシュタグを入力してください")
        return
    media_type = media_type_var.get()
    num_posts_to_fetch = int(num_posts_var.get())
    hashtag_id = get_hashtag_id(hashtag)
    time.sleep(5)
    if hashtag_id:
        posts = get_hashtag_posts(
            hashtag_id, media_type, limit=num_posts_to_fetch)
        if posts:
            for post in posts:
                caption = post.get('caption', '')
                cleaned_caption = preprocess_caption(caption)
                like_count = post.get('like_count', 'N/A')
                comments_count = post.get('comments_count', 'N/A')
                post_timestamp = convert_to_jst(post.get('timestamp', 'N/A'))
                save_to_database(cleaned_caption, like_count,
                                 comments_count, post_timestamp, hashtag)
                output_text = f"------------------------\n"
                output_text += f"{cleaned_caption}\n"
                output_text += f"いいね数: {like_count}\n"
                output_text += f"コメント数: {comments_count}\n"
                output_text += f"投稿日時: {post_timestamp}\n"
                output_text += f"ハッシュタグ: #{hashtag}\n"
                output_text += f"------------------------\n"
                result_text.insert(tk.END, output_text)
        else:
            result_text.insert(tk.END, f"投稿が見つかりませんでした。\n")
    else:
        result_text.insert(tk.END, f"ハッシュタグ#{hashtag}が見つかりません。\n")
        time.sleep(300)

レート制限があり、私の場合は1時間に200投稿までしか取得できないので、残り何回取得できるか確認できる機能も追加しました。ちなみにハッシュタグは7日間で30個までしか調べられないそうです。同じタグは1つとカウントされます。

ここからAIが登場します。

今回の肝になるのが、タイトルにあるAPI×生成AI!私が試したのは、たくさん取得した投稿をAIを使って分析し、流行を調べることです。テキストマイニングのようなことを自動化してみました。使ったAIは、Google Gemini 1.5 Flashです。投稿が200件を超えると2万トークンを超えますが、GPT-4-miniでは思い通りの結果が得られなかったので、長文に強いGeminiを選択しました。ということで、以下のアプリが完成しました。

ハッシュタグ検索分析アプリの画面

左上がハッシュタグの入力欄、その下に取得数と実行ボタンがあります。真ん中が取得した投稿内容で、その下にはレート制限のチェックボタンです。右側がAIの分析コンテナです。出力フォーマットがまだ完成していないため、実行するたびに異なる結果が出力されますが、投稿の内容を分析して、入力したハッシュタグに応じた内容を教えてくれます。

アプリを作ってわかったこと

投稿の取得方法には2種類あります。最新の投稿を取得するものと、人気の投稿を取得するものです。最新のものは24時間内の投稿が表示され、直近の評判を確認できますが、お店の投稿も多い傾向があります。人気の投稿は、いいねの数が多く参考になるものが多いですが、2年前の投稿なども含まれるため、最新の流行がわかりません。そこで、最新のものを取得し、プロンプトでお店の情報よりも訪問者の投稿を優先するよう工夫しました。また、#大分グルメというタグを使っている人は、同時に#大分カフェ、#大分ランチなど、類似したタグを使っていることが多いため、何を知りたいかによってよりニッチなハッシュタグを選択した方が良いとわかりました。例えば、大分の朝ごはんの流行を知りたいときは、大分グルメではなく、大分朝ごはんと調べたほうが、流行がわかるという子です。ちなみに、2種類のタグの論理和を調べることはできないそうです。

まとめ

ということで、APIで自動取得した投稿をAIで分析することはできました。
これで、ハッシュタグの分析が進めば、世の中の流行をいち早くキャッチできそうな気がしますので、しばらく続けてみて1週間続けてみて、発見があれば報告したいと思います。


この記事が気に入ったらサポートをしてみませんか?