メインコンテンツへスキップ
見出し画像
Photo bychiyoizmo

【note記事データ管理法】Pythonでnote APIからCSV出力を試してみた

    私がプログラミングの世界に足を踏み入れたのは、日常生活における小さな不便をテクノロジーの力で解決したいという思いからでした。

    具体的に実現したいことは、いくつかあって、たとえば、毎朝くるメールマガジンをNotionに自動で保存して管理するシステムを作りたかったり、noteの記事がどれくらい読んでもらえるのかを分析したりしたいと思っています。


    note記事データ管理の必要性

    noteって、どれくらいの人に読んでもらっているのか、全然分析できません。noteのビュー数がわかるダッシュボードはあるものの、情報量が少なすぎてなんにもわかりません。アクセス解析の計測データが欲しい場合は、月額8万円(税抜)の「note pro」を契約する必要があります。また、Googleアナリティクスを設置したい場合は月額1万円(税抜)のオプション料金が必要ですので、合計で月額9万円(税抜)が必要となります。私はこの問題をなんとかしたいと思っています!

    Python を使った解決策


    この問題に挑もうときっかけとなったのは、noteの2つの記事でした。
    一つは、noteの非公式APIを使ってデータを取得する方法を紹介したsatfさんの記事。もう一つは、karupoimouさんの記事で、これもまたnoteを活用したデータ分析に関するものでした。これらの記事を読み、私もやってみたいと思い立ちました。

    データ取得: APIリクエストの構築

    今日の目標は、Pythonとnoteの(非公式)APIを活用して、以下のようなデータを含むCSVファイルを生成することです。

    • 記事のタイトル

    • ビュー数

    • いいね数

    • 公開日

    • 記事のURL

    このデータを活用することで、どの記事がより多くの反響を得ているのか、どのような内容が読者に響くのかを分析できます。また、記事のパフォーマンスを時間経過と共に追跡することも可能になります。

    第一歩として、まずはPythonでAPIにアクセスし、必要なデータを取得する方法を学びました。次に、得られたデータを適切な形式でCSVファイルに出力するスクリプトを作成しました。これはPython初心者にとってはかなり挑戦的な部分でしたが、ChatGPTのサポートのおかげで、なんとか進めることができました。

    こちらがそのスクリプトです。

    import requests
    import pandas as pd
    from io import StringIO
    
    user_name = "◯◯◯"
    contents_api_url = f"https://note.com/api/v2/creators/{user_name}/contents"
    payload = {'kind': 'note'}
    all_notes = []
    
    note_count = 50  #APIから取得する総記事数
    page_num = (note_count // 6) + 1 #1回のリクエストで取得できる記事数は6記事までらしい
    
    for page in range(1, page_num + 1):
        payload['page'] = page
        res = requests.get(contents_api_url, params=payload).content
        json_str = res.decode('utf-8')
        df = pd.read_json(StringIO(json_str))
        df_notes = df["data"]["contents"]
        all_notes.extend(df_notes)
    
    # 全ての記事をDataFrameに変換
    df2 = pd.DataFrame()
    for note in all_notes:
        df_n = pd.DataFrame(note.values(), index=note.keys()).T
        df2 = pd.concat([df2, df_n])
    
    # 結果をエクセルファイルに保存
    df2.to_csv('notes.csv')
    

    user_name = "◯◯◯"のところに、自分のnote IDを入れてみて下さい。

    CSVファイルへの出力


    そしてこれが出力できたものの一部。

    画像

    トラブルシューティングと最適化


    プログラミングの勉強をしていると、情報の古さとそれに伴う技術的な障壁に打ちのめされることはよくあります。参考にしたnoteの記事は非常に有益だったものの、APIやPythonのバージョンが変わっていることで、同じ手順ではうまく機能しない部分がありました。初心者にとっては、これが大きな壁になり得ます。

    私はPythonの勉強をはじめたばかりの初心者です。まだ、文法も全然理解していないし、書けません。でも、私にはChatGPTがついています!この謎の自信があれば、どんな挑戦も乗り越えられると感じています!これから様々な試みをして、自分の技術を磨いていくつもりです。


    ーーーーーーーーーー
    私の書いた本が出版されました!
    \Twitterからうまれた/
    ちょっと理系なおうち遊びの本

    Amazon 売れ筋ランキング  
    幼児教育 カテゴリー  有料Top100
    ベストセラー1位✨ になりました!
    ありがとうございます!

    KindleUnlimited, ペーパーバックでも読めます!


    画像



     
     
     
    家庭にAIを導入したら、毎日が前に進み始めた! 著書『AI×家事』扶桑社 WOMAN AI AWARD 2026 受賞 miyazakimari.com NHK・日テレ・フジ・雑誌ESSE・LDK・クロワッサン掲載 講談社with classコラムニスト

    あなたへのおすすめ