Python

【Pythonで業務効率化】「note記事更新→Twitterに投稿する」のマニュアル作業を自動化する

2022年5月11日

【Pythonで業務効率化】「note記事更新→Twitterに投稿する」のマニュアル作業を自動化する

こんにちは。TATです。

今日のテーマは「【Pythonで業務効率化】「note記事更新→Twitterに投稿する」のマニュアル作業を自動化する」です。

 

Pythonはさまざまな用途に活用することができます。

その1つが業務効率化です。

日々のデータ集計、データ管理、書類の作成など、あらゆる業務を効率化できる可能性を秘めています。

 

そんな業務の中でも、ここではnote記事をTwitterで投稿する工程を自動化してみます。

僕が最近「めんどくせーな」と思ったのでPythonで自動化しました。

なんでもっと早くやらなかったんだろうと今になってとても後悔していますw

 

noteの投稿データはRSSを使えば簡単に取得することができます。

TwitterのAPIを使えば自動投稿も実装できます。

これでめんどくさい作業がまた一つ減りましたw

 

【Pythonで業務効率化】「note記事更新→Twitterに投稿する」のマニュアル作業を自動化する

【Pythonで業務効率化】「note記事更新→Twitterに投稿する」のマニュアル作業を自動化する

まずは全体の流れを確認する

まずは全体の流れを確認します。

 

note記事をツイートする工程は今までマニュアルで行っていました(実際はほぼ忘れてツイートしていないに等しいですw)

僕はこういった簡単なタスクはすぐに忘れてしまうので自動化して解決を試みます。

 

ここを自動化するためには、次のような流れをプログラムで実装する必要があります。

 

作業の流れ

  1. noteの記事を取得する
  2. 新しい記事があるかどうかを確認する
  3. もしあればTwitterに投稿する

 

上記の流れです。シンプルですね。

これをプログラムで実行するには、以下のポイントが重要になります。

 

実装のポイント

  1. noteの記事を取得する → noteのRSSを利用する
  2. 新しい記事があるかどうかを確認する → Pythonで記事をフィルタリングする
  3. もしあればTwitterに投稿する → TwitterのAPIを利用する

 

noteの記事を取得するには、RSSを使えば簡単に実現できます。

投稿記事が取得できたら、Pythonでデータを整形して、新しい記事が含まれているのかを確認します。

もし含まれていたらTwitterのAPIを利用して自動投稿すれば完了です。

 

順番に解説していきます。

 

noteのRSSから投稿データを取得する

まずはnoteの記事の取得です。

前述の通り、これにはnoteRSSを利用します。

 

RSSとは?

さらっとRSSという単語を使ってしまいましたが、ここで簡単に解説しておきます。

Wikipediaから抜粋します。

RSS(バージョンによってRich Site Summary, RDF Site Summary Really Simple Syndication)は、ニュースやブログなど各種のウェブサイトの更新情報を配信するための文書フォーマットの総称である。

Wikipedia「RSS」より

 

上記の通り、RSSとは各種ウェブサイトの更新情報を配信するための文書フォーマットの総称です。

簡単に言えば、サイトの更新情報をプログラムが読みやすい形式で配信されたものです。

 

プログラムはこれを読めば簡単に更新情報にアクセスすることができます。

記事タイトルや更新日時、記事のURL、本文の冒頭一部などの情報が含まれていることが多いです。

 

RSSを利用すれば、スクレイピングで取得するよりもはるかに簡単です。

 

noteのRSSにアクセスする

RSSについてわかったところで、早速noteのRSSにアクセスしてみましょう。

 

これは簡単です。

クリエイターページのURLの最後に/rssをつけるだけです。

 

僕が運営しているnoteのクリエイターページのURLはhttps://note.com/investortatです。

よって、RSSのリンクは、https://note.com/investortat/rssになります。

 

こちらのリンクにアクセスすると、中身を確認することができます。

 

人間的にはすこぶる読みにくい感じがしますが、プログラム的にはこの形式が読みやすいです。

xml形式になっているで、データが構造的で解析しやすくなっています。

 

ちなみにRSSにアクセスできない場合は設定が必要です。

公式サイトにヘルプページがあります。

 

PythonでnoteのRSSデータを取得する

RSSのURLが確認できたところで、Pythonでこのデータを取得してみます。

これにはrequestsBeautifulsoupというパッケージを使います。

スクレイピングでよく使われるパッケージです。

 

とりあえずコードをどうぞ。

 

requestsでデータを取得して、Beautifulsoupでデータにアクセスしやすいようにデータを変換しています。

xmlを表示するとこんな感じです。

 

きちんとデータが取得できていることが確認できます。

これでRSSデータの取得は完了です。

 

