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.3.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.3-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

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

Hashes for noteclient2-1.0.3.tar.gz
Algorithm Hash digest
SHA256 e9a4a0aae3da4ac44aedadbdbd17ab4efd8de96e8d72994f31a2d11f3370f114
MD5 f621b44727ff6332482a70a78b18d4c4
BLAKE2b-256 0cd0cc2d72039a23dce703a5ab257cdeed18138f35272d9ba649b7a0baa0ac01

See more details on using hashes here.

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

Hashes for noteclient2-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0195d6100c1c4fd0ae3ee5951fece7a4b9a0c0d4524a4ca3cc7b5b662207358c
MD5 cc1c9cabd394c08b621cef755e1095ec
BLAKE2b-256 59851b246e78ae51f7b5f0ef01477cc61362246b2dc602861e32ce43bfc2e945

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