n8n初心者向け講座第4弾のテーマは「ニュース収集の自動化」です。
今回は、AI検索エンジンのPerplexity(パープレキシティ)を活用して最新ニュースを取得し、Googleスプレッドシートに自動で書き込むワークフローを作ります。
解説するワークフローの全体像は以下です。
Perplexityはインターネット上の最新情報の収集が得意なので、ニュース収集との相性が抜群です。
「毎朝、出社してまずニュースを検索するのが日課」
という方は、この記事で紹介するワークフローを使えば、その作業をまるごと自動化できます!
STEP⓪ ニュース収集に必要なものを紹介
具体的な解説に進む前に、n8nで今回のワークフローを構築するにあたり必要な準備を紹介します。 ニュース収集を自動化するにあたり、必要なものは以下の3つです。
- PerplexityのAPIキー(取得には3ドル必要)
- GoogleのAPIキーと、n8nとの連携設定
- Googleスプレッドシートの下準備
PerplexityのAPIキー取得方法については、以下の記事で詳しく解説しています。
記事を読みながら取得してください。
GoogleのAPIキーの取得方法とn8nとの連携設定については以下の記事を参考にして取得&設定してください。
Googleスプレッドシートの下準備についてはこれから解説します。
まず、Googleスプレッドシートを起動し、新しいスプレッドシートを作ってください。
新しいスプレッドシートは以下のように設定します。
- スプレッドシートの名前:Perplexity収集ニュース
- シートの名称:7月分
- シートのA列1行目に「公開日」、2行目に「記事タイトル」、3行目に「記事URL」と記入
下の画像を参考にし、同じものを作ってください(もちろん変えてもOK)。
準備が完了したらステップ①に進みましょう!
STEP① ニュース収集のタイミングを指定
ここからは、手を動かしながら、n8nを使ってワークフローを構築します。
n8nで新規ワークフローを開いてください。
はじめにニュース収集のタイミングを指定します。
利用するのは「Schedule Triggerノード」です。
Schedule Triggerを使えばニュースを収集するタイミングを日・曜日・時間などで指定できます。
下の動画を参考にしてノードを追加してください。
この記事では以下のタイミングで情報収集するよう、Schedule Triggerノードを設定します。
- ニュース収集のタイミング:1週間に1回
- ニュース収集する曜日:月曜日
- ニュース収集する時間:午前9時
以下の画像を参考にしてノード設定してください。
STEP② HTTP Requestノードを使いPerplexity APIを実行
ニュース収集のタイミングを設定したら、いよいよPerplexityをワークフローに組み込みます。
組み込む方法を解説します。
HTTP Requestノードを追加する方法
この記事では、n8nでPerplexityを実行するのに「HTTP Requestノード」を使います。
HTTP Requestノードとは、n8nから外部サービス(今回ならPerplexity)に
「こんな処理をしてね」
と依頼するための窓口のような役割を持つノードです。
2025年7月の段階だと「Perplexityノード」はありません。
だから、代わりにHTTP Requestノードを使ってPerplexityを実行します。
HTTP Requestノードは以下の手順で追加できます。
- Schedule Triggerノードの右側にある「+」ボタンをクリック
- 右側の検索窓で「HTTP Request」と検索
- 検索結果で表示される「HTTP Request」をクリック
HTTP Requestノード追加の手順を解説した動画はこちら↓
HTTP Requestノードの設定方法
HTTP Requestノードを追加したら、Perplexityが動くよう設定します。
まずは以下のように設定してください。
- Method:POSTを選択(初期設定は「GET」)
- URL:「https://api.perplexity.ai/chat/completions」と入力
ここではPerplexityにタスクを依頼するので「POST」を選択します。
続いて、Perplexityに
「私のAPIキーはこれですよ!」
と伝えるために、Headerを設定します。
以下のように設定してください。
- 「Send Headers」をON
- Name:「Authorization」と入力
- Value:「Bearer xxxxxxxxxxxxx(APIキーの値)」と入力
「Authorization」 は「正しいユーザーですよ!」という合言葉を送るための名前です。
Bearerは、サーバーに「このキーでアクセスしてますよ」と伝えるための合図のようなものです。
もう少しで設定は完了です。
あとは以下の3つを設定してください。
- 「Send Body」をON
- Specify Body:「Specify Body」を選択
- JSON:JSONでPerplexityへの依頼を記入
JSONは以下をコピペして登録してください。
日本語で書かれた部分を変更すれば、Perplexityへの指示内容も変わります。
欲しい情報に合わせて、適切に変更してください。
{
"model": "sonar",
"messages": [
{
"role": "system",
"content": "自動化関連ニュースのリサーチャー"
},
{
"role": "user",
"content": "直近1週間に公開されたニュースの中からn8nに関する記事を抽出してください。記事は公開日・記事タイトル・記事URLの3つに分けてください。"
}
]
}
設定が完了したら「Execute step」をクリックしましょう。
設定に問題なければ、Perplexityが取得した情報が右側に表示されます。
ちなみに、modelの部分も変更可能で、選択するモデルで出力も変わります。
以下はモデル例とそれぞれの特徴です。
- sonar → 軽くて安く使える
- sonar-pro → きちんと調査したり、引用元を増やしたいときにおすすめ
- sonar-reasoning→ 問題を解いたり推論させるのに向く
- sonar-deep-research→ 論文・レポートレベルで詳細に調べたい時に向く
n8nのワークフローにPerplexityを組み込む目的に応じて使い分けてください。
初心者の場合、最も低料金のsonarから試してみるのがおすすめです。
STEP③ Codeノードでテキストを整える
STEP②によって、Perplexityで最新ニュースをテキストで取得できるようになりました。
しかし、このままGoogleスプレッドシートに貼り付けても読みにくいです。
なのでGoogleスプレッドシートに貼り付ける前に、もう1ステップはさみ、テキストを読みやすいように整えます。
ここで使うのはCodeノードです。
Codeノードを使えば、JavaScriptやPythonなどのプログラムを使ってテキストを整えることができます。
今回はJavaScriptを作ってテキストを整えます。
以下のコードを使ってそのままコピペしてください。
const items = $input.all();
const outputData = [];
for (let i = 0; i < items.length; i++) {
const item = items[i].json;
// search_results から title, url, date を抽出
if (item.search_results && Array.isArray(item.search_results)) {
for (const result of item.search_results) {
if (result.title && result.url && result.date) {
outputData.push({
json: {
'記事タイトル': result.title,
'参照URL': result.url,
'公開日': result.date
}
});
} else if (result.title && result.url) {
// dateがない場合は空文字列で対応
outputData.push({
json: {
'記事タイトル': result.title,
'参照URL': result.url,
'公開日': ''
}
});
}
}
}
// choices[0].message.content からテキストパースして抽出する部分
// search_resultsにデータがあるため、基本的には不要ですが、
// content内にsearch_resultsにはない特別な情報が含まれる場合にのみ有効にしてください。
// 必要なければこのブロック全体をコメントアウトまたは削除してください。
if (item.choices && item.choices[0] && item.choices[0].message && item.choices[0].message.content) {
const content = item.choices[0].message.content;
const articleBlocks = content.split('---\n\n').filter(block => block.trim() !== '');
for (const block of articleBlocks) {
const dateMatch = block.match(/\*\*公開日:\*\* (.*?)\s*$/m);
const titleMatch = block.match(/\*\*記事タイトル:\*\*([\s\S]*?)(?=\n\n\*\*内容要約\*\*|\n---|$)/);
const urlMatch = block.match(/\*\*参照URL\*\* \n(https?:\/\/[^\s]+)/);
const date = dateMatch && dateMatch[1] ? dateMatch[1].trim() : 'N/A';
const title = titleMatch && titleMatch[1] ? titleMatch[1].trim() : 'N/A';
const url = urlMatch && urlMatch[1] ? urlMatch[1].trim() : 'N/A';
if (title !== 'N/A' && url !== 'N/A' && date !== 'N/A') {
outputData.push({
json: {
'記事タイトル': title,
'参照URL': url,
'公開日': date
}
});
}
}
}
}
return outputData;
Codeノードの追加&JavaScript追加の流れは以下の動画で確認できます↓
STEP④ 取得したニュースをGoogleスプレッドシートに書き込む
最後に、Perplexityで取得し、Codeノードで整えたニュースをGoogleスプレッドシートに書き込みます。
以下の流れでGoogle Sheetsノードを追加してください。
- Codeノードの右の+ボタンをクリック
- 「Google Sheets」と検索
- 検索で表示されたGoogle Sheetsノードをクリック
- ノードの中から「Append or update row in sheet」をクリック
この流れは以下の動画で確認できます↓
まだ設定は続きます。
以下のように設定してください。
- Document:「Perplexity収集ニュース」を選択
- Sheet:「7月分」を選択
- Mapping Column Mode:Map Each Column Manually
- Column to match on:記事タイトル
最後に、Codeノードで整えたデータをGoogleスプレッドシートのどこに格納するかを指定します。
下の動画を参考にして指定してください。
指定が完了したら実行しましょう。
実行したら、GoogleスプレッドシートにPerplexityで取得したニュースが書き込まれます。
私の場合、以下のように書き込まれました。
このワークフローでは1週間に1回ニュースを収集しますが、n8nを開いてワークフローを動かせば毎日収集することも可能です。
新しいニュースはスプレッドシートの下の行にどんどん追加されるようになっています。
古いニュースの上に上書きされませんので安心してください。
n8n初心者向け講座第4弾は以上となります。
手を動かしながら日々のニュースを追ってると、時間が溶けるようになくなります。
この記事で紹介した方法を使い、情報収集を効率化させましょう!
この記事で紹介した第4弾以外のn8n入門講座はこちら
この記事で紹介した第4弾以外の、n8n入門講座を一覧で紹介します。
どれもn8n初心者向けのワークフローですので、ぜひ参考にしてください。
