1日に数100件の更新のあるRSSから、特定文字列が含まれている投稿を通知したい

やりたいこと

PR TIMESというサイトがあり、この新着投稿RSSフィードは1日に数100件ものアイテムを吐き続ける。

https://prtimes.jp/index.rdf

この中から、特定の文字列を含んだ投稿だけを読みたいので、それを実現する方法を考える。具体的には、Microsoft 365/Office 365に関する情報を得たいため、365という文字列が含まれた場合に通知したい。

一番簡単な方法:RSSリーダーサービスに課金する

InoreaderFeedlyなどのRSS購読サービスは、それ自体がフィルタリングの機能を持っている。ただし有料。

Inoreaderの場合、PROプランでフィルタリングが可能であり、年額49,99ドル・月額4.99ドル。Feedlyの場合、PRO+プランで年額144ドル(今は割引で98.88ドル)。

以上終了、でもいいのだが、せっかくなので何か安上がりな方法を考える

チャットサービス・iPassを使う

SlackやTeamsなどのチャットサービスはRSS受信コネクタを利用してRSSをメッセージとして投稿できる。また、Zapier・IFTTT・Power AutomateなどもRSSコネクタを利用して、RSSを扱うことが可能である。これらは無料プランが存在するので、これをうまく利用して何とかする方法を検討する。

※ 名前は出したが、IFTTTは機能がシンプルなイメージがあるため検証対象外とした。

RSS受信機能と、フィルタ機能に分けて考える。

RSS受信機能を持つのは、前段のとおり

  • チャットサービス
    • Slack
    • Teams
  • iPaaSサービス
    • Zapier
    • Power Automate

となる。一方、フィルタ機能はSlack・Teams自体はない(※1)ので、

  • Zapier
  • Power Automate

の2製品を利用することになる。よって、Zapier・Power Automate単体の場合はそれ自体でフィルタすればいいが、Slack・Teamsを利用する場合はZapier・Power Automateを利用する必要がある。

パターンでいうとこんな感じ。

RSS受信 フィルタ
Slack Zapier
Slack Power Automate
Teams Zapier
Teams Power Automate
Zapier Zapier
Power Automate Power Automate

※1 検索による文字列絞り込みは可能だが、欲しいのは受動的に待っていても必要な情報が降ってくるようなフィルタ

RSS受信性能のチェック

Slack、Teamsは微妙でした。

まず、Teamsは、RSS受信間隔を15分にしているものの、1回に取得できる最大アイテムが10なので、1回の更新で11アイテム以上新規が発生すると取得が漏れます。また、投稿がbotによるものなのですが、botによる投稿はメッセージと認定されず、Power Automateで引っかけることができません。Teams検索では引っかけられますが、RSSの10アイテムが1投稿扱いなので、検索で引っ掛かってから10アイテムを手動で探さないといけない。

SlackはRSSの取得漏れはなさそうです。ただ、RSSの同じアイテムを2回検知して投稿しているとか、"365"で検索した時に引っ掛かるアイテムが多すぎるとか、少し微妙な感じ。取得漏れはないため、Zapierで引っかけることは出来そうですが…。

一方、Power Automateは取得漏れはなさそう。Power Automateについては、RSSと見比べた全数チェックはできていないですが、いくつかの時間帯をサンプリングした結果、もれなく取れている雰囲気があります。

Power Automateで引っかけてメール通知させた図。

Zapierはそもそも無料プランでは250アイテムしか検知できなかったので、検討の土台に乗らなかったです。一応、Slack → Zapierで引っかけたタスクについて「6000タスクくらいスタックしてるぜ!」って通知が来ていたので、検知漏れはなさそう。RSS直受信もチェックしたかったけど、課金するの嫌なのでいいです。

そう考えると、最低限のライセンス = Office ライセンスでも1日2,000アクションできるPower Automateってめっちゃ優秀じゃね????

要求の制限と割り当て – Power Platform | Microsoft Docs

フィルタ機能

既に選択肢はPower Automateしか残っていないのですが…。Inoreaderは信頼するとして、Inoreadreで"365"と検索した時のアイテム数とPower Automate → Outlookで検索した時のアイテム数が同じだったので、大丈夫でしょう、と思います。

Inoreaderは6アイテム、Power Automate側では7アイテム(1つはアイテム重複)

本当はPower Automate側で検索ロジックも組みたかったのですが、PR TIMEのRSSに疲弊してきたので断念。

そもそもPR TIMEのRSSがおかしい

https://prtimes.jp/index.rdf の中を見てみたのですが、記事の並び順が一定ではない、おそらくですが、記事のタイムスタンプが変わったりと、そりゃSlackやPower Automateで同じ記事を2重検知しちゃいますわ。専用のRSSサービスじゃないと完全検知は難しんじゃね?と感じてきました。

今回の検証の結論

  • TeamsでのRSS受信は貧弱。たまにしか投稿されないソースならよい
  • Zapierは有料版じゃないとお話にならない。Power Automateはお得。
  • PR TIMESのRSSはおかしいので、まともに解析するのはしんどい。

でした。検証が徒労に終わった感があって残念です。そもそも、1日に1,000アイテムも発生させるRSSはおかしい。吐けばいいってもんじゃないんや…。

Posted by tera