redbook-creator-publish について
小紅書の投稿を作成・公開するスキルです。話題の検索、本文やタグ、画像の準備に加え、画像を検証し、ログイン状態を確認してから Playwright で投稿します。
主な機能
- 01最新の話題情報を検索
- 02タイトル・本文・タグの生成
- 03投稿画像の取得と検証
- 04preview.html と config.json の作成
- 05Playwright による投稿
活用シーン
- 01話題をもとに小紅書の投稿を準備
- 02画像付き投稿プレビューの作成
- 03アカウントへのログイン後に投稿を公開
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ yanquankun/ redbook-creator-publish --skill redbook-creator-publishインストール後、Claude Code で/redbook-creator-publishを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignore.env.exampleREADME.mdrequirements.txtLICENSEassets/preview-template.htmlreferences/style-guide.mdscripts/auto_upload_playwright.pygenerate_preview.py詳細
小红書の投稿作成・公開スキル
概要
タイトル、本文、タグ、画像を含む小紅書の投稿をすばやく作成して公開し、小紅書プラットフォームに自動でアップロードします。
主な特徴(v5.3):
- 🚀 シンプルなフロー:検索 → コンテンツ生成 → 画像取得 → 画像検証 → 自動アップロード
- 🖼️ 画像のスマート選定:ネットワークから公開画像をダウンロード、または AI で生成
- ✅ 画像検証:無効な画像を自動で検出して削除し、有効な画像を5~6枚確保
- 📁 出力の簡素化:生成するのは preview.html、config.json、images/ のみ
- 🤖 自動アップロード:直接実行し、手動確認を減らします
- 🔐 ログイン検出:ログイン状態をスマートに検出し、20秒間の待機を案内
- 🐍 依存関係ゼロ:主に Python の標準機能を使用
事前確認(最初に自動実行)
Python の確認
python3 --version # 要求 3.7+
Playwright のグローバル検出とインストール
重要:未インストールの場合にのみインストールし、重複インストールを避けます
# 检查 playwright 是否已安装(全局检测)
if python3 -c "import playwright" 2>/dev/null; then
echo "✅ Playwright 已安装,跳过安装"
else
echo "📦 正在安装 Playwright 到用户全局环境..."
# 安装到用户全局环境
pip3 install --user playwright
# 安装 Chromium 浏览器
python3 -m playwright install chromium
echo "✅ Playwright 安装完成"
fi
検出ロジック:
- まず、システムに playwright モジュールがインストール済みか確認します
- インストール済みの場合は、インストール手順をスキップします
- 未インストールの場合は、ユーザーのグローバル環境にインストールします(
--user) - インストールは一度だけでよく、以降は再インストール不要です
出力:✅ 環境チェック完了
ワークフロー
ステップ1:トピックを詳しく検索
WebSearch ツールを使って、関連するキーワードを2~3個検索し、最新のデータや事例を取得します。
ステップ2:投稿コンテンツを生成
- タイトル:絵文字を含めて20文字以内。フックとなる言葉を含め、簡潔で力強い表現にします
- 本文:300~500文字。冒頭のフック → 核心となる内容 → まとめと交流
- タグ:5個(主要なタグを厳選し、5個を超えないようにします)
ステップ3:画像を取得(5~6枚)
優先順位:
- ネットワークから公開画像をダウンロード(Unsplash/Pexels/Pixabay)
- AI で補完生成(任意。モデルが生成できない場合はスキップ)
要件:
- 枚数:5~6枚(カバー1枚+本文用画像4~5枚)
- 命名:cover.png, image_1.png, image_2.png, image_3.png, image_4.png...
- 形式:PNG/JPG
🎯 画像検索キーワードを正確に生成する方針(重要!)
基本原則:検索キーワードは具体性を高め、一般的すぎる語句を避けます
キーワードの生成ルール:
-
対象を具体化する:一般的な語句ではなく、具体的な名称を使います
- ❌ 誤り:「ゲーム」「game」「gaming」
- ✅ 正しい:「Minecraft」「マインクラフトのブロック」「Minecraft Steve」
-
シーンや画面の描写を優先する:具体的な画面の内容を説明します
- ❌ 誤り:「料理」「food」
- ✅ 正しい:「ラーメンのクローズアップ」「ramen noodles closeup」
-
英語のキーワードを中心にする:画像素材サイトでは英語で検索したほうが効果的です
- 中国語のテーマは、対応する英語の固有名詞に翻訳します
- ゲーム:ゲームの正式な英語名を使います
- ブランド:ブランドの英語名を使います
テーマ別のキーワード作成:
| テーマの種類 | 一般的な語句(❌避ける) | 正確な語句(✅使う) |
|---|---|---|
| ゲーム『Minecraft』 | game, gaming, ゲーム | Minecraft, Minecraft blocks, Minecraft world, pixel art cube |
| ゲーム『原神』 | game, RPG | Genshin Impact, Genshin character, anime game |
| ゲーム『Honor of Kings』 | MOBA, モバイルゲーム | Honor of Kings, MOBA hero |
| 料理・火鍋 | food, 料理 | hotpot, Chinese hotpot, spicy pot |
| 旅行・日本 | travel, 旅行 | Tokyo tower, Japan temple, cherry blossom |
| テクノロジー・AI | technology | AI robot, artificial intelligence, neural network |
| ファッション・韓国風 | fashion, ファッション | Korean outfit, OOTD, minimalist style |
画像検索の手順:
- 投稿のテーマを分析し、主要な固有名詞(ゲーム名、ブランド名、地名など)を抽出します
- 主要な固有名詞を英語の固有名詞に変換します
- 検索語を組み合わせます:
[英語の固有名詞] + [画面の描写語] - 各画像で、異なる視点のキーワードの組み合わせを使います
例 - テーマ「Minecraft」:
封面图: "Minecraft world landscape" 或 "Minecraft building"
图1: "Minecraft blocks closeup"
图2: "Minecraft Steve character"
图3: "Minecraft castle build"
图4: "Minecraft pixel art"
图5: "Minecraft survival gameplay"
例 - テーマ「火鍋のおすすめ」:
封面图: "Chinese hotpot restaurant"
图1: "hotpot ingredients fresh"
图2: "spicy hotpot soup"
图3: "hotpot meat slices"
图4: "hotpot dipping sauce"
mkdir -p ./redbook-article/[主题]-[日期]/images/
# 使用精准关键词下载图片到 images 目录
ステップ3.5:画像の有効性を検証(重要!)
ダウンロード後は、各画像を必ず検証してください。無効な画像を削除して追加でダウンロードし、最終的に有効な画像を5~6枚確保します。
import os
import struct
def is_valid_image(file_path):
"""验证图片文件是否有效"""
if not os.path.exists(file_path):
return False
# 检查文件大小(至少1KB)
if os.path.getsize(file_path) < 1024:
return False
try:
with open(file_path, 'rb') as f:
header = f.read(32)
# PNG: 89 50 4E 47 0D 0A 1A 0A
if header[:8] == b'\x89PNG\r\n\x1a\n':
return True
# JPEG: FF D8 FF
if header[:3] == b'\xff\xd8\xff':
return True
# GIF: GIF87a 或 GIF89a
if header[:6] in (b'GIF87a', b'GIF89a'):
return True
# WebP: RIFF....WEBP
if header[:4] == b'RIFF' and header[8:12] == b'WEBP':
return True
except Exception:
return False
return False
def validate_and_clean_images(images_dir):
"""验证并清理无效图片,返回有效图片列表"""
valid_images = []
invalid_images = []
for filename in sorted(os.listdir(images_dir)):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.webp')):
file_path = os.path.join(images_dir, filename)
if is_valid_image(file_path):
valid_images.append(filename)
print(f"✅ {filename} - 有效")
else:
invalid_images.append(filename)
print(f"❌ {filename} - 无效,已删除")
os.remove(file_path)
return valid_images, invalid_images
# 使用示例
images_dir = '/path/to/images'
valid, invalid = validate_and_clean_images(images_dir)
print(f"\n有效图片: {len(valid)} 张")
print(f"已删除无效图片: {len(invalid)} 张")
# 如果有效图片不足5张,需要补充下载
if len(valid) < 5:
print(f"⚠️ 图片不足,需要补充 {5 - len(valid)} 张")
検証の流れ:
- すべての画像をダウンロードした後、検証スクリプトを実行します
- 無効な画像を削除します(ファイルヘッダーが正しくない、またはサイズが小さすぎる画像)
- 有効な画像の枚数を数えます
- 有効な画像が5枚未満の場合は、必ず画像を追加でダウンロードします
- 有効な画像が5~6枚になるまで検証を繰り返します
ステップ4:ローカルファイルを生成
ディレクトリ構成:
redbook-article/
└── [主题]-[日期]/
├── preview.html
├── config.json
└── images/
├── cover.png
├── image_1.png
├── image_2.png
├── image_3.png
└── image_4.png
config.json の生成(重要:json.dump を使って自動的にエスケープします):
import json
config = {
"title": title,
"content": content, # json.dump 会自动处理转义
"tags": tags,
"cover": "images/cover.png",
"images": ["images/image_1.png", "images/image_2.png", "images/image_3.png", "images/image_4.png"]
}
with open('config.json', 'w', encoding='utf-8') as f:
json.dump(config, f, ensure_ascii=False, indent=2)
preview.html の生成(Newsprint スタイルのテンプレートを使用):
- テンプレートを読み込みます:
/Users/a58/.claude/skills/redbook-creator-publish/assets/preview-template.html - 変数を置換します:
{{TITLE}}→ タイトル{{CONTENT}}→ 本文{{DATE}}→ 日付{{TAGS}}→ タグのHTML(各タグを<span class="tag">で囲みます)
- カバー画像と本文用画像の
<img>タグを追加します preview.htmlとして保存します
ステップ5:小紅書に自動アップロード
重要:前の手順でエラーが発生していても、自動アップロードを必ず実行してください。
python3 /Users/a58/.claude/skills/redbook-creator-publish/scripts/auto_upload_playwright.py \
--config ./redbook-article/[主题]-[日期]/config.json
フロー(v5.1 の最適化):
- 小紅書クリエイタープラットフォームを開きます
- スマートログイン検出:
- アップロードコントロールの DOM が存在するか自動で検出します
- 未ログインの場合、20秒以内にログインするようユーザーに案内します
- 毎秒検出し、ログインに成功したら自動で続行します
- 20秒後もコントロールが検出されない場合は終了し、手動アップロードを案内します
- 画像をアップロードします(cover.png を1枚目にします)
- タイトルを入力します
- 本文を入力します
- タグを1つずつ入力します(1秒間隔で Enter を押します)
- 公開をクリックします
- ブラウザーは開いたままにします(自動では閉じません)
注意事項
コンテンツ作成
- タイトル:絵文字を含めて20文字以内
- 本文の文字数:300~500文字
- 画像の枚数:5~6枚(カバー1枚+本文用画像4~5枚)
- タグ:5個(5個を超えないようにします)
- 画像のソース:無料で公開されている画像素材サイト、または AI 生成
- 画像の検証:ダウンロード後は有効性を必ず検証し、無効な画像を削除して追加分をダウンロードします
自動アップロード(v5.1)
- アップロードスクリプトを必ず実行します
- 初回使用時:20秒の案内時間内に小紅書のアカウントにログインします
- 2回目以降:ログイン状態は自動で維持されるため、再ログインは不要です
- タグは1秒間隔で入力し、Enter を押します
- ブラウザーは自動で閉じません。引き続き確認または編集できます
- 20秒以内にログインできない場合は、手動でアップロードするか、再度実行してください
技術設定
- Python 3.7+
- Playwright(インストールは一度だけで十分、グローバルで検出)
- config.json 内の中国語の記号は正しくエスケープする必要があります
手動アップロードの代替手順
自動アップロードに失敗した場合:
- 開きます:https://creator.xiaohongshu.com/publish/publish
- 画像を順番にアップロードします(cover.png を1枚目にします)
- preview.html からタイトルと本文をコピーします
- タグを追加します
- 公開をクリックします
参考ドキュメント
- references/style-guide.md - 小紅書コンテンツのスタイルガイド
- scripts/auto_upload_playwright.py - Playwright 自動アップロードスクリプト
- assets/preview-template.html - Newsprint スタイルのプレビューテンプレート
更新履歴
v5.4 (2026-01-27)
- ✅ 画像検索キーワードを正確に生成する方針を追加
- ✅ テーマ別のキーワード作成ルール表を追加
- ✅ 英語の固有名詞を使った検索を強調
- ✅ ゲーム、料理、旅行などのテーマ別検索キーワードの例を追加
- ✅ style-guide.md を更新し、テーマとの正確な一致の原則を追加
v5.3 (2026-01-27)
- ✅ 新增图片有效性验证(检测文件头和大小)
- ✅ 自动删除无效图片并提示补充下载
- ✅ 配图数量调整为5-6张(1封面+4-5副图)
- ✅ 添加 allowedCommands 配置,减少手动确认提示
v5.2 (2026-01-27)
- ✅ 标题限制改为20个字符(含emoji)
- ✅ 标签数量从8-10个改为5个
- ✅ 配置自动批准权限,减少确认提示
v5.1 (2026-01-27)
- ✅ 新增智能登录检测(检测上传控件DOM)
- ✅ 20秒登录等待提示,每秒检测
- ✅ 浏览器不自动关闭,保持打开状态
- ✅ Playwright 全局安装检测,避免重复安装
v5.0 (2026-01-27)
- 极简版发布
版本:v5.4(精准配图版) 更新日期:2026-01-27