Manusを使って、YouTubeのプレイリスト更新通知システムを作る (人間もちょっと頑張る)

## きっかけ

私はよく『[ひまじんプログラマーの週末エンジニアリングレッスン](https://open.spotify.com/show/2uv9mONog0nr9q5YJJsvIt)』というポッドキャストを聞くのですが、直近のエピソードで非常に面白いトピックがありました。
この回です。

https://open.spotify.com/episode/4a2Mq5W7gf8R0gD4R5WanC?si=uyYPDDStTVuNDzZBZKJIJQ

「何やらManusってものが凄いらしい」「開発の一連の流れを主体的にどんどんやってくれるらしい」的な話を聞き、近頃の生成AI関連サービスにあまり触れられていなかった私は「Manus、さすがに触ったほうが良いやつでは...?」と思い始めました。

そこで、以前作ろうと思って放置していたとあるシステムを、AIの力を使って作ろう、作ってもらおうと思いました。
今回の作業フローは、ひまプロのノリさんが書かれた、以下の記事を大いに参考にさせていただきました。

https://qiita.com/kazunoriboy/items/3842580e7d702f1b2f10

## 今回作るもの：YouTubeのプレイリスト更新を通知するシステム

今回作るものは、YouTubeのプレイリストが更新されたら通知するシステムです。

例えば、「このゲーム実況者の全動画を見たいわけではないが、特定の作品をプレイしている様子だけは追いたい」という場合などに使えるでしょう。その配信者がこまめに再生リストを更新するタイプである、という条件付きですが。

どうやらYouTubeには、特定プレイリストのみ更新通知を行う機能がまだ実装されていないようなので、今回作ってみることにしました。

## 作ってみよう

それでは作っていきましょう。
今回は、先述した[記事](https://qiita.com/kazunoriboy/items/3842580e7d702f1b2f10)にしたがって、

1. ChatGPT:ロードマップ作成、Manusに投げるプロンプトの生成
1. Manusに作業してもらう
1. 自分で作業しなければならない部分に取り組む

という流れで進めました。

Manusの出力および成果物に関しては、以下にまとまっているので、適宜参考にしてください。

https://github.com/Hiru-ge/Youtube-Playlist-Notification

### 1. ChatGPT:ロードマップ作成、Manusに投げるプロンプトの生成

ここでは、ChatGPTにロードマップを作らせ、Manusに投げるプロンプトを生成させました。
今回は、GAS (Google Apps Script)を使ってこのシステムを構築することにしました。
[YouTube API](https://developers.google.com/youtube/v3/docs/playlistItems/list?hl=ja)を使ってプレイリスト情報を取得し、通知には[LINE Messaging API](https://developers.line.biz/ja/services/messaging-api/)を使います。

まず、ロードマップ作成の為に、ChatGPTへ以下のプロンプトを投げました。

    YouTubeのプレイリストに新たな動画が追加された時に通知を行うシステムをGASで作りたいです。
    YouTube APIを使って指定したURL(プレイリストURL)の動画数を取得し、スプレッドシート内のに記録されている動画数と異なれば通知を行うというシステムにしたいです。
    このシステム構築を行うためのロードマップを示してください。

そうして返ってきた返答を確認し、多少修正を行った後、「これをManusというAIエージェントにやらせたいので、Manusに与えるプロンプトを書いてください」とお願いしました。

ここまでで、ステップ1は完了です。Manusに与えるプロンプトは[こちら](https://github.com/Hiru-ge/Youtube-Playlist-Notification/blob/master/Manus/pasted_content.txt)になります。

### 2. Manusに作業してもらう

ステップ1で出力してもらったプロンプトをManusに投げます。

すごい。どんどん進めてくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3482722/65271026-e40e-4a74-81d5-c06dc6d790a7.png)

自分でTodoを整理して、必要な機能を実装してくれているようで、APIとの連携も良い感じにやってくれています。
しかもありがたいことにドキュメントも整備してくれて、「この後あなたがやらなきゃいけない作業はコレコレですよ」とまとめてくれました。
親切すぎる。
アクセストークンやAPIキーは勝手に取得してくれません。というか、何らかの方法で勝手に取得されたとして、それを使う気にはなれない...。

ともかく、Manusの作ってくれたソースコードやドキュメントをありがたく受け取って、ステップ2は完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3482722/452af254-cd6c-4233-be66-e2e8cb4830fd.png)

### 3. 自分で作業しなければならない部分に取り組む

あとはManusが示してくれた[手順](https://github.com/Hiru-ge/Youtube-Playlist-Notification/blob/master/Manus/README.md)に従って、各種APIやGASのセットアップをしていきます。
今回はYouTube APIとLINE Messaging APIを使うことにしたので、そのあたりですね。

ここに関しては今回の本筋ではないので省略しますが、ちょっと手間でした。
まあ、ここは私の作業なので、人間が頑張ります。
以下に、セットアップに役立ちそうなURLを乗せておくので適宜参考にしてください。

#### YouTube APIのセットアップ参考URL

https://developers.google.com/youtube/v3/getting-started?hl=ja

https://qiita.com/nbayashi/items/bde26cd04f08de21d552#api%E3%82%AD%E3%83%BC%E3%81%AE%E7%99%BA%E8%A1%8C

#### LINE Messaging APIのセットアップ参考URL

https://developers.line.biz/ja/docs/messaging-api/getting-started/

チャネルアクセストークンの発行方法

https://developers.line.biz/ja/docs/messaging-api/generate-json-web-token/#generate-a-key-pair-for-the-assertion-signing-key

LINEユーザーIDの確認方法

https://note.com/m316jp2/n/nc466911fa9ab

### 4. 動作確認

それでは、最後に動作確認を行います。
シートに通知対象のプレイリストを追加して、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3482722/33ed725d-a3c3-482d-9173-b2553f543a4d.png)

コードを実行！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3482722/5befd05e-78b9-4024-9ee0-c7252fdbddd0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3482722/96844826-e3fa-4344-a331-800fc0f48738.png)

すごい！！LINEに通知がちゃんと届いています！
このスクリプトが定期的に実行されるよう、App Scriptからトリガーの設定を行えば、「YouTubeのプレイリスト更新を通知するシステム」完成です！！！！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3482722/349b1676-6470-4aef-a449-957f6d7050fd.png)

