4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GPTsでqiitaの記事を取得しラジオとして使う

Last updated at Posted at 2024-06-22

はじめに

qiitaの記事を読むのが面倒くさいなとずっと思ってて、実際読んでませんでした。そこで、ニュースラジオとして聞き流せるように、qiitaの記事を取得してくるGPTsを作ったので紹介します。

背景

最初は自然言語だけで命令してqiitaから取ってこようと思ってました。
スクリーンショット (44).png

これでもある程度良い感じに取ってこれるのですが、日付が実際のものとは異なり、毎日最新情報を得たいニュースラジオとしては欠点でした。
(2024/5/11に実施した。2024/4/22の記事も2022/10/9の記事も、ニュースとして使うには日付が離れすぎている。)
スクリーンショット (45).png
スクリーンショット (46).png
スクリーンショット (47).png

何回も試した感じ、qiitaのAPIを使わないと正確な日付は取得できなさそうだったため、今回APIを使った形になります。

使い方

使い方の想定

ニュースラジオとして隙間時間に聞き流すのを想定しています。ここで読み上げた記事5つの中から特に興味のあった記事だけ、「記事のリンク」から読みに行くと効率いいなと考えてます。

私にとって便利なものを作ったので、タグ「生成AI」に限定した記事だけを持ってくるようにしています。いいね数などの指定は面倒だったため、何回命令しても「生成AIタグのついた最新記事5つ」だけを毎回取得してくるので、1日1回しか使えない感じになってます。

chatGPTウェブ版の場合

「記事を取得」と打ち込めば直近の5つの記事を出してくれてます。その後音声読み上げボタンを押せばラジオとして使えます。
スクリーンショット (38).png
スクリーンショット (40).png

chatGPTアプリ版の場合

右下の音声会話ボタンから「記事を取得」と命令すれば、その後自動でラジオのように読み上げ始めてくれます。「記事を取得」と言ったつもりが「ギジオストク」と聞き取られてますが、まあなんとか動いてくれました。
Screenshot_20240622-182708.jpg

作り方の概要

GPTsのActionsでのAPI連携方法についてはこの記事が参考になると思います。
【GPTs Actions】GPTsの外部API連携方法
上の記事で大体の作り方はわかるので、ここでは条件だけを簡単に提示して終わろうと思います。

GPTsの条件はこんな感じ↓
スクリーンショット (41).png

スキーマはこんな感じ↓
スクリーンショット (42).png

今回は認証なしで取得してきているので1時間に60回という上限があるようです↓
Qiita の記事一覧 API でも検索クエリに絞り込みオプションが使える

スキーマの詳細↓

schema
openapi: 3.1.0
info:
  title: Qiita API
  description: API for accessing Qiita data
  version: 1.0.0
servers:
  - url: https://qiita.com/api/v2
    description: Qiita API v2
paths:
  /tags/{tag_id}/items:
    get:
      operationId: getItemsByTag
      summary: Retrieve items by tag ID
      parameters:
        - name: tag_id
          in: path
          required: true
          schema:
            type: string
          description: ID of the tag
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 1
          description: Page number of the results to fetch
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            default: 20
          description: Number of items per page
      responses:
        '200':
          description: A list of items with the specified tag
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    title:
                      type: string
                    body:
                      type: string
                    created_at:
                      type: string
                      format: date-time
                    updated_at:
                      type: string
                      format: date-time
                    url:
                      type: string
                      format: uri
        '404':
          description: Not found. The requested resource does not exist.

このスキーマを作るのには、ActionsGPTを使いました↓
スクリーンショット (43).png

追記

上記の設定では取得データ量が多く取得失敗することが多かったため、per_page=3にしたり、tag_idの変数をAIに固定してendpointに埋め込んだりしています。

展望

タグをユーザー入力により変更できるようにして、AI以外のニュースも取れるようにしたいなと思っています。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?