【ChatGPT × Twitter (X)】初心者もできる!ツイートをプチ自動化した話

ChatGPT×TwitterX

つい最近「X」に名前が変わったTwitter。

実は当ブログでもTwitterは利用していて、筆者が「情報1」の基本単語を1日につき1つツイートしています。

ただ、それも地味に手間なんですよね。

情報1の語句をツイートするので、その中身は

  • 語句
  • 語句の解説

の2種です。これらは別途Excelにまとめているのですが、

コトゼニ
コトゼニ

それをブラウザで立ち上げてコピペするのも実は一手間・・・。

そこでそれを自動化できないかと考えました。しかし自動化の手順を調べると

  • TwitterAPI
  • Pythonでコードを組み立てる
  • SeleniumBasic

などが見つかりましたが…

コトゼニ
コトゼニ

よくわからん!

そのため、もう少し挙動を絞り、マクロを作ろうと考えました。

その際にまた役立てたのが、いつも通り、「ChatGPT」。

ChatGPTと協力して以下のようなマクロを作りました。

  • ボタンを押したら指定回数だけ、Excelに書いたツイート内容をコピーしツイート下書き画面に貼り付ける

挙動はこんな感じです。

動画

この記事では、マクロ作成にあたりChatGPTに投げたプロンプトやVBAのコードを紹介しています。

TwitterAPIやPythonがわからない方でも大丈夫!ぜひ最後まで読んでみてください。

【TwitterAPIやPythonがわからなくても大丈夫】マクロ製作の経緯とプロンプトになげる前提

あらためてマクロを製作した経緯は

1日1ツイートする際に、

  1. 語句・語句の解説をまとめているExcelの内容を
  2. ブラウザでTwitterを立ち上げる
  3. ツイート(下書き)画面にコピペする

この流れが実は一手間でこれを解消するためでした・・・。

つまり、作業を実行する際には、

  • Excelにツイートしたい内容が記されている(Excelのセルをコピペするため)
  • Google ChromeでTwitterに事前にログインしておく

ことになります。

ですから、この2つの状況を前提として、この状況で動くマクロに仕上げてもらう必要があります。

そのためChatGPTに投げかける際には「Excelがあること」「GoogleChrome」を使うことはプロンプトに含めないといけません。

作業手順を整理→ChatGPTへ投げてみる

ChatGPTに相談する際には、作業手順を整理して、「その作業を網羅する内容のマクロを作って欲しい」と投稿した方が効果的なのは過去の経験からも明らかです。

こちらの記事で紹介しています。

eyecatch46662ChatGPT×PowerPointで爆速で画像を作る方法

そのため、作業を整理してみました。

  1. Excelのリストから語句番号を選択肢、その番号の語句と解説を表示させる(VLOOKUP関数を使用)
  2. 語句と解説をまとめたセルをコピー
  3. Twitterの下書き画面を表示
  4. 下書き画面に②でコピーした内容を貼り付け
  5. ツイート投稿日時を予約→予約投稿設定完了

⑤についてはVBAで実現できるかは分かりませんので①〜④を叶えるためにそのままプロンプトへ

投稿したプロンプト

コトゼニ
コトゼニ

以下の処理の手順を一連の流れとしてVBAでまとめることができますか?

①ExcelのTwitter用シートのC12セルの内容をコピー

②いま起動しているGoogleChromeで「https://twitter.com/compose/tweet」にアクセスする

③表示される下書き部分に①でコピーした内容をペーストする

chatGPT
chatGPT

はい、VBAを使用して以下の手順を一連の流れとしてまとめることができます。

そして出てきたコードがこちら。