取得データを整形して、新しい記事があるかを確認する

RSSデータが取得できたので、ここから少しデータ整形していきます。

このままだとすこぶる見にくいので、人間がわかりやすい形式に変換します。

 

このやり方はいろいろありますが、僕の場合はとりあえずDataFrameに変換します。

 

RSSの中身を確認する

もう一度RSSデータの中身を確認します。

 

上の方から眺めていくと、titleがあってdescriptionなどが続いています。

内容から、ここはユーザーの紹介であることがわかりますね。

icon画像とかユーザーページへのリンクなんかもあります。

 

そして、真ん中少し上くらいのところにitemという名のデータがあります。

これが投稿記事です。

以降、itemが繰り返し登場していることがわかります。

 

つまり、このitemの中身を全て収集することができればOKなわけです。

 

投稿記事を収集する

収集すべきデータがわかったので、早速Pythonで実装していきます。

これにはfindAllという機能を使います。

これで該当するデータ全てをリスト形式でまとめて取得できます。

 

itemの中身を見ると、title, thumnail, description, pubDate(更新日時), guid(リンク)などがありますね。

ここでは必要最低限として、title, pubDate(更新日時), guidのみを収集します。

 

それではコードをどうぞ。

 

シンプルですね。

item一覧を取得して、中身を1つずつ確認して必要なデータを抽出しています。

集めたデータをDataFrameに変換すれば完了です。

 

中身はこんな感じになります。

 

きちんと取得できていますね。

データ数は全てで25個です。

これはnote側の仕様で、RSSでは最新記事25個までしか取得できないようになっています。

よって古い記事にアクセスすることはできません。あくまで最新の記事の確認のために利用します。

 

日時データを変換する

次の作業が日時データの変換です。pubDateのカラムですね。

これはただの文字列データなので、このままだと日時によるフィルタリングはできません

これをするには、datetimeフォーマットに変換してあげる必要があります。

 

この作業は1行で完了します。

 

datetimeのstrptimeを使って、文字列をdatetimeフォーマットに変換しました。

きちんと変換されていることが確認できます。

 

これでデータ整形は完了です。

 

新しい記事を抽出する

データの準備が整ったところで、最後の仕上げです。

新しい記事を抽出します。

 

ただ、ここで疑問が湧いてきます。

どうやって新しい記事を判定するか」です。

 

これにはいろいろな方法が考えられます。

新しい記事を判定するには?

  • データベースに突っ込んで重複あればスキップ、新規追加できたら新記事と判定
  • 定期的に記事をチェックして、前回実施時間以降に更新された記事があれば新記事と判定
  • 取得データをExcelやPickle形式で保存して、過去データと一致しなかったら新記事と判定 などなど

 

やり方は人によって変わってくると思います。

データベースなどにデータを収集しながら管理するのもいいですね。

データベースをExcelやPickleに置き換えても良いです。

要はきちんと動けばなんでもいいんですw

 

僕の場合は2つ目の方法を採用しました。

定期的に記事をチェックして、前回実施時間以降に更新された記事があれば新記事と判定します。

例えば、20分おきに記事をチェックしたら、チェック時に過去20分以内に新しい記事が更新されていたら、「それは新記事ですね」と判断できます。

 

これを実行するには、先ほど変換したdatetimeカラムが必須です。

これで過去20分以降の記事を抽出して、該当データがあれば新記事、なければスキップすればOKです。

 

 

上記の通り。

dateutilを使って20分前の日時を計算して、これでフィルタリングすればOKです。

このdf_targetの中身があれば、それは新記事になります。

空っぽなら新記事はないと判断できます。

 

TwitterのAPIで自動投稿する

最後の工程が、Twitterへの投稿です。

これにはAPIを活用します。

 

TwitterのAPIを利用するには申請が必要です

TwitterのAPIを利用するには申請が必要です。

こちらからできます。(残念ながら全て英語です)

申請のプロセスとかはググったらいろいろ出てきます。

 

申請が完了したらAccess Tokenなどが発行できます。

これらを使ってAPIで自動投稿が可能になります。

 

Twitterの自動投稿コードの例を紹介します

最後に、Twitterの自動投稿コードの一例をご紹介します。

 

 

consumer_keyなどは、ご自身で取得したものに書き換えてください。

APIキーなどの重要な情報は本来は、コードにベタ打ちしないほうがいいです。

 

僕の場合はConfigファイルを作ってそこで管理しています。

必要な場合はそこから読み込む形です。

 

プログラムを実行すると、こんな感じで自動投稿できます。

 

ここまで紹介した一連の流れを定期的に実行すれば、新記事があるかどうかを確認して、もしあればTwitterに自動投稿ができるようになります。