## まとめ・感想

というわけで、無事システムの構築が完了したわけですが、Manusすごいですね。
JSは全部書いてくれましたし、APIにどんなリクエストを投げればいいのかも調べてコードを書いてくれました。
それから、今後の手順書をまとめておいてくれるホスピタリティ。衝撃でした。

課題点があるとすれば、「今回のタスクがManus向きではなかったこと」があると思います。
今回のシステムの核はAPIにリクエストを投げるところにあり、APIを使うためにはユーザー自身の手でAPIキー等のセットアップをしてもらう必要がありました。
つまり、Manusが単独で進められるタスクではなかったわけです。
そうなると必然的にユーザーの作業割合が増えてしまう訳なので、「基本的になんでもできるManus」にとって、認証情報の多い今回のタスクは本領発揮ではなかったのだと思います。

とはいえManusの近未来的な挙動には感動しましたし、一種のパラダイムシフト的なものを感じました。
特に今回のような「頭の中に案はあるが、取り組むモチベーションがそこまでわいていないもの」の開発は、Manusの登場によってどんどん手を付けやすくなるのではないでしょうか！

セキュリティ面の意識や、他のツールとの使い分けはこれまで通り重要かと思いますが、非常に面白い体験でした！

### 今回要した時間とクレジット数

今回の制作は約2時間で終えることができ、消費したManusのクレジットも200程度でした。
最初に配られる1000クレジット(+招待コードで付与される1000クレジット)があれば、余裕で無料範囲内ですし、時間的にも気軽に取り組めると思いますので、是非皆さんも試してみてください！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3482722/f654c386-7879-4318-9b4e-c2b5c2930319.png)




## 最後にちょっとだけ宣伝

先日、個人開発でWebアプリを作成しました！
こちらはManusを使ったわけではないです。
アプリの概要としては「コーヒーの味を維持しながら、量を変えられる変換器」となっています！
コーヒーを普段いれる方で、「美味しいいれ方はあるんだけど、200mlじゃなくて300ml作りたいんだよな...」というような経験がある方、是非お試しください！

https://co-fitting.com/