Unofficial Python client for posting articles to note.com
Project description
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)
画像の挿入

- ローカルパスを指定してください
- 自動的にアップロードされ、記事内に挿入されます
目次の挿入
<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 の仕様変更により動作しなくなる可能性があります
- 利用は自己責任でお願いします
- 過度な自動投稿・スパム行為は推奨しません
関連リンク
ライセンス
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file noteclient2-1.0.3.tar.gz.
File metadata
- Download URL: noteclient2-1.0.3.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9a4a0aae3da4ac44aedadbdbd17ab4efd8de96e8d72994f31a2d11f3370f114
|
|
| MD5 |
f621b44727ff6332482a70a78b18d4c4
|
|
| BLAKE2b-256 |
0cd0cc2d72039a23dce703a5ab257cdeed18138f35272d9ba649b7a0baa0ac01
|
File details
Details for the file noteclient2-1.0.3-py3-none-any.whl.
File metadata
- Download URL: noteclient2-1.0.3-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0195d6100c1c4fd0ae3ee5951fece7a4b9a0c0d4524a4ca3cc7b5b662207358c
|
|
| MD5 |
cc1c9cabd394c08b621cef755e1095ec
|
|
| BLAKE2b-256 |
59851b246e78ae51f7b5f0ef01477cc61362246b2dc602861e32ce43bfc2e945
|