タスク自動化ツールの「Zapier(ザピエル/ザピアー)」と、OSSのタスク自動化ツールである「n8n」を比較してみました。ワークフローの設定手順も含めて解説します。
お題
Webサイトの新着情報RSSフィードを取得し、新着があればSlackへ通知する。
今回は「Yahoo!ニュース IT」にしてみました。
結論
結論から申し上げます。
今回のお題で比較してみたところ、**Zapierは簡単!便利!**という結論に至りました。
定期実行で新着を確認する必要もなく、トリガーで自動的に新着をキャッチしてくれるのも大変便利でした。
Zapier | n8n | |
---|---|---|
価格 | 無料〜有料 | 無料 |
連携サービス | 2000以上 | 150程度 |
難易度 | 易しい | 難しい |
拡張性 | 低い | 高い |
コーディング | NoCode | LowCode |
サーバー | 不要 | 必要 |
Zapierの場合、無料では月の実行数がかなり限られるので、毎月のコストは必要ですが、コスト削減に十分寄与できるパフォーマンスであると考えています。
一方、n8nはOSS(Open Source Software)ですので、全て無料で使用できるところは魅力ではありますが、
- サーバー構築が必要
- 接続可能なサービス数がZapierには及ばない
- ワークフローがプログラミングチックで多少のコーディングが必要になる
という点から、ある程度のエンジニアリングスキルが必要になります。
タスク自動化
今回のお題で作成したワークフローを先に記載します。
Zapierは2ステップであるのに対してn8nは5ステップとなりました。
Zapier
Zapierでのワークフロー構築手順です。
1. Zapを新規作成
ダッシュボードから「Create Zap」を選択します。
2. トリガーを設定
「When this happens」を選択します。
※トリガーとは「引き金」を指します。要は「何かが起きた時に何かをする」の「何かが起きた」の設定です
「Built-In Apps」の中から「RSS by Zapier」を選択します。
「Choose Trigger Event」で「New Item in Feed」を選択します。
新着フィードが発生したら、というトリガーです。
選択したら「CONTINUE」を押下します。
「Feed URL」にYahoo!ニュース ITのURLを入力します。
Yahoo!ニュース - RSS
https://news.yahoo.co.jp/pickup/computer/rss.xml
※今回はログイン不要の公開RSSなのでUsernameとPasswordは設定しません
「CONTINUE」を押下します。
「Test trigger」を押下してテストします。
こんな感じで結果が表示されればOKです。「CONTINUE」で次に移ります。
3. アクションを設定
「何かをする」のActionを設定します。(Do this)
今回は「Slackへ通知」するという設定を行います。
「Your Apps」から「Slack」を選択します。
今回は通知先はチャンネルにします。
「Send Channel Message」を選択します。
設定したら「CONTINUE」で次へ。
「Slack account」を選択します。
※このアカウントを使ってフローを実行します。
設定したら「CONTINUE」で次へ。
「Channel」で通知先のチャンネルを選択します。
「Message Text」にフィードの項目(Item)を入力します。(Insert Data内の項目を選択するとMessage Textに追加されます)
「TEST & CONTINUE」でテストしてみます。
Slackに通知されればOKです。
「Done Editing」で設定完了します。
すると、冒頭のワークフローと同じものができあがります。
このワークフローを動作させるためにスイッチを「ON」にします。
これで完成です。
n8n
n8nでのワークフロー構築手順です。
まずはサーバーを用意します。ローカルPCでも構いません。
n8n公式サイトの手順にはCLIとDockerでの2通りの構築方法がありますが、
今回は手軽なDockerで構築しました。(1コマンドです)
1. ワークフローを作成
「New」で新規にワークフローを作成します。

2. トリガーを作成
Cron
ワークフローにアイテムを追加します。「+」を押下します。
「Trigger」の中から「Cron」を選択します。
※Cronとは決められた日時に定期実行してくれるものです

「Parameters」に以下の設定をします。
新着1件のみを取得する設計にしたいため、1分おきに実行するようにしました。
項目 | 設定値 | 説明 |
---|---|---|
Mode | Every Minute | 毎分 |

RSS Feed Read
RSSフィードの読み込みアクションを追加します。

「Parameters」に以下の設定をします。
項目 | 設定値 | 説明 |
---|---|---|
URL | https://news.yahoo.co.jp/pickup/computer/rss.xml | RSSフィードのURL |
これを実行するとこんな感じになります。
8件の結果が出てきました。
SplitInBatches
RSSフィードの結果配列から先頭の1件だけを抜きます。
「Split In Batches」を作成します。

項目 | 設定値 | 説明 |
---|---|---|
Batch Size | 1 | 先頭1件のみ |

実行後、Resultsが1件になっていればOKです。
Function
ここまでの設定だと、毎分同じものが流れてしまうので、重複を排除します。
「Function」を作成します。

項目 | 設定値 | 説明 |
---|---|---|
Function | 下記コード | 前回日時と異なる(=新着)の場合は新着データを返却 |

const staticData = getWorkflowStaticData('global') // グローバル変数を取得
const lastIsoDate = staticData.lastIsoData // 前回の日時
const currentIsoDate = items[0].json.isoDate // 今回の日時
if (lastIsoDate != currentIsoDate) { // 更新があったら処理
staticData.lastIsoData = currentIsoDate
return items // 新着を返却
} else {
return [] // 何も返さない
}
Slack
Slackへの通知を設定します。
※事前にSlack側でbotの作成が必要ですが、割愛します

「Slack API」の設定をします。
項目 | 設定値 | 説明 |
---|---|---|
Credentials Name | 任意の名前 | Slack Credentailsの名前 |
Access Token | アクセストークン | Slackのアクセストークン |
「Parameters」の設定をしていきます。
項目 | 設定値 | 説明 |
---|---|---|
Resource | Message | メッセージ |
Operation | Post | POSTメソッドで送信 |
Channel | 任意のチャンネル名 | 投稿先のチャンネル |

「Text」の設定です。
「Nodes」からひとつ前の「SplitInBatches」を選択し、「Output Data」の「JSON」「enclosure」から取得要素を選択します。
※SplitInBatchesの実行結果が0件だとOutputDataが表示されないので要注意
「Expression」にSlack通知の本文を設定します。
Activeを「ON」にして完了です。
おわりに
以上でZapierとn8nの設定はおしまいです。
Zapierの方が設定内容が楽だったと思います。
(完成形を再掲)
実際、n8nで構築中もOutput Dataが取れないなど、問題と解決が必要なことが何回かありました。
その点、Zapierはサクサクと設定できたので「もう終わり?」というくらいあっという間でした。
ワークフロー自動化ツールは他にもありますので、ぜひ比較の参考にしてみてください。
ありがとうございました。