Skip to main content

Unofficial Python client for posting articles to note.com

Project description

NoteClient2

Python から note に記事を投稿するための非公式ライブラリです。
Markdown で記述した記事を、画像・アイキャッチ・有料エリアを含めて投稿できます。

本ライブラリはPlaywrightによるスクレイピングと内部APIを組み合わせることで高速かつ安定した投稿処理を実現しています。

概要

NoteClient2 は、2023年10月に公開されたNoteClient(初期バージョン)の後継ライブラリです。

初期バージョンではSeleniumを用いたブラウザ操作ベースの実装を採用していましたが、

  • 動作速度が遅い
  • 記事内への画像挿入ができない
  • アイキャッチ画像が既存画像のみ
  • 有料記事に対応していない

といった制約がありました。

しかし、NoteClient2では設計を全面的に見直し、

  • ログインのみPlaywrightを使用
  • それ以外の処理はすべてnoteの内部APIを直接利用
  • セッション(Cookie)をローカルに保存し再利用

という構成に変更することで、実用レベルの投稿速度と機能性を実現しています。

主な機能

記事投稿

  • Markdownファイルから記事を投稿
  • 下書き保存 / 公開の切り替え対応
  • ハッシュタグ指定対応

画像アップロード

  • ローカル画像を記事内に挿入
  • ローカル画像をアイキャッチ画像として設定

有料記事対応

  • Markdown内に <pay> タグを記述することで、それ以降の内容を有料エリアとする
  • 金額の指定も可能

マガジン指定

  • 複数マガジン指定対応

セッション再利用

  • ログイン後のCookieをJSONファイルに保存
  • Cookieが有効な限り再ログインを省略
  • 高速かつ安定した連続投稿が可能

インストール

pip install NoteClient2

Playwright のセットアップ(必須)

本ライブラリではPlaywrightを使用します。 インストール後、必ず以下を実行してください。

playwright install

基本的な使い方

from NoteClient2 import NoteClient2
from dotenv import load_dotenv

load_dotenv()

# .envファイルを利用して機密情報を安全に取り扱ってください
EMAIL = os.getenv("email")
PASSWORD = os.getenv("password")
USER_URL_ID = os.getenv("user_url_id")

client = NoteClient2(
    email=EMAIL,
    password=PASSWORD,
    user_urlname=USER_URL_ID
)

result = client.publish(
    title="Note Client2 テスト記事",
    md_file_path="article.md",
    eyecatch_path="eyecatch.png",
    hashtags=["Python", "note"], 
    price=300,
    magazine_key=["mxxxxxxxxxxxx"], 
    is_publish=True
)

if result["success"]:
    print("投稿成功:", result["url"])
else:
    print("エラー:", result["error"])

Markdown による記事の書き方

基本構文

# 見出し1
## 見出し2
### 見出し3

通常の文章です。

- リスト
- リスト

> 引用文

インライン装飾

**太字**
*斜体*
~~打ち消し~~
[リンク](https://example.com)

画像の挿入

![画像の説明](path/to/image.png)
  • ローカルパスを指定してください
  • 自動的にアップロードされ、記事内に挿入されます

目次の挿入

<toc>

目次が挿入されます。


有料記事の書き方

ここまでは無料で読めます。

<pay>

ここからは有料エリアです。

ルール

  • <pay>1行のみ・1回のみ
  • <pay> 以前 → 無料エリア
  • <pay> 以降 → 有料エリア

publish() の主な引数

引数名 説明
title 記事タイトル
md_file_path Markdown ファイルのパス
eyecatch_path アイキャッチ画像(任意)
hashtags ハッシュタグのリスト
price 有料記事の価格(0で無料)
magazine_key マガジンキーのリスト
is_publish True で公開、False で下書き

エラーハンドリング

本ライブラリでは raise を使用せず、 戻り値として辞書型で結果を返します

{
    "success": False,
    "error": "エラーメッセージ",
    "detail": {...}
}

これにより、呼び出し側で柔軟な制御が可能です。

注意事項

  • 本ライブラリは 非公式 です
  • note の仕様変更により動作しなくなる可能性があります
  • 利用は自己責任でお願いします
  • 過度な自動投稿・スパム行為は推奨しません

関連リンク


ライセンス

INSANE License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

noteclient2-1.0.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

noteclient2-1.0.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file noteclient2-1.0.0.tar.gz.

File metadata

  • Download URL: noteclient2-1.0.0.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for noteclient2-1.0.0.tar.gz
Algorithm Hash digest
SHA256 af9a74628d34617a0af8da9308d91a2f47f503101f472b3d2d0fec7a9d28e887
MD5 f5d912ceab6de061ec2d2db120e250e2
BLAKE2b-256 f0d740ed36312fe34feb69afda281661fd3c60fd2f6612ef6764265806663bf4

See more details on using hashes here.

File details

Details for the file noteclient2-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: noteclient2-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for noteclient2-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 66ec1c15aefc592681a507911b0a1dfe144f40b4898a6fa7c403a1fafb5f5a73
MD5 4123035e0d0ada0b969755274b965443
BLAKE2b-256 16d831f1e8a7631b06e72c32f4f4e256eac5e61e05e39ca8085a8830b9149776

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page