Skip to main content

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)

画像の挿入

![画像の説明](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.1.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.1-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: noteclient2-1.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 3591f32542a0027385eb05aeda27125d895707d9aed9726be3de712fddbca29b
MD5 9b521c0a834da062a2d18b9de0042e08
BLAKE2b-256 a39cf0881eb4433394ce4eb7aadedd92b62aaeeaa9845b1c38508c5ccb18e4ff

See more details on using hashes here.

File details

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

File metadata

  • Download URL: noteclient2-1.0.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 44f1c21b804d5cfa36d35db6e164b205cce34ad02e10a8cf459cf1659bcd29e2
MD5 b4c8ad760bf120915c6935fc4de3a777
BLAKE2b-256 98a3a80733c41f101df177ad199a817ac189999715cee2716f83fcf0d8418510

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