0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita APIでエンジニアを自動発掘する方法【Pythonスクリプト付き】

0
Posted at

Qiita APIでエンジニアを自動発掘する方法【Pythonスクリプト付き】

はじめに

こんにちは。ITフィールドセールスをしている長井洸太です。

前回の記事では GitHub API を使ってエンジニアを自動検索する方法をご紹介しました。

今回は Qiita API を使って、技術記事の著者からエンジニアを自動発掘するスクリプトをご紹介します。

GitHubとQiitaの違い

項目 GitHub Qiita
わかること 使用言語・リポジトリ数・活動量 専門分野・文章力・発信力
向いているエンジニア像 コードをよく書く人 技術発信に積極的な人
日本語情報 少ない 豊富
API利用 無料(トークンなしでも可) 無料(トークンで1000回/時間)

Qiitaで記事を書いているエンジニアは技術への熱量が高く、コミュニティ活動に積極的な傾向があります。セールス的には「話しかけやすい」層でもあります。


作ったもの

以下のことを自動でやってくれるPythonスクリプトです。

  1. Qiita APIで指定したタグの記事を検索
  2. 記事の著者を重複なく収集
  3. 各著者の詳細情報(フォロワー数・記事数・よく使うタグ)を取得
  4. Claude(生成AI)でパーソナライズされたアプローチ文を自動生成
  5. 結果をMarkdown / CSVで保存

必要なもの

  • Python 3.10以上
  • Qiitaアクセストークン(任意・あると1000回/時間に緩和)
  • Claude APIキー(アプローチ文生成に使用)
pip install requests python-dotenv anthropic

Qiitaトークンの取得方法

Qiita → 設定 → アプリケーション → 個人用アクセストークンを発行する

スコープは read_qiita のみでOKです。


スクリプト(抜粋)

import requests
import time

QIITA_API = "https://qiita.com/api/v2"

def search_items_by_tag(tag: str, max_pages: int = 3) -> list:
    """タグで記事を検索して著者IDを収集する"""
    author_ids = []
    seen = set()

    for page in range(1, max_pages + 1):
        res = requests.get(
            f"{QIITA_API}/items",
            headers={"Authorization": f"Bearer {QIITA_TOKEN}"},
            params={"query": f"tag:{tag}", "per_page": 100, "page": page},
            timeout=15,
        )
        if res.status_code != 200:
            break

        for item in res.json():
            uid = item["user"]["id"]
            if uid not in seen:
                seen.add(uid)
                author_ids.append(uid)

        time.sleep(0.5)

    return author_ids


def get_user_detail(user_id: str) -> dict:
    """ユーザーの詳細プロフィールを取得する"""
    res = requests.get(
        f"{QIITA_API}/users/{user_id}",
        headers={"Authorization": f"Bearer {QIITA_TOKEN}"},
        timeout=15,
    )
    return res.json() if res.status_code == 200 else {}


def get_user_tags(user_id: str, top_n: int = 3) -> list:
    """ユーザーの記事でよく使われるタグトップNを返す"""
    res = requests.get(
        f"{QIITA_API}/users/{user_id}/items",
        headers={"Authorization": f"Bearer {QIITA_TOKEN}"},
        params={"per_page": 20},
        timeout=15,
    )
    if res.status_code != 200:
        return []

    tag_count = {}
    for item in res.json():
        for t in item.get("tags", []):
            name = t["name"]
            tag_count[name] = tag_count.get(name, 0) + 1

    return [t for t, _ in sorted(tag_count.items(), key=lambda x: x[1], reverse=True)[:top_n]]

使い方

# Pythonタグでエンジニアを30名収集
py -3 -X utf8 scripts/sales/qiita_engineer_finder.py --tag "Python" --max-results 30

# 複数タグで検索(いずれかのタグで記事を書いている著者を収集)
py -3 -X utf8 scripts/sales/qiita_engineer_finder.py --tag "Python" --tag "TypeScript" --tag "機械学習"

# フォロワー50人以上に絞り込み
py -3 -X utf8 scripts/sales/qiita_engineer_finder.py --tag "Python" --min-followers 50

# DM文も自動生成してCSVとMarkdownで保存
py -3 -X utf8 scripts/sales/qiita_engineer_finder.py --tag "Python" --generate-dm --output both

出力サンプル

## 1. ktdatascience (@ktdatascience)
- 所属: 不明
- 場所: 不明
- 自己紹介: データエンジニア・アナリスト・Web開発を横断しながら日々修行中。
  国交省ハッカソン優勝 / Qiita月間2位 / Qiita記事投稿イベントで最優秀賞を複数回受賞
- よく書くタグ: 初心者 / 生成AI / Snowflake
- 記事数: 468本 / フォロワー: 1111人
- Qiita: https://qiita.com/ktdatascience
- Twitter: https://twitter.com/hidebuuuuuus292

**アプローチ文:**
> はじめまして。長井と申します。
> Snowflakeや生成AIを活用したデータ基盤の記事をいつも参考にしています。
> もしよろしければ一度お話しできたら嬉しいです。

実際にやってみてわかったこと

Qiitaエンジニアのプロフィールは「履歴書より正直」

記事数・フォロワー数・よく使うタグを見るだけで、その人の専門性と発信力が一目でわかります。GitHubのコードは「何を作ったか」がわかりますが、Qiitaの記事は「何を考えているか」がわかります。

フォロワー100人以上は「影響力がある人」

Qiitaで100人以上フォロワーがいる人は、技術コミュニティでの発言力があります。セールス的には「繋がると波及効果が高い」層です。

TwitterとGitHubが連携されていることが多い

QiitaのプロフィールにはTwitter・GitHubアカウントが紐付けられていることが多く、複数の接点からアプローチできます。

「Pythonタグ」だけで300名以上の著者が収集できた

1タグ・3ページ分の記事を取得するだけで300名以上の著者IDが集まりました。複数タグを組み合わせればさらに多くの候補者を発掘できます。


セールス視点での使い方

  1. --tag "機械学習" で機械学習エンジニアを絞り込む
  2. --min-followers 100 でコミュニティ影響力のある人に絞る
  3. --generate-dm でその人の記事・プロフィールに合わせたDM文を自動生成
  4. 出力されたCSVをスプレッドシートで管理し、アプローチ履歴を記録

おわりに

GitHubとQiitaを組み合わせることで、「コードを書く人」と「技術を発信する人」両方のエンジニアにアプローチできるようになりました。

次回はConnpass APIを使って勉強会参加者からエンジニアを発掘する方法をご紹介します。

毎日X(Twitter)・Instagram・LinkedInでITセールスの日常や自動化ツールの話を投稿しています。ぜひ繋がりましょう!


参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?