GASでニュース配信LINEボットを作った。AI要約はやめて、費用0円で動いている
毎朝、気になるテーマのニュースを自分のLINEに届けてくれるボットを、Google Apps Script(GAS)で作ってみた。GASは、Googleが無料で用意しているプログラムの実行場所のようなものだ。
先に結論を書いておく。最初はAIに要約させるつもりだったけれど、途中でやめた。 AIを使うための「鍵」をGASに置くのが、セキュリティ的に少し怖くなったからだ。やめてみたら見出しだけでも十分だったし、費用も0円になった。
LINE側の準備は、前の記事「LINEに通知を送る準備で迷ったのは、2つの管理画面の行き来だった」にまとめている。
どんなものを作ったか
毎朝7時〜8時のあいだに、3つのテーマのニュースの見出しとリンクがLINEに届く。
| テーマ | 件数 | どのくらい前の記事まで |
|---|---|---|
| 生成AI | 5件 | 1日以内 |
| B2Bマーケティング | 5件 | 1日以内 |
| ピックルボール(趣味) | 2件 | 7日以内 |
テーマごとに吹き出しが分かれていて、3つまとめて届く。一度送った記事は覚えておいて、次の日からは送らないようにしている。
ニュースは「Google ニュース」から取ってきている。Google ニュースには、検索結果を機械が読みやすい形で配ってくれる仕組み(RSS)があって、キーワードを指定すればその一覧がもらえる。
動きとしては、こんな流れだ。
- 毎朝、GASが自動でプログラムを動かす
- Google ニュースから、キーワードに合う記事の一覧をもらう
- まだ送っていない記事だけを選ぶ
- 自分のLINEに送る
- うまくいかなかったときは、LINEとメールで知らせてくれる
お金と時間
| 項目 | 内容 |
|---|---|
| 費用 | 0円(GAS、Google ニュース、LINEの無料プラン) |
| LINEの通数 | 1日1通で月30通くらい。無料の月200通に収まる |
| かかった時間 | LINE側の準備と合わせて約3時間 |
少しずつ「動いた!」を積み重ねた
いきなり完成形を目指さず、小さく区切って、1つずつ「ここまで動いた」を確かめながら進めた。
| 段階 | やること | ゴール |
|---|---|---|
| 0 | テーマや件数、届く時間を決める | 決めることが全部決まる |
| 1 | LINE側の準備 | トークンとユーザーIDが手元にある |
| 2 | GASから「テスト」と1通送ってみる | 自分のLINEに届く |
| 3 | ニュースの見出しを取って送る | 見出しの一覧が届く |
| 4 | AIで要約して送る | やめた |
| 5 | 毎朝自動で動くようにする | 翌朝、何もしなくても届く(1回目は届かなかった) |
こうしておくと、うまくいかなかったときに「段階2までは動いていたから、原因はその後だな」とすぐ当たりがつく。これはかなり助かった。
トークンはプログラムに直接書かない
LINEに送るには、前の記事で手に入れた「トークン」と「ユーザーID」が必要になる。どちらもパスワードのようなものだ。
これをプログラムの中に直接書いてしまうと、プログラムを人に見せたときや、記事に載せたときに一緒に漏れてしまう。そこで、GASの設定画面にある「スクリプト プロパティ」という、プログラムとは別の保管場所に入れておいた。プログラムからは「LINE_TOKENという名前のものを取ってきて」と呼び出すだけなので、中身はプログラムに出てこない。
つまずき① 実行ボタンが押せない
プログラムを貼りつけて、いざ「実行」を押そうとしたら、押せなかった。
原因は、保存していなかったこと。Ctrl+Sで保存したら、すんなり押せるようになった。
普段使っているGoogleドキュメントは勝手に保存されるので、GASもそうだと思い込んでいた。
つまずき② 届いたのは「テスト」の1つだけ
段階3で、ニュースを送るプログラムに入れ替えて実行した。3つの吹き出しが届くはずが、届いたのは1つだけ。
開いてみると、中身は「テスト」。段階2で作った、テスト送信のほうが動いていた。プログラムを入れ替えても、「どれを実行するか」の選択は前のままだったのだ。選び直したら、3つともちゃんと届いた。
エラーは何も出ない。ちゃんと動いた結果として、違うものが届く。初めてだと「プログラムが間違っているのかな」と疑ってしまうところだ。
つまずき③ B2Bマーケティングの記事が2件しかない
初めて取ってきた結果は、生成AIが5件、B2Bマーケティングが2件、ピックルボールが2件だった。
B2Bマーケティングは、1日以内の記事だと数が少なかった。日本語の記事では「B2B」より「BtoB」と書かれることが多いので、両方で探すように広げてみた。
それでも足りなければ、3日以内まで広げるつもりだ。届く記事が本当に読みたいものかどうかも、何日か見ながら調整していく。
AI要約をやめた理由
もともとの計画は「ニュース要約ボット」だった。集めた記事をAI(Claude)に要約させてから届けるつもりで、使い方や料金まで調べていた。
AIを使うには、APIキーと呼ばれる「鍵」が必要になる。これをGASに置いておき、毎朝その鍵を使ってAIに頼む、という仕組みだ。
ここで、少し怖くなった。 この鍵が万一漏れたら、他人に勝手に使われて、料金がかかってしまうかもしれない。使用額に上限をつける、専用の鍵にする、といった対策も調べた。でも、自分で管理する鍵が1つ増えること自体が、なんとなく落ち着かなかった。
そこで、AIなしで見出しだけを送ってみた。すると、見出しを読めば、何のニュースかは十分に分かった。 気になったものだけリンクを開けばいい。
もうひとつ、作っている途中で分かったことがある。Google ニュースからもらえるのは見出しとリンクだけで、記事の本文は入っていない。 AIに渡せるのも見出しだけなので、「要約」といっても見出しの言い換えくらいにしかならない。それなら、なおさらAIはいらない。
| AIで要約(最初の計画) | AIなし(今の形) | |
|---|---|---|
| 届くもの | 見出し+AIの説明+リンク | 見出し+リンク |
| 費用 | 月に数十円くらいの見込み | 0円 |
| 管理する鍵 | LINEのトークンとAIのAPIキー | LINEのトークンだけ |
| 止まる可能性がある場所 | GAS、ニュース、LINE、AI | GAS、ニュース、LINE |
AIを入れると、お金だけでなく、気にかけないといけないものが1つずつ増える。今回の目的なら、それに見合うだけの効果はなかった。
つまずき④ 翌朝、届かなかった
全部できた!と思って寝た翌朝。LINEを開いても、ニュースは届いていなかった。
GASの画面を開いて確かめてみると、原因はあっけないものだった。毎朝動かすための設定(トリガー)を、そもそもしていなかった。
GASでは、プログラムを書いて手動で動かせても、それだけでは毎朝勝手に動いてはくれない。「毎日この時間にこれを動かして」という予約を、別の画面で登録する必要がある。それがトリガーだ。手動で実行してLINEに届いたところで、すっかり完成した気になっていた。
確認したのは、GASの左側にあるこの2つの画面だ。
| 画面 | 分かること |
|---|---|
| トリガー(時計のマーク) | 毎朝動く予約が入っているか |
| 実行数(リストのマーク) | 実際に動いたか、エラーが出たか |
トリガーの画面は空っぽだった。「毎日、午前7時〜8時に dailyJob を動かす」と登録し直し、あわせてタイムゾーンが日本(東京)になっているかも確かめた。ここがアメリカの時間のままだと、「朝7時」が日本の夜中になってしまうらしい。
次の朝からは、何もしなくてもLINEにニュースが届くようになった。これでようやく完成だ。
やってみて分かったこと
AIは「使えるか」より「使う理由があるか」で決めればいい。 作る前は、要約があったほうが便利だと思っていた。でも、AIなしで一度動かしてみたら、なくても困らなかった。鍵の管理が増える不安と比べて、やめるほうを選んだ。
「怖い」と感じたら、その気持ちは大事にしていい。 セキュリティのことは詳しくないけれど、「よく分からないものを抱えるのは落ち着かない」という感覚は、たぶん正しい。分からないまま増やすより、減らせるなら減らすほうが安心だ。
「手で動いた」と「毎朝動く」は別物。 手動で実行して届いた時点で、完成した気になっていた。自動で動かすための予約は、別に設定しないといけない。完成したかどうかは、何もしないで次の朝を迎えてみるまで分からない。
小さく区切ると、つまずいた場所がすぐ分かる。 「テスト」が1つだけ届いたときも、段階2までは動いていたので、原因の見当がすぐについた。
つまずくのは、プログラムより画面の操作。 保存しないと実行できない、実行するものを選び直す、トリガーを設定し忘れる。どれもプログラムの中身の問題ではなかった。前の記事のLINEの管理画面と同じで、今回も時間を使ったのは「どこを操作するか」だった。
この規模なら、外注しなくても自分で作れる。 必要だったのは、3時間ほどの作業と、困ったときにAIへ画面を見せて聞き直すことくらい。逆に、記事の本文まで取ってきて要約する、となると一気に難しくなる。自分で作るか頼むかの境目は、そのあたりにありそうだ。
よくある質問
- プログラミングが得意でなくても、GASでLINEにニュースを届けるボットは作れますか?
- 作れました。私は非エンジニアですが、LINE側の準備と合わせて約3時間で、毎朝ニュースが届くところまでできました。つまずいたのは、プログラムの中身よりも「保存しないと実行できない」「実行する関数を選び直す」といった画面の操作でした。
- AIでニュースを要約させなかったのはなぜですか?
- AIを使うには、APIキーという「鍵」をGASに置く必要があり、セキュリティ的に少し怖いと感じたからです。万一漏れると、他人に使われて料金がかかるおそれがあります。実際に見出しだけを送ってみると、それでも内容は十分分かったので、AIなしにしました。
- GASで作ったプログラムが、翌朝に自動で動かないのはなぜですか?
- トリガー(毎日決まった時間に動かす予約)が設定されていない可能性があります。手動で実行できても、トリガーがなければ自動では動きません。GASの左側の時計のマークから「トリガーを追加」で登録します。あわせて、プロジェクトの設定でタイムゾーンが東京になっているかも確認してください。
- Google ニュースのRSSで、記事の要約はできますか?
- RSSに入っているのは、見出しと媒体名とリンクだけで、記事の本文は入っていません。AIに渡せるのも見出しだけなので、本文の要約にはなりません。
- このボットの費用はいくらですか?
- 0円です。GAS、Google ニュースのRSS、LINE公式アカウントの無料プランだけで動いています。LINEの無料プランは月200通までで、1日1回なら月30通くらいに収まります。