本記事は、ブログを運営し始めた方、Twitterを使って、自分の記事を発信したい方に向けた記事になります。
ある程度タイトルのようなことに興味のある人と推測しているので、全くプログラミングがわかりませんという方は別の記事に当たってください。
![](https://zizou-book-lab.com/wp-content/uploads/cocoon-resources/blog-card-cache/81760cfaa175c8fa7da5a80e24882b9d.jpg)
上記の記事から、プログラミング経験がないだとか、APIって何?という人にも始められると思います。ぜひこちらの記事も参考にしてみて下さい。
さて、それでは早速本題に入っていきましょう!
まずはコードから
# coding: UTF-8
from requests_oauthlib import OAuth1Session
import requests
from bs4 import BeautifulSoup
import random
# 全記事一覧のURLからツイートしたいURLを引っ張ってくる
res = requests.get("自分のサイトのサイトマップURL") #サイトマップにアクセスしている
soup = BeautifulSoup(res.text, "html.parser") #アクセスして、そのHTMLを文字情報として取得
links = [] #サイトマップに記載されているURLを格納するための空のリスト
for url in soup.find_all('a'): #取得した要素for文で一つずつ検証していく
url.get = url.get('href')
#<----------------------!!要編集!!---------------------->
#BOTに入れるURLを条件分岐で取得するかしないかを判定させます。
if url.get is None: #URLが取得できない場合はパス
continue
elif "tag" in url.get: #URLに文字"tag"があったらURLをツイートしない
continue
elif "moshimo" in url.get: #アフィリエイトタグが入り込むので除外
continue
elif "feed" in url.get: #feed記事を除外 などなど
continue
elif "その他の条件①" in url.get:
continue
elif "その他の条件②" in url.get:
continue
elif "その他の条件③" in url.get:
continue
elif "その他の条件④" in url.get:
continue
elif "https://zizou-book-lab.com/" in url.get: #最終的に上以外のURLならリストに格納する
links.append(url.get)
else:
print("else") #不要
#<----------------------!!ココマデ!!---------------------->
post_article=random.choice(links) #ランダム抽出する
#<----------------------!!要編集!!---------------------->
#ここにKeyとToken
CONSUMER_KEY = "************************"
CONSUMER_SECRET = "************************"
ACCESS_TOKEN = "************************"
ACCESS_TOKEN_SECRET = "************************"
#<----------------------!!ココマデ!!---------------------->
twitter = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
url = "https://api.twitter.com/1.1/statuses/update.json"
#<----------------------!!要編集!!---------------------->
#ツイート内容
tweet = "【自動ツイート】本日の記事はコチラ→ " + post_article + " #書評 #データサイエンティスト"
#<----------------------!!ココマデ!!---------------------->
params = {"status" : tweet}
req = twitter.post(url, params = params) #ツイートを実行する部分
PCで読まれている方は、ちょうどこの右側くらい→→→
に私のTwitterのタイムラインが表示されているかと思います。それを参考にしてみてください。
この中身で、要編集の部分をちゃんと編集できていれば、ほぼコピペでbotが作れると思います。
ただし、私の認識のbotは「一定間隔もしくは一定の回数、自動でツイートしてくれる」というもので、おそらくこれを見にきている方もそうだと思います。
上のPythonスクリプトを書いて実行するだけでは、上記のような要件は満たせません。定期的に実行するためのスケジューラー設定が必要になります。
手順
では、以下ざっくりとした手順です。
- サイトについて
- サイトを作りましょう ←これは当然できてますよね?
- サイトマップを作りましょう ←【WordPress サイトマップ プラグイン】検索
- Twitterについて
- Twitterのアカウントを作りましょう ←これは当然できてますよね?
- Twitter APIを使えるようにしましょう。 ←これがちょっと難しい
- Pythonについて
- 先ほどのコードで.pyファイルを作成
- バッチ処理(定期実行)できるようにスケジューラーに登録する
ざっくりこんなところです。
この手順を全て網羅的に書いてくれている神記事のリンクは以下のものです。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9UHl0aG9uJUUzJTgxJUE4VHdpdHRlckFQSSVFMyU4MSVBNyVFNCVCRCU5QyVFMyU4MiU4QiVFMyU4MyU5NiVFMyU4MyVBRCVFMyU4MiVCMCVFOCVBOCU5OCVFNCVCQSU4QiVFOCU4NyVBQSVFNSU4QiU5NSVFMyU4MyU4NCVFMyU4MiVBNCVFMyU4MyVCQyVFMyU4MyU4OGJvdCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YmE3Nzg4MzA3N2EwZWE5YjAyZWQ3NDBkMWU2ZjA1ZTQ&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwaGFsLXRtaGQmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTFhNGE3NWIyZjIwNTA5N2ZmNmNhM2Y4MWFmZGJkMmQ2&blend-x=142&blend-y=491&blend-mode=normal&s=1cb81796a2d2b8ee1d5737e16e00f1dc)
具体的な細かい手順は上記の記事にお譲りします。
Twitterの開発申請なんかも、書いてあることをちょっと変えてリクエスト送っただけでしたがすんなり許可が出ました。
こういうの残してくれている人って、ほんとありがたいですよね…
まとめ
本記事の意義としては、ほぼコピペでサクッとbotを作れるというところに焦点を合わせて作成させていただきました。
ちょっとこれだけでは情報が足りないということでしたら、以下に参照すべきサイトも載せておりますので、ぜひぜひ見てみて下さい。
私はこのサイトの発信を少しでもできればいいなと思って今回botでの発信を行うためにTwitterのアカウントを開設しました。
これでどれだけ認知を上げられるかはまだわかりませんが、サイトに集客できるようになればいいなと思っています。
また、スクリプトについてご指摘等ございましたら、コメントなどいただけると嬉しいです。どうぞよろしくお願いいたします。
参照すべきサイト
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9UHl0aG9uJUUzJTgxJUE4VHdpdHRlckFQSSVFMyU4MSVBNyVFNCVCRCU5QyVFMyU4MiU4QiVFMyU4MyU5NiVFMyU4MyVBRCVFMyU4MiVCMCVFOCVBOCU5OCVFNCVCQSU4QiVFOCU4NyVBQSVFNSU4QiU5NSVFMyU4MyU4NCVFMyU4MiVBNCVFMyU4MyVCQyVFMyU4MyU4OGJvdCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YmE3Nzg4MzA3N2EwZWE5YjAyZWQ3NDBkMWU2ZjA1ZTQ&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwaGFsLXRtaGQmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTFhNGE3NWIyZjIwNTA5N2ZmNmNhM2Y4MWFmZGJkMmQ2&blend-x=142&blend-y=491&blend-mode=normal&s=1cb81796a2d2b8ee1d5737e16e00f1dc)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9UHl0aG9uJUUzJTgxJUE3VHdpdHRlciVFMyU4MSU5NyVFMyU4MSVBNiVFMyU4MSVCRiVFMyU4MSU5RiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9OTZjYjIyN2ZlZWNjMjc3YTVkMWM0YjZhOTMzZDMxMzE&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBrb25vanVueWEmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTFjNGUxZTQ0MmJhOTlkMTMxOTM2YzVjZjhmYThkNmZi&blend-x=142&blend-y=486&blend-mode=normal&s=c8d41e2100664c0fb9848853399a5c3f)
![](https://zizou-book-lab.com/wp-content/uploads/cocoon-resources/blog-card-cache/e1b5765667bf592fef5e0e50873cff5e.jpg)
![](https://zizou-book-lab.com/wp-content/uploads/cocoon-resources/blog-card-cache/b219e5bb3c6ee90df1be922124f81d03.png)
こんな記事も書いてます。よければ読んでいって下さい。
![](http://zizou-book-lab.com/wp-content/uploads/2021/08/19360-300x300-1.jpg)
コメント