Sub TweetWithPython()
    Dim tweetText As String
    Dim chromePath As String
    Dim tweetURL As String
    Dim pythonPath As String
    Dim scriptPath As String
    Dim cmd As String
    
    ' Twitter用シートのC12セルの内容を取得
    tweetText = Sheets("Twitter用シート").Range("C12").Value
    
    ' クリップボードにコピー
    AlternativeCopyToClipboard tweetText
    
    ' Google Chromeのインストールパスを設定(自分の環境に合わせて変更してください)
    chromePath = "C:\Program Files\Google\Chrome\Application\chrome.exe"
    
    ' Twitterの投稿画面のURLを指定
    tweetURL = "https://twitter.com/compose/tweet"
    
    ' Google ChromeでURLを開く
    Shell """" & chromePath & """ """ & tweetURL & """", vbNormalFocus
    
    ' 2秒待機(Twitterの投稿画面が表示されるまでの待ち時間)
    Application.Wait Now + TimeValue("00:00:02")
    
    ' ブラウザ上でペーストする(Ctrl+Vを送信)
    SendKeys "^{v}"
    
    ' Pythonのインストールパスを設定(自分の環境に合わせて変更してください)
    pythonPath = "C:\Users\(ユーザー名)\AppData\Local\Programs\Python\Python39\python.exe"
    
    ' Pythonスクリプトのファイルパスを設定
    scriptPath = "C:\Users\(ユーザー名)\Desktop\pythontest\twitter_post.py"
    
    ' コマンドを組み立てる
    cmd = """" & pythonPath & """ """ & scriptPath & """ """ & tweetText & """"
    
    ' Pythonスクリプトを実行
    Call Shell(cmd, vbNormalFocus)
End Sub

Sub AlternativeCopyToClipboard(text As String)
    ' クリップボードにテキストをコピーする代替方法
    Dim dataObj As Object
    Set dataObj = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    dataObj.SetText text
    dataObj.PutInClipboard
    Set dataObj = Nothing
End Sub
' Google Chromeのインストールパスを設定(自分の環境に合わせて変更してください)
    chromePath = "C:\Program Files\Google\Chrome\Application\chrome.exe"

この部分については、実際にエクスプローラーからCドライブを辿っていってもらい、「chrome.exe」ファイルが保存されているフォルダを見つけて、そのパスを入力してください。

これでツイート一回分は実行できました。

全体の処理を指定した回数だけ繰り返すように機能追加

あとはこの全体の処理を指定した回数だけ繰り返すように機能追加します。

コトゼニ
コトゼニ

以下の要件を満たすように追記してください。

【要件】Twitter用シートのD2に指定された回数だけ、マクロ(TweetWithPython())を実行する

chatGPT
chatGPT

了解しました!指定された回数だけTweetWithPython()マクロを実行するために、Forループを使用します。以下が更新されたVBAコードです。

Sub TweetMultipleTimes()
    Dim tweetText As String
    Dim tweetCount As Integer
    Dim i As Integer
    
    ' Twitter用シートのD2セルの回数を取得
    tweetCount = Sheets("Twitter用シート").Range("D2").Value
    
    ' ツイート内容を取得
    tweetText = Sheets("Twitter用シート").Range("C12").Value
    
    ' 指定された回数だけツイートを繰り返す
    For i = 1 To tweetCount
        TweetWithPython tweetText
        
        ' Twitter用シートのD2セルの値を1増やす
        Sheets("Twitter用シート").Range("D2").Value = Sheets("Twitter用シート").Range("D2").Value + 1
        
        Application.Wait Now + TimeValue("00:00:02") ' ツイート間の待ち時間(必要に応じて調整してください)
    Next i
End Sub

Sub TweetWithPython(tweetText As String)
    ' 以下は前述のTweetWithPython()マクロのコードをそのまま記載します(省略しています)
End Sub

最終的に仕上がったマクロのコード

ChatGPTが提案してくれたコードでは似た箇所があったりと少しリファクタリングできるなと感じたので、

ひとつの関数にまとめました。そうして仕上がったコードがこちら。

これで完成です。

まとめ

Twitterでプチ自動化するマクロを製作した話を紹介しました。

  • ツイート内容を記しているExcelがある
  • Google ChromeでTwitterに事前にログインしておく

これらの前提が必要ですが、

TwitterAPIもPythonやSeleniumBasicの知識を使わずに「Twitterプチ自動化」に成功しました!

これで作業効率を圧倒的に短縮することができます。

終わり部分→プロンプトエンジニアリングのくだり

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA