RSSで更新を拾って自動化につなぐ手順【APIが無いサービス対策】

RSSで更新を拾って自動化につなぐ手順【APIが無いサービス対策】 AI・自動化

noteには投稿を取ってくるための公式なAPIがありません。でも新着記事の告知はどうしても自動化したかったので、RSSを使って組みました。今は月水金の決まった時間に、noteの新着をXが自動で告知しています。この記事は、そのときに私がやった手順をそのままSTEP形式で書いたものです。

結論から書くと、やることは「RSSのURLを見つける」「取ってきて中身を読む」「前回との差分を出す」「差分があったら投稿文を作る」「決まった時間に走らせる」の5つです。難しいのはこの5つ自体ではなく、間の「前回どこまで処理したかを覚えておく」ところと、「動いていないのに動いているように見える」ところでした。私は実際そこで一度、告知が一本も出ていない状態を作っています。

私は元調理師で、飲食の現場に10年いたあとSNS運用代行として独立しました。プログラムは独立してから触り始めた側です。自動化を組み始めたのは2026年6月なので、まだ2ヶ月ほどしか経っていません。専門家の解説ではなく、素人が実際に動くところまで持っていった記録として読んでください。

この手順でできること/必要なもの

できるのは「公式APIが用意されていないサービスでも、RSSが出ていれば更新を検知して、そこから別の処理につなげる」ことです。私の場合は検知したあとに「Xへ自動投稿する」までつないでいますが、検知の部分と、検知したあと何をするかの部分は分けて考えたほうが作りやすかったです。

必要なものは、常時とは言わないまでも決まった時間に起動しているパソコン、Python、そして保存先です。私はWindowsのタスクスケジューラーでPythonのスクリプトを定時起動し、投稿文はGoogleドライブにテキストで置いています。タスクスケジューラーはWindowsの標準機能なので追加費用は0円です。Xへの投稿まで含めた私の運用では、XのAPI利用料が1日5本の投稿で月350円ほどかかっています。ThreadsのAPIは無料です。

逆に言うと、RSSを拾うところ自体にはお金はかかっていません。費用が出ているのは「検知したあとに投げる先」の側です。ここを分けて考えると、まず無料で検知だけ作って動作確認する、という進め方ができます。私も最初はそうしました。

先に言っておく、私が試していない範囲

私が実際に使ったことがあるツールは、ChatGPT・Claude・Gemini・higgsfield・Windowsのタスクスケジューラー・Discord・Googleスプレッドシート・Googleドライブです。RSSを扱う専用のサービスや、いわゆるノーコードの連携ツールは私は未検証なので、この記事ではおすすめとして紹介しません。以下の手順は全部、自分のパソコンの中で完結させるやり方です。

また、私が実際にRSSで拾っているのはnoteだけです。「RSSが出ていないサービスをどうにかする方法」については私は試していないので書けません。この記事はRSSは出ているのにAPIが無い、というケースに限った話です。

STEP 1:対象サービスのRSSのURLを見つけて、中身を目で見る

最初にやるのは、自動化したいサービスがRSSを出しているかどうかを確かめることです。noteの場合はユーザーごとにRSSのURLが用意されていて、そこに新着記事が並んでいます。一般に、ブログ系のサービスはRSSを持っていることが多いと言われています。

URLの見つけ方は、まずそのサービスのヘルプやRSSの案内を探すのが早いです。私はnoteのRSSのURLをこの方法で確認しました。いきなりプログラムを書き始めず、そのURLをブラウザにそのまま貼って開いてみるのを先にやってください。ここが今回の手順で一番あとから効いてきます。

つまずきやすい点

ブラウザで開くと、XMLがそのまま表示されるか、ブラウザ側が整形して表示するかのどちらかになります。整形されて見やすくなっている場合、実際にプログラムが受け取る中身とは見え方が違うので注意が必要です。私は最初、ブラウザで見えている状態がそのまま届くものだと思い込んでいました。

もうひとつは、記事のタイトルとURLがどのタグに入っているかを、この時点で確認しておくことです。ここを見ないまま次に進むと、あとで「値が取れない」となったときに、そもそもタグ名が違うのか、取り方が悪いのかが切り分けられなくなります。

できたかの確認方法

ブラウザでURLを開いて、自分の最新記事のタイトルが目で読める状態になっていればOKです。ここでタイトルが見えないなら、URLが違うか、そのサービスがRSSを出していないかのどちらかなので、この先に進んでも動きません。

STEP 2:スクリプトでRSSを取ってきて、タイトルとURLだけ抜き出す

オンラインで学ぶ様子

次に、PythonからそのURLを取りに行きます。やることは「URLにアクセスして中身を受け取る」「XMLとして読む」「記事ごとにタイトルとURLを取り出す」の3つだけです。私の組み方はここも単純で、取ってきたものから最新の数件を配列にする、それだけのことをしています。

この段階では投稿もしなければ保存もしません。ただ取ってきて、画面に出すだけです。私は自動化を組むとき、いきなり全部つなげようとして失敗したことが何度もあるので、今は必ずこの「表示だけ」の段階を挟むようにしています。

つまずきやすい点

ここで一番やられたのは文字コードです。私は別の場面ですが、認証トークンのファイルにBOMが混ざっていて投稿が丸ごと止まったことがあります。見た目は何も変わらないので、原因を特定するのにかなり時間がかかりました。テキストを読む処理は、見た目で判断できない失敗をします。取ってきた文字列がおかしいと感じたら、まず文字コードを疑ったほうが早いです。

もうひとつ、日付まわりです。私は日付を整える処理で、パソコンによって使える書き方と使えない書き方があるのを知らずに書いて、その機能がまるごと無言でスキップされていたことがあります。RSSの日付はそのまま使える形とは限らないので、日付を扱うなら、扱った結果を必ず一度画面に出して確認してください。エラーが出ないまま何もしていない、が一番こわいです。

できたかの確認方法

スクリプトを手で実行して、STEP 1でブラウザに見えていたタイトルと同じ文字列が、そのまま画面に出ることを確認します。ここで一致していれば、取得と解析は成立しています。文字化けしていたり、件数が明らかに足りなかったりする場合は、この先に進まずここで止めたほうがいいです。

STEP 3:前回どこまで処理したかを記録して、差分だけ拾う

RSSは実行するたびに同じ記事も返してきます。だから「前回すでに処理したもの」を覚えておかないと、同じ記事を何度も告知してしまいます。ここがこの手順の中で唯一、少し頭を使うところです。

私がやったのは、処理済みの記事のURLをファイルに残しておいて、次に取ってきたときにそこに無いものだけを新着として扱う、というやり方です。タイトルで判定しなかったのは、タイトルは後から書き換えられる可能性があるからです。URLのほうが変わりにくいと判断しました。

つまずきやすい点

記録の読み書きで、私は実際に一度やらかしています。トークンのファイルを扱ったときの話ですが、ファイルを全行つなげて読んでしまって認証エラーになったことがありました。実際に必要だったのは1行目だけだったんです。ファイルに複数行を書いて、それを読み戻す処理は、想像しているより素直に間違えます。

もっと大きな失敗もしました。note告知が一度も投稿されていない時期があったのですが、原因は、告知文をスプレッドシートにだけ書き込んで、投稿スクリプトが読むドライブ側のファイルを更新していなかったことでした。書いている場所と、読んでいる場所が違っていたわけです。しかもエラーは一切出ません。書き込みは成功していて、読み込みも成功していて、ただ中身が更新されていないだけだからです。

この失敗以降、私は「書く側」と「読む側」を作ったら、必ず両方を別々に確認するようにしています。書き込み処理を実行したあとに、読み込む側が実際に見に行くファイルを自分の目で開いて、中身が変わっているかを見る。手間ですが、これをやらないと無言で止まります。

できたかの確認方法

確認の手順は2回実行することです。1回目は新着として全部拾われ、2回目は「新着なし」になるのが正しい動きです。2回目も同じ記事が新着として出てくるなら、記録が保存できていないか、読み戻せていないかのどちらかです。そのあと実際にnoteに1本投稿してから3回目を走らせて、その1本だけが拾われれば完成です。

STEP 4:検知したあとの処理をつなぐ(私の場合は投稿文の生成)

ここから先は「検知したあと何をするか」なので、人によってまったく変わります。私の場合は、新着があったらXへの告知文を作って、投稿スクリプトが読むファイルに書き込む、という流れにしています。

私の運用では、毎朝6時台にAIが投稿文をまとめて生成して、Googleドライブにテキストで保存しています。投稿スクリプトはそれを読んで投げるだけです。生成する処理と、投稿する処理を分けているのがポイントで、こうしておくと投稿が失敗したときに、文章が悪いのか投げ方が悪いのかを切り分けられます。RSSからの告知もこの流れに乗せています。

Xでの告知は、本文にURLを置かず、投稿にぶら下げる返信のほうに貼っています。頻度は月水金です。毎回告知すると自分の通常投稿の枠を食うので、曜日を決めて固定しました。

つまずきやすい点

AIに文章を書かせる場合、ここに落とし穴があります。私は投稿文をAIに書かせていて、実際とは違う数字を書かれたことがあります。本当は68本なのに62本と書いていて、しかも文章としては自然だから読んでも気づけないんです。RSSから拾ったタイトルをそのまま使う分にはこの問題は起きませんが、「AIに要約させる」を挟んだ瞬間に、元の記事に書いていないことを書く可能性が出てきます

私の対策は、実際に起きたことと実測値だけを書いた台帳を作って、そこに載っている数字しか使わせないようにすることでした。ただ、台帳を足しただけでは直りませんでした。前から書いてあった「毎回、具体的な出来事を必ず入れる」という指示と噛み合わなくて、台帳のネタが尽きるとやっぱり作り話をしたんです。「無ければ書かなくていい」と言い直して、やっと止まりました。

できたかの確認方法

投稿までつなぐ前に、生成されたファイルを自分で開いて中身を読むのが確認方法です。ここで内容が正しければ、あとは投げるだけになります。私はこの段階を飛ばして投稿までつなげてしまい、書いている場所と読んでいる場所が違う問題に気づけませんでした。

STEP 5:タスクスケジューラーで定時実行にして、失敗が見えるようにする

行き詰まっている様子

手で実行して動くところまで来たら、最後に定時実行にします。私はWindowsのタスクスケジューラーを使っています。Windowsの標準機能なので0円です。私の運用ではThreadsとXに1日5本ずつ、7時・12時・17時・21時・23時に自動投稿していて、note告知は月水金にこの仕組みに乗せています。

ここで絶対にやってほしいのが、失敗したときに気づける仕組みを同時に入れることです。私は投稿が失敗したらログに残り、Discordに通知が飛び、次にパソコンを開いたときにも報告が上がるようにしています。定時実行は、動いていないときに何も言ってくれないのが一番の弱点です。

つまずきやすい点

2026年8月4日、Xの自動投稿を組んだときの話です。タスクは全部「準備完了」と表示されていたのに、実際は一度も動いていませんでした。原因は登録スクリプトで変数名にPowerShellの予約語を使っていて、タスクに渡す引数が丸ごと空になっていたことです。エラーもログも残らないので、気づくのに時間がかかりました。

それ以来、タスクを登録したあとは「準備完了」の表示だけで安心せず、渡している引数が空になっていないか毎回確かめるようにしています。「準備完了」は「登録されている」という意味であって、「動く」という意味ではありませんでした。

もうひとつはパソコンの電源です。2026年7月3日から5日まで、Threadsの投稿が1本も出ていませんでした。原因は早朝にパソコンがスリープしていて、6時の生成スクリプトが走れなかったことです。7月14日にも投稿が3件失敗していて、これもパソコンが落ちていたことが原因でした。自分のパソコンで動かす方式は、パソコンが動いていないと何も起きません。当たり前ですが、実際に3日分飛ばすまで実感がありませんでした。

できたかの確認方法

確認は3段階です。まずタスクに渡している引数が空になっていないかを、登録直後に自分の目で見る。次に、実行時刻をわざと数分後に設定して、放置して実際に動くかを見る。最後に、わざと失敗する状態を作って、Discordに通知が飛ぶかを見る。

3つ目を飛ばしたくなるんですが、これをやっておかないと「失敗に気づく仕組み」が失敗しているときに気づけません。私はここまで含めて一度通してから、本番の時刻に切り替えるようにしています。

STEP 6:しばらく回して、集計で確かめる

組んだあとは、実際に回っているかを数字で確かめる段階が必要でした。私は週次・月次で自分の投稿を自動集計して、Discordにレポートが飛ぶようにしています。目で毎日確認するのは続かなかったので、これも自動にしました。

あわせて、認証まわりの期限も忘れずに。Threadsの認証トークンは60日で切れます。私は残り10日のところで気づきました。切れたら投稿が全部止まります。気づいたその日に延長して、ついでに毎月1日に自動で延長する仕組みを入れました。期限のあるものは、期限が来る前に自動で更新する処理をセットで作るのが結局いちばん安全でした。

XのAPIキーを取りに行ったときも、画面には下6桁しか表示されなくて、完全な値を見る方法がありませんでした。結局いったん作り直すしかなかったです。しかも作り直す順番を間違えると、後から作ったほうが無効になります。親のキーを先に作り直してから、その下のキーを作り直す必要がありました。

私の実測値

正直に書きます。ここまで組んで、数字はまだ出ていません。6月25日から7月27日までに87本を自動投稿しましたが、その間フォロワーは0人のままでした。7月27日時点で数えたとき、7月のビューは527・いいね7・返信0・リポスト0。返信は一度も来ていません。

スロット別の平均ビューは、7月27日時点で朝15.7・昼5.7・夜1.8で、朝がいちばん見られていました。週ごとの平均ビューは18.2 → 15.9 → 8.4 → 7.9 → 5.0と右肩下がりです。7月27日時点では68本のうち13本がビュー0か1でした。2026年8月4日までの7日間ではThreadsに24本投稿して、合計ビュー120・いいね1・返信0。ビューが0か1のままだった投稿が8本ありました。noteのほうは7月27日時点で記事27本、フォロワー2人、全記事の合計いいねが45です。

つまり、RSSからの告知が自動で回るようになっても、それだけで見られるようにはなりませんでした。自動投稿は「続ける力」はくれますが「届く力」は別物です。ここは正直に書いておきます。この手順は「更新を検知して自動で処理につなぐ」までを再現するものであって、成果を保証するものではありません。

この作り方でよかった点と、うまくいかなかった点

よかったのは、費用がほとんどかからないことです。RSSを拾う部分は0円、タスクスケジューラーも0円、実際に出ているのはXのAPI利用料の月350円ほどだけです。収入が安定しない時期に組み始めたので、ここが安いのは大きかったです。私は独立してから半年くらい無収入で、そのあとの半年も収入は一桁万円台でした。その間はアルバイトをしながら食いつないでいたので、月額のかかる仕組みは最初から選択肢に入れませんでした。

もうひとつよかったのは、部品が分かれていることです。RSSを取る、差分を出す、文章を作る、投稿する。全部別のスクリプトなので、壊れたときにどこが壊れたかがすぐ分かります。逆に、全部を一本のスクリプトにまとめていたら、note告知が出ていなかった問題はもっと発見が遅れていたと思います。

うまくいかなかったのは、まず自分のパソコンに依存していることです。スリープで3日飛んだのは完全にこの構成のせいです。常時動いているサーバーを使えばこの問題は消えるはずですが、私はまだそこを試していません。今は「朝の時間帯はパソコンを起こしておく」で運用しているだけなので、根本的には解決していません。

もうひとつは、自動化を作っているのに結局そのつど自分の手を動かしてしまっていることです。エラーが出れば見に行くし、文章がおかしければ直します。組む前に想像していたほど、放っておける状態にはなっていません。ここは今も改善の途中です。

APIが無いサービスにRSSで挑むときの判断

動画編集の作業画面

最後に、これを作るかどうかの判断について書いておきます。RSSで組む価値があるのは、「更新の頻度がそこそこあって、かつ更新のたびに毎回同じ作業をしている」場合だと私は思っています。私のnote告知はまさにそれで、記事を出すたびにXで告知する作業を手でやっていました。

逆に、更新が月に1回あるかないか、という場合は手でやったほうが早いです。私が組んだ範囲でも、動くところまで持っていくのに何度もつまずいています。書いている場所と読んでいる場所が違う問題、引数が空になっていた問題、日付の処理が無言でスキップされていた問題。どれも「作る時間」より「原因を探す時間」のほうが長くかかりました。

それでも組んでよかったと思うのは、一度動いてしまえば毎回の判断が要らなくなるからです。飲食の現場に10年いて、そのあと独立してからずっと感じているのは、自分の集中力は有限だということです。決まった作業を毎回思い出して実行する分の余力を、別のところに回せるようになったのは確かです。

ただ、繰り返しになりますが、これは作業を減らす仕組みであって、結果を出す仕組みではありませんでした。私の数字はまだ出ていません。そこは分けて考えたほうがいいと思っています。反応が無い期間が続いても、私はそれをすぐ失敗とは思わないようにしています。引き継いだクライアントの案件をコンセプトから作り直したときも、手応えが無い時期がしばらく続いたあとで急に伸びたことがあったからです。ただし、それは自分の発信にも同じことが起きるという保証にはなりません。

まとめ

  • APIが無いサービスでも、RSSが出ていれば更新の検知はできる。私はnoteでこれをやって、月水金にXで自動告知している。
  • 手順は「RSSのURLを見つける」「取ってきて中身を読む」「前回との差分を出す」「検知後の処理につなぐ」「定時実行にする」「集計で確かめる」の6段階。
  • 各STEPで必ず手で実行して確認する。特に差分の判定は、2回実行して2回目が「新着なし」になるかで確かめる。
  • 一番の失敗は、書き込む先と読み込む先が違っていて、note告知が一度も出ていなかったこと。エラーが出ないので気づけなかった。
  • タスクスケジューラーの「準備完了」は「動く」という意味ではない。引数が空になっていないか登録直後に必ず確認する。
  • 自分のパソコンで動かす構成は、パソコンが落ちていると止まる。7月3日から5日まで投稿が1本も出なかった。常時稼働のサーバーは私は未検証。
  • 費用はRSS部分もタスクスケジューラーも0円。実際に出ているのはXのAPI利用料の月350円ほど。ThreadsのAPIは無料。
  • 検知後にAIで文章を作らせる場合、元にない数字を書くことがある。使ってよい値だけを渡し、「無ければ書かなくていい」と明示する。
  • 認証トークンなど期限のあるものは、期限切れ前に自動更新する処理をセットで作る。Threadsは60日で切れる。
  • 自動化しても数字は出ていない。87本投稿してフォロワー0人、7月のビュー527・いいね7。続ける力と届く力は別物だった。

コメント

タイトルとURLをコピーしました