僕の場合、サーバーにこのプログラムをデプロイして定期実行するようにしています。

もし新しい記事が見つかれば勝手にTwitterに投稿されます。

 

これで、面倒なマニュアル作業を1つ自動化することができました。

人生が少しだけイージーになりました。

 

まとめ

いかがでしたでしょうか。

ここでは、「【Pythonで業務効率化】「note記事更新→Twitterに投稿する」のマニュアル作業を自動化する」といううテーマで、Pythonを使ってnoteの記事を取得して新記事があればTwitterで自動投稿するまでの流れについて解説してきました。

 

Pythonを活用すれば、いろいろな業務を効率化・自動化することができます。

だるい作業はどんどん自動化していけば、それだけ人生はイージーモードに近づきます。

 

Twitterに投稿するという簡単な作業でも、1日に何回も、それを毎日繰り返すとなるとなかなか大変です。

サボりたい日も出てくれて忘れてしまう日も出てきます。

何より、「あーTwitter投稿しないとなー」という意識を持ち続けなければいけません。

 

ここではPythonを活用しましたが、どんな方法でも作業を効率化・自動化することができればかなり楽になります。

ここでご紹介したものは、ほんのわずかな作業量を自動化したに過ぎませんが、それでも効果は大きいです。

 

とりあえず、noteのTwitter投稿については、今後一生気にしなくてよくなるので僕の自由な時間がわずかに増えます。

1日単位で見ると大したことありませんが、これが積もり積もると大きな差になります。

 

是非とも、皆さんもPythonなどを使って日々の面倒な業務を効率化・自動化してみてください。

人生がイージーになります。

 

ここまで読んでくださり、ありがとうございました。

 

 

Pythonの独学ロードマップを作りました!

社会人になってからPythonを独学した経験を活かして、独学ロードマップを作りました。

これからPythonを学ぼうとしている方、学習中の方の参考になれば嬉しいです。

【決定版】Python独学ロードマップ【完全初心者からでもOKです】
【決定版】Python独学ロードマップ【完全初心者OK】

続きを見る

 

おすすめのPython学習法!

Udemy

Pythonを独学するならUdemyがおすすめです。

動画教材なので理解がしやすく、セールで購入すれば90%オフとかで買えるのでコスパも最強です。

おすすめポイント

  • 動画教材で理解しやすい
  • セール中なら90%オフとかで購入可能
  • プログラミングスクールよりも格安で良質なコンテンツが手に入る
  • 30日間の返金保証
  • 講師に質問できる&過去の質問を閲覧できる

\30日返金保証/

Udemyを詳しく見る

セール中なら90%オフとかで購入可能です!

プログラミングの独学にUdemyをおすすめする理由!【僕はPythonを独学しました】

続きを見る

 

データミックス(datamix)

Pythonによるデータ分析に興味のある方は、データミックス(datamix)がおすすめです。

プログラミングだけではなく、データサイエンスやビジネスに関するノウハウも合わせて学ぶことができます。

おすすめポイント

  • データサイエンティストが開発・監修した体系的かつ実践的に学べるカリキュラム
  • Pythonなどの「スキル」のみでなく、データサイエンスの本質である「理論」や「思考」が学べる
  • エンジニアに限らず、多様なキャリアを形成・構築できる
  • オンラインチャットツールによる質問対応やコミュニティなどの充実したフォロー体制
  • 専門実践教育訓練給付金の対象講座で授業料の最大70%還付

\データサイエンスとビジネスが学べる/

データミックス(datamix)を詳しく見る!

エンジニア転職だけでなく起業やフリーランスなど多様なキャリア形成・構築に繋がる

データミックス(datamix)の特徴や評判は?【データサイエンスとビジネスが学べる】

続きを見る

 

SAMURAI TERAKOYA

プログラミングスクールでコストを重視するならSAMURAI TERAKOYAがおすすめです。

月額料金さえ支払えば、その他の費用は一切かかりません。

おすすめポイント

  • 継続しやすい安価な月額定額制(月額1,980円〜)
  • 入会金不要、いつでも退会可能
  • 月1回のオンラインレッスンが受けられる
  • 現役エンジニアに質問し放題
  • 28種類の教材が利用し放題

月額1,980円~のサブスク型

「SAMURAI TERAKOYA」を詳しく見る

入会金不要で違約金なしでいつでも退会可能!気軽に始められます!

「SAMURAI TERAKOYA」の特徴は?評判は?【サブスク型でコスパ最強!】
「SAMURAI TERAKOYA」の特徴は?評判は?【サブスク型でコスパ最強!】

続きを見る

-Python
-, ,

© 2022 気ままなブログ