はじめに
qiitaの記事を読むのが面倒くさいなとずっと思ってて、実際読んでませんでした。そこで、ニュースラジオとして聞き流せるように、qiitaの記事を取得してくるGPTsを作ったので紹介します。
背景
最初は自然言語だけで命令してqiitaから取ってこようと思ってました。
これでもある程度良い感じに取ってこれるのですが、日付が実際のものとは異なり、毎日最新情報を得たいニュースラジオとしては欠点でした。
(2024/5/11に実施した。2024/4/22の記事も2022/10/9の記事も、ニュースとして使うには日付が離れすぎている。)
何回も試した感じ、qiitaのAPIを使わないと正確な日付は取得できなさそうだったため、今回APIを使った形になります。
使い方
使い方の想定
ニュースラジオとして隙間時間に聞き流すのを想定しています。ここで読み上げた記事5つの中から特に興味のあった記事だけ、「記事のリンク」から読みに行くと効率いいなと考えてます。
私にとって便利なものを作ったので、タグ「生成AI」に限定した記事だけを持ってくるようにしています。いいね数などの指定は面倒だったため、何回命令しても「生成AIタグのついた最新記事5つ」だけを毎回取得してくるので、1日1回しか使えない感じになってます。
chatGPTウェブ版の場合
「記事を取得」と打ち込めば直近の5つの記事を出してくれてます。その後音声読み上げボタンを押せばラジオとして使えます。
chatGPTアプリ版の場合
右下の音声会話ボタンから「記事を取得」と命令すれば、その後自動でラジオのように読み上げ始めてくれます。「記事を取得」と言ったつもりが「ギジオストク」と聞き取られてますが、まあなんとか動いてくれました。
作り方の概要
GPTsのActionsでのAPI連携方法についてはこの記事が参考になると思います。
【GPTs Actions】GPTsの外部API連携方法
上の記事で大体の作り方はわかるので、ここでは条件だけを簡単に提示して終わろうと思います。
今回は認証なしで取得してきているので1時間に60回という上限があるようです↓
Qiita の記事一覧 API でも検索クエリに絞り込みオプションが使える
スキーマの詳細↓
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を使いました↓
追記
上記の設定では取得データ量が多く取得失敗することが多かったため、per_page=3にしたり、tag_idの変数をAIに固定してendpointに埋め込んだりしています。
展望
タグをユーザー入力により変更できるようにして、AI以外のニュースも取れるようにしたいなと思っています。