Qiita APIで自分の記事に対するlikeの数などを計測する
DevRelとして、QiitaにStripeに関する記事を2年間書き続けており、記事のリアクション数を自動化した集計方法を紹介しています。APIを使用していいね数やストック数を取得し、いいねしたユーザー情報も取得できます。集めたデータを用いて記事の傾向を分析することができ、DBやBIツールに組み込んで活用することが可能です。興味のある方は試してみてください。
広告ここから
広告ここまで
目次
DevRelとしてQiitaにStripeに関する記事を2年ほど書き続けていますが、業務で書くからには何かしらの数値をレポートする必要があります。レポート作成のための数値収集をある程度自動化させているので、今回はそのうちの1つ「Qiitaに公開した記事のリアクション(いいねなど)数」を集計する方法を紹介します。
Qiitaの数字は、APIから取得できる
Qiitaに公開した記事のいいね数やストック数は、Qiita APIから取得できます。
items
のAPIレスポンスに含まれていますので、例えば次のようなコードで記事ごとの数字やIDなどを配列にできます。
const posts = await fetch(`https://qiita.com/api/v2/items?query=user%3A${USER_NAME}`, {
headers: {
Authorization: `Bearer ${pat}`
},
}).then(data => data.json())
const data = (posts as Array<{
id: string;
title: string;
likes_count: number;
stocks_count: number;
url: string;
}>).map(post => ({
id: post.id,
title: post.title,
likes_count: post.likes_count,
stocks_count: post.stocks_count,
url: post.url
}))
各項目のデータはこのような形で取得できます。
[{
"id": "xxxxxxxx",
"title": "Example post",
"url": "https://qiita.com/xxxx/items/123456789",
"likes_count": 0,
"stocks_count": 1,
}]
おまけ:「誰がLikeしたか」も調べたい場合
データが取れることだけ確認して、レポートなどには使っていない処理ですが、せっかくなのでこちらも。
items/{post_id}/likes
のAPIを利用すると、「誰が、いつ、その記事にいいねしたか」を見ることができます。
const posts = await fetch(`https://qiita.com/api/v2/items?query=user%3A${USER_NAME}`, {
headers: {
Authorization: `Bearer ${pat}`
},
}).then(data => data.json())
const postData: Array<{
title: string;
url: string;
likes: Array<{
liked_at: string;
name: string;
profile_url: string;
}>
}> = []
for await (const post of posts as any) {
const likes = await fetch(`https://qiita.com/api/v2/items/${post.id}/likes`, {
headers: {
Authorization: `Bearer ${pat}`
},
})
.then(data => data.json())
.then((likes: any) => {
return likes.map((like: any) => ({
liked_at: like.created_at,
name: like.user.name,
profile_url: `https://qiita.com/${like.user.id}`
}))
})
postData.push({
title: post.title,
url: post.url,
likes
})
}
たとえばこのようなデータが取得できます。
[ {
"title": "Example post",
"url": "https://qiita.com/xxxx/items/123456789",
"likes": [
{
"liked_at": "2023-12-09T18:49:20+09:00",
"name": "",
"profile_url": "https://qiita.com/hideokamoto"
}
]
}
]
DevRel視点ですと、「この人よくいいねしてくれているから、記事の傾向調べてみよう」みたいな用途でしょうか。DBや BIツール的なものに入れて調べることになるとは思いますので、興味がある方はお試しください。