概要
Zapierというワークフローツールを使って、AZURE CHARTSというWebサイトにあるAzureの新着情報のRSSをサブスクライブし、日本語に要約してSlackに通知する仕組みを作りましたので、それを紹介します。
背景
私は業務でAzureシステムの運用保守を行っており、Azureの最新情報をチェックする必要があります。しかし、Azureのアップデート情報が思ったより多く、日々英語の文献を読みといて理解するのが大変です。そのため、日本語で要約したものがリアルタイムでSlackに届いたらいいなと思いました。
Zapierというワークフローツールは存在だけ知っていたのですが、どういうものか知らなかったので、勉強がてら使ってみることにしました。
Zapierとは
Zapierとはノーコードでワークフローを作成できるサービスです。
Zapierではワークフローを Zap と呼び、ワークフローを構成する部品を ステップ と呼びます。
各ステップには、Zapierが用意している様々なツールを利用することができ、初心者でも簡単なGUI操作でZapを作成することができます。
Zap構成概要
今回私が作成したZapの概要は以下の通りです。
まず、AZURE CHARTS の Latest Azure Updates がフィードしているRSSを読み込み、最新情報をチェックします。このRSSにはtitle, link, descriptionなどの属性があります。以下がその例です。
<guid isPermaLink="true">https://techcommunity.microsoft.com/blog/integrationsonazureblog/%F0%9F%8E%89announcing-the-hl7-connector-for-azure-logic-apps-standard-and-hybrid-public-p/4470690</guid>
<link>https://techcommunity.microsoft.com/blog/integrationsonazureblog/%F0%9F%8E%89announcing-the-hl7-connector-for-azure-logic-apps-standard-and-hybrid-public-p/4470690</link>
<category>Preview</category>
<title>🎉Announcing the HL7 connector for Azure Logic Apps Standard and Hybrid (Public Preview)</title>
<description>We’re excited to announce the Public Preview of the HL7 connector for Azure Logic Apps, empowering healthcare organizations to seamlessly integrate clinical applications and automate data exchange us...<br />Update Type: Preview, Services: Logic Apps, Categories: </description>
<pubDate>Mon, 24 Nov 2025 12:13:00 Z</pubDate>
<a10:link rel="alternate" href="https://techcommunity.microsoft.com/blog/integrationsonazureblog/%F0%9F%8E%89announcing-the-hl7-connector-for-azure-logic-apps-standard-and-hybrid-public-p/4470690"/>
<a10:updated>2025-11-24T12:13:00Z</a10:updated>
次に、OpenAI APIを使って、linkの情報やdescriptionの内容を日本語で要約させます。
最後にtitle、 日本語の要約、linkをSlackに通知します。
Zap作成手順
以下にZapの作成における前提条件、作成手順、課題対応について説明します。
前提条件
私はZapierを使うのは初めてでした。Sign up すると、 Proプラン のトライアルが自動的に始まりました。無料プランではZapはトリガーとアクションの2ステップしか使えないのですが、Proプランではより複雑なZapを作成することができます。また、無料プランでは使えるツールが限られますが、Proプランでは様々なツールを組み合わせて使うことができます。
今回は、トライアル中のProプランを前提とします。
また、OpenAI APIのクレジットと、API Keyを準備済みとします。
Zapsの画面で、[+ Create] → [New Zap] を選択すると、TriggerとActionが1つずつ存在する初期エディット画面が表示されるので、ここからZapの作成を進めます。
RSS for Zapier
最初に、Triggerを選択し、以下のようにRSSを選択します。
Trigger eventの欄で、以下のようにNew Item in Feedを選択します。なお、ポーリングは1時間ごと(毎時0分)に行われます。
続いて、以下のようにFeed URLにhttps://aztty.azurewebsites.net/rss/updatesを入力します。
最後にTest triggerを実行します。
Stepを作成すると以下のようになります。2 minと表示されているのとEvery Hourと表示されているのが矛盾しているようで混乱しましたが、最終的に動かすと1時間ごとにZapが動作していました。
ChatGPT(OpenAI)
続いて、Actionを選択し、以下のようにChatGPT(OpenAI)を選択します。
以下のようにAction event欄でConversationを選択します。
Accountを選択すると以下の画面が表示されるので、あなたのOpenAIアカウントのAPI KeyとRegionを入力します。
続いてConfigureに進みます。Model欄は私はgpt-5-miniを選択しました。
User Messageには以下のシンプルなユーザープロンプトを入力しました。
## Webページ情報
[Link]
この[Link]という変数は、以下のようにテキストボックスの右の[+]を選択すると、RSS Triggerの変数を選択して入力することができます。
Instructionsには以下のシステムプロンプトを入力しました。私はプロンプトを分けましたが、全部をまとめてUser Messageに入れても同じだと思います。
あなたは Azure 技術を専門に扱うアナリストです。
以下のWebページの情報をもとに、以下の条件を満たす **Slack通知向け要約** を日本語で作成してください。
### 出力フォーマット
【{タイトルをここに書く}】
- 概要
{ここに概要を、1~3行で、更新の主旨を簡潔に}
- 技術的ポイント
{ここに技術ポイントを箇条書き:変更点・新機能・条件・バージョン等}
- 利用メリット/リスク
{ここに利用メリット/リスクを書く。なければ「特になし」と書く}
- なぜこの更新が「重要」なのか
{ここに重要な理由を1~2行で明確に書く}
### 要件
- 出力は必ず **日本語** で書く。
- 冗長な枕詞・曖昧な表現・誇張表現を避ける。
- 記事に記載されていない情報を「推測」で追加しない。
- 箇条書きは **5〜7項目** 程度を目安にする(ただし内容の都合で若干前後可)。
- 文章量は **2000文字以内** に収める。
Max Tokensは余裕を持って5,000としました。
一番ポイントとなるのがToolsで、私は当初Web Search Preview - Search the web for realtime informationを選択しました。
しかし、最終的に通知されたSlackメッセージに 大量に参照元情報のURLが記載されてしまい、、かなり読みづらい通知文になってしまいました。
システムプロンプトに「参照元や出典リンクは絶対に書かないように」と記載しても、ほとんど効果は見られませんでした。対処については後述します。
最後にTest Stepを実行して完了です。
Slack通知
Slack通知を行う方法は何通りかありますが、ここではWebhookと、SlackのSend Messageについて解説します。
Webhooks
Incoming Webhookを使う方法が最も分かりやすいです。
まず、Slack側で新しいアプリを作成し、Incoming Webhookを有効化します。すると、エンドポイントのURLが表示されます。
次にZapier側で、Actionを選択し、Webhooksを選択します。
これでSlackのエンドポイントのURLを指定すれば実装できますが、私はPremiumという表示にビビってしまって、今回私は別の方法で実装しました。
Slack連携
私が行ったのはSlackにZapierのアプリを登録して、Zapierのアプリが対象のチャンネルに投稿するという方式です。
この場合は、Slack側の事前準備は、通知対象のチャンネルを用意するだけです。
まず、Zapier側で、Actionを選択し、Slackを選択します。
次に、Action event欄で、Send Channel Messageを選択します。他にもDMに送るなど、色んな選択肢があります。
Account欄では、対象のSlack Workspaceを選択します。これで対象のSlack WorkspaceにZapierのアプリが自動で作成され、Zapierとセキュアに連携できるようになります。
続いて、Channel欄で通知対象のチャンネルを選択します。
Message Text欄には以下のように入力します。
他にも設定できる欄はたくさんありますが、今回は説明は省略します。
Zap実行テスト(1回目)
さあ、これでZapを一通り作成できました。
画面右上のTest runを実行して、Zapを実行してみましょう。
実行すると、以下のようなメッセージがSlackに届きました。
出典URLが散りばめられていて、何がアップデートされたのか非常に見づらいです。
これはOpenAIのStepで、Web Searchを有効にしているためです。
対処については以下で説明します。
参照元URLが通知される課題の対応
この課題の対応として、OpenAIにWeb Searchをさせるのではなく、Zapier側でWebページをスクレイプしてからOpenAIに渡すようにZapを改造しました。以下に修正内容を記します。
Code の追加
まず、ChatGPT(OpenAI)のStepの直前にCodeを挿入します。
Add stepの[+]をクリックし、以下のようにCodeを選択します。
Select a Language欄で、JavaScriptを選択します。
次の画面で、左ペインのInput Data欄に、urlと変数名を入力し, RSSのLinkを選択します。
JavaScriptのコードは以下のように入力します。コード内で、変数にはInputData.urlという名前でアクセスできます。
JavaScriptコードの全文は以下のとおりです。
Webページのtitleと、body全体を取得しています。
// 1) RSSから渡されたURL
const url = inputData.url;
// 2) Webページを取得
const response = await fetch(url, {
headers: { "User-Agent": "Mozilla/5.0" }
});
let html = await response.text();
// 3) <title> の抽出
let title = "";
const titleMatch = html.match(/<title[^>]*>([\s\S]*?)<\/title>/i);
if (titleMatch) {
title = titleMatch[1]
.replace(/\s+/g, " ")
.trim();
}
// 4) <body> の抽出
let body = "";
const bodyMatch = html.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
if (bodyMatch) {
body = bodyMatch[1];
} else {
// bodyが無い場合は全体をフォールバック
body = html;
}
// 5) script/styleタグ除去
body = body
.replace(/<script[\s\S]*?<\/script>/gi, "")
.replace(/<style[\s\S]*?<\/style>/gi, "");
// 6) HTMLタグ全部除去 → プレーンテキスト化
body = body
.replace(/<[^>]+>/g, " ")
.replace(/\s+/g, " ")
.trim();
// 7) 出力(タイトルと本文を両方返す)
output = {
title: title,
text: body
};
ChatGPT(OpenAI) の修正
続いて、ChatGPTのStepのConfigurationを編集し、User Messageの変数名をtextに修正します。
Instructionsには最後に1行を追加し、以下のようにしました。
あなたは Azure 技術を専門に扱うアナリストです。
以下のWebページの情報をもとに、以下の条件を満たす **Slack通知向け要約** を日本語で作成してください。
### 出力フォーマット
【{タイトルをここに書く}】
- 概要
{ここに概要を、1~3行で、更新の主旨を簡潔に}
- 技術的ポイント
{ここに技術ポイントを箇条書き:変更点・新機能・条件・バージョン等}
- 利用メリット/リスク
{ここに利用メリット/リスクを書く。なければ「特になし」と書く}
- なぜこの更新が「重要」なのか
{ここに重要な理由を1~2行で明確に書く}
### 要件
- 出力は必ず **日本語** で書く。
- 冗長な枕詞・曖昧な表現・誇張表現を避ける。
- 記事に記載されていない情報を「推測」で追加しない。
- 箇条書きは **5〜7項目** 程度を目安にする(ただし内容の都合で若干前後可)。
- 文章量は **2000文字以内** に収める。
- サイドバーやフッターのリンク情報は無視する。
Zap実行テスト(2回目)
修正が終わったので、テスト実行をしてみます。
これでSlackの通知にURLが散りばめられることがなくなり、見やすくなりました。
しかし、RSSにあるLinkのURLがhttps://azure.microsoft.com/updates?id=522554のようなAzureのアップデート情報はスクレイプに失敗することが分かりました。以下のようにページを取得できなかった旨のメッセージがSlackに通知されてしまいました。
この原因は、 UpdateのAzureのページが動的に生成されるページである ためです。
これを読み込むためには、より高度な作り込みが必要なので、今回は簡易的な対処を行いました。それを次の節で紹介します。
Azure UpdateのURLをスクレイプできない課題の対応
課題の対処として、URLがhttps://azure.microsoft.com/updates?id=xxxxの場合は、RSSのLinkの内容ではなく、Description属性を参照して、それを日本語に翻訳したものをSlackに通知するように処理を分岐させます。
Pathsによる分岐の設定
URLに応じて処理を分岐させるため、RSSのトリガーの直後にPathsを挿入します。
Pathsを挿入するとStepが左右に分岐します。
まず、左のPathsを選択し、以下を選択 or 入力します。
-
Choose field: RSSのLink -
Choose condition:(Text) Does not Contains -
Enter text or insert data:azure.microsoft.com/updates?id=
これで、Azure Update情報で ない 場合は、リンク先URLを参照して要約する分岐となります。
次に、右のPathsを選択し、以下を選択 or 入力します。
-
Choose field: RSSのLink -
Choose condition:(Text) Contains -
Enter text or insert data:azure.microsoft.com/updates?id=
これで、Azure Update情報で ある 場合は、RSSのDescriptionを参照して要約する分岐を作ります。
ChatGPT(OpenAI) の追加
右のフローはWebスクレイプは不要なので、ChatGPT(OpenAI)のステップを追加します。
追加はCopyとPaste to replaceで左フローにあるChatGPT(OpenAI)のステップをコピーできます。
User MessageとInstructionsは以下のようにしました。
Slackの追加
右のフローの最後にSlackを追加します。
同じようにコピーした上で、Message Textは以下のようにします。
最終結果
すべての課題対応が終わりました。
これで、Azure Update情報の場合は RSSフィードのDescriptionを日本語に翻訳 し、それ以外の情報は Webページをスクレイピングして日本語要約 したものが通知されるようになりました。
Zapの全容は以下の通りです。
Slackの通知結果も、Update情報とそれ以外の情報でそれぞれ要約を通知できました。
おわりに
Proプランのトライアルは 1,000アクション で終了するので、無料で長い間続けることはできなさそうです。
ただ、Zapierを試す良い機会になりました。本格的に使うと、もっと幅広いシステム運用ができそうです。


















