creator について
creatorは、トピック、URL、テキスト、メディアからプラットフォーム別のコンテンツ一式を作るスキルです。WeChat、Xiaohongshu、ナレーション向けに執筆とメディア生成を組み合わせ、実行前の確認やスタイル設定にも対応します。
主な機能
- 01WeChat、Xiaohongshu、ナレーションのテンプレート
- 02トピック、URL、テキスト、メディアからの生成
- 03執筆とメディア生成のワークフロー調整
- 04参考スタイルの抽出と設定保存
- 05実行前の確認ステップ
活用シーン
- 01トピックから挿絵付きWeChat記事を作成
- 02素材をXiaohongshu向けコンテンツに変換
- 03テキストやメディアからナレーション台本を作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ marswaveai/ skills --skill creatorインストール後、Claude Code で/creatorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
templates/narration/methodology.mdscript-prototypes.mdstyle.mdtemplate.mdtemplates/narration/references/style-examples.mdtemplates/wechat/article-prototypes.mdmethodology.mdstyle.mdtemplate.mdtemplates/wechat/presets/flat.mdphoto-realistic.mdwatercolor.mdtemplates/wechat/references/style-examples.mdtemplates/xiaohongshu/content-prototypes.mdmethodology.mdstyle.mdtemplate.mdtemplates/xiaohongshu/presets/bold.mdchalkboard.mdcute.mdfresh.mdminimal.mdnotion.mdpop.mdretro.mdstudy-notes.mdwarm.mdtemplates/xiaohongshu/references/style-examples.mdwriting-engine/ai-human-boundary.mdforbidden-words.md詳細
使用する場面
- ユーザーが特定のプラットフォーム向けのコンテンツ一式(WeChat の記事、小紅書の投稿、ナレーション原稿など)を求めている場合
- ユーザーが「公众号の記事を書いて」「小紅書向けの画像と文章」「ナレーション原稿」「コンテンツを作成して」と依頼した場合
- ユーザーが URL/テキスト/トピックを提示し、画像付きでプラットフォーム向けのコンテンツに仕上げることを求めている場合
使用しない場面
- コンテンツ制作のワークフローなしで単一の画像だけを求めている場合 → image-gen を直接使用してください
- 単一の TTS 音声を求めている場合 → tts を直接使用してください
- 音声の文字起こしを求めている場合 → asr を直接使用してください
- ポッドキャストのエピソードを求めている場合 → podcast を直接使用してください
- URL からコンテンツを抽出し、それ以上の処理を求めていない場合 → content-parser を直接使用してください
Creator は、文章作成とメディア生成を組み合わせてプラットフォーム向けのコンテンツ一式を作成する、複数ステップのコンテンツ制作に使用します。
目的
既存のスキルを連携させ、プラットフォームに特化したコンテンツ一式を生成します。入力:トピック、URL、テキスト、音声/動画ファイル。出力:記事/原稿、画像、メタデータを含む、すぐに公開できるフォルダー。
厳守事項
- image-gen と TTS には
listenhubCLI コマンドを使用してください。content-parser には curl を使用してください(content-parser/SKILL.md§ API Reference を参照)。 - 何らかの操作を行う前に、必ず
shared/config-pattern.mdに従って設定を読み込んでください。 - ポーリング、エラー、操作パターンについては
shared/cli-patterns.mdに従ってください。 ~/Downloads/や.listenhub/にはファイルを保存しないでください。コンテンツ一式は現在の作業ディレクトリに保存してください。- JSON の解析には
jqのみを使用してください(python3、awk は使用しないでください)。
ステップ -1:API キーチェック
後回しにします。API キーは、リモート API 呼び出しが必要なパイプラインの場合に限り、確認ゲート(ステップ 4)でチェックします。上記の「厳守事項」を参照してください。
ステップ 0:設定
shared/config-pattern.md のステップ 0(Zero-Question Boot)に従ってください。
ファイルが存在しない場合 — デフォルト設定でひそかに作成し、そのまま続行します:
mkdir -p ".listenhub/creator" ".listenhub/creator/styles"
cat > ".listenhub/creator/config.json" << 'EOF'
{"outputMode":"download","language":null,"preferences":{"wechat":{"history":[]},"xiaohongshu":{"mode":"both","history":[]},"narration":{"defaultSpeaker":null,"history":[]}}}
EOF
CONFIG_PATH=".listenhub/creator/config.json"
CONFIG=$(cat "$CONFIG_PATH")
ユーザーのスタイル設定は、.listenhub/creator/styles/ 内の Markdown ファイルに保存されます:
.listenhub/creator/styles/wechat.md.listenhub/creator/styles/xiaohongshu.md.listenhub/creator/styles/narration.md
これらのファイルは通常の Markdown ファイルで、1 行につき 1 つの指示を記述します。ファイルが存在しない場合、カスタムスタイルは適用されません。ユーザーはこれらのファイルを直接編集できます。
注:creator は常に複数ファイルからなるフォルダーを生成し、ディスクに保存する必要があるため、outputMode のデフォルトは "inline" ではなく "download" です。
ファイルが存在する場合 — 設定をひそかに読み込み、そのまま続行します:
CONFIG_PATH=".listenhub/creator/config.json"
[ ! -f "$CONFIG_PATH" ] && CONFIG_PATH="$HOME/.listenhub/creator/config.json"
CONFIG=$(cat "$CONFIG_PATH")
セットアップ手順(ユーザーが再設定を開始した場合のみ)
ユーザーが明示的に再設定を求めた場合のみ実行します。現在の設定を表示します:
当前配置 (creator):
输出方式:{outputMode}
小红书模式:{both / cards / long-text}
質問:
- outputMode:
shared/output-mode.md§ Setup Flow Question に従ってください。 - xiaohongshu.mode:「小紅書のデフォルトモードは?」
- 「画像と文章+長文(both)」
- 「画像と文章のカードのみ(cards)」
- 「長文のみ(long-text)」
操作フロー
ステップ 1:入力を理解する
ユーザーはリクエストと一緒に入力を提供します。入力を分類します。
| 入力タイプ | 判定方法 | 自動アクション |
|---|---|---|
| URL(ウェブ/記事) | http(s):// で始まり、音声/動画の URL ではない | content-parser を呼び出します(API キーが必要です) |
| URL(音声/動画) | 拡張子が .mp3/.mp4/.wav/.m4a/.webm、またはドメインが youtube.com/bilibili.com/douyin.com | ダウンロード後、coli asr を呼び出して文字起こしします |
| ローカルの音声ファイル | ファイルパスが存在し、拡張子が音声/動画形式 | coli asr を直接呼び出します |
| ローカルのテキストファイル | ファイルパスが存在し、拡張子が .txt/.md/.json | ファイルの内容を読み込みます |
| 生テキスト | 複数行または 50 文字超で、URL/パスではない | 素材としてそのまま使用します |
| トピック/キーワード | 短いテキスト(50 文字未満)で、URL/パスのパターンがない | AI がゼロから執筆します |
スタイル参照の判定: ユーザーのプロンプトに「参考」「スタイル」「〜に倣って書く」「style」「reference」などのキーワードが含まれる場合、関連する入力(ファイルパス/URL/貼り付けられたテキスト)は、コンテンツ素材ではなくスタイル参照として分類してください。1 つのリクエストに素材とスタイル参照の両方が含まれる場合は、それぞれ個別に分類します。スタイル参照のみが提供され、素材もトピックもない場合は、スタイル学習のみのリクエストです(ステップ 2.5 を参照)。
URL(音声/動画)入力の場合:
curl -L -oを使って/tmp/creator-{slug}.{ext}にダウンロードしますcoliが利用可能か確認します:which coli 2>/dev/null && echo yes || echo nocoliがない場合:インストールするようユーザーに案内し(npm install -g @marswave/coli)、代わりにテキストを貼り付けるよう依頼します- 文字起こしします:
coli asr -j --model sensevoice "/tmp/creator-{slug}.{ext}" - JSON の結果からテキストを抽出します
- クリーンアップします:
rm "/tmp/creator-{slug}.{ext}"
URL(ウェブ/記事)入力の場合: パイプラインの実行中(確認後)に content-parser が呼び出されます。
ステップ 2:テンプレートを選ぶ
ユーザーがプロンプトでプラットフォームを指定した場合は、直接対応するテンプレートを選びます。
- 「公众号」「wechat」「微信」 → wechat
- 「小红书」「xiaohongshu」「xhs」 → xiaohongshu
- 「口播」「narration」「脚本」 → narration
プラットフォームが指定されていない場合は、AskUserQuestion で尋ねます。
質問:「どのコンテンツテンプレートを使いますか?」/「用哪个创作模板?」 選択肢(ユーザーの入力言語に合わせてください):
- 「WeChat 記事(公众号长文)」 — AI イラスト付きの長文記事
- 「Xiaohongshu(小红书)」 — 画像カード+長文投稿
- 「ナレーション台本(口播稿)」 — 音声を任意で付けられる読み上げ台本
ステップ 2.5:トピックのサポート
このステップは、ユーザーの入力がトピックまたはキーワード(短いテキスト、50 文字未満)である場合にのみ実行します。ユーザーが URL、ファイル、または十分な量のテキストを提供している場合はスキップします。
-
選択したプラットフォームの
methodology.mdを読み込みます。- WeChat:
creator/templates/wechat/methodology.md - Xiaohongshu:
creator/templates/xiaohongshu/methodology.md - Narration:
creator/templates/narration/methodology.md
- WeChat:
-
3 つの円が重なるベン図モデルを使ってトピックを評価します。
- ユーザーの専門分野(クリエイターの専門性)
- 読者の一般的な関心(読者の関心)
- 現在の時期・タイミング(時事性・関連性)
-
HKR 品質フィルターを適用します。
- H(Happy):十分に面白く、続きが気になりますか?
- K(Knowledge):情報量があり、読んだ後に新しいことを学べますか?
- R(Resonance):感情に響き、「そうそう、私もそう思う」と共感できますか?
-
トピックが HKR の 3 つの基準のうち 2 つ以上を満たす場合:そのトピックで進めます。
-
トピックが 2 つ未満の場合:AskUserQuestion を使って、別の切り口を 2~3 個、積極的にユーザーに提案します。
-
トピックが曖昧な場合:要点、個人的な経験、何にワクワクするか、何に不満を感じるかなど、具体的な情報を尋ねます。
Step 3: スタイルの抽出(スタイル参照が提供された場合)
このステップは、Step 1 でユーザーがスタイル参照を提供した場合にのみ実行します。スタイル参照が検出されなかった場合は、Step 3b に進んでください。
参照内容を読み取ります:
- ローカルファイル → Read ツール
- URL → content-parser API(API キーが必要)
- 貼り付けられたテキスト → そのまま使用
スタイルの指示を分析して抽出します:
AI が参照内容を読み取り、具体的なスタイルの指示を 3~5 個抽出します。確認できる特徴に注目してください:
- 文の長さと段落の構成
- トーンと文体(フォーマル/カジュアル、一人称/三人称)
- 修辞表現の使用(質問、リスト、太字、引用)
- 語彙のレベルと専門用語
- 書式の特徴(見出しのスタイル、絵文字の使用、空白)
確認のため、ユーザーに提示します:
从参考文章中提炼了以下风格特征:
1. {directive 1}
2. {directive 2}
3. {directive 3}
...
你可以修改或删除其中的条目。确认后本次生成会应用这些规则。
ユーザーの確認を待ちます。確認された指示は sessionStyle となり、この生成にのみ適用されます。
ユーザーがスタイルの指示を確認した後、保存するかどうかを積極的に尋ねます:
要将这些风格规则保存吗?(保存后每次生成{platform}内容都会应用)
はいの場合 → .listenhub/creator/styles/{platform}.md に書き込みます。いいえの場合 → 今回の生成にのみ適用します。
スタイル学習のみの場合: ユーザーが素材やトピックを指定せず、スタイル参照のみを提供した場合(例:「この記事のスタイルを学習して」)、上記の抽出を実行し、確認を求めずに .listenhub/creator/styles/{platform}.md に直接保存します。保存する意思がすでに明確に示されているためです。短いメッセージで確認します:「styles/{platform}.md に保存しました」。コンテンツの生成には進まないでください。
Step 3a: プロトタイプの分類
選択したプラットフォームのプロトタイプファイルを読み取ります:
- WeChat:
creator/templates/wechat/article-prototypes.md - Xiaohongshu:
creator/templates/xiaohongshu/content-prototypes.md - ナレーション:
creator/templates/narration/script-prototypes.md
ユーザーの素材/トピックに基づき、プロトタイプファイル内のマッチング基準表を使って最適なプロトタイプを自動的に選定します。
AskUserQuestion を使って、推奨案をユーザーに提示します:
質問:「このコンテンツに最も適した書き方はどれですか?」/「Which content prototype fits best?」 選択肢:[そのプラットフォームのすべてのプロトタイプを列挙し、推奨案を最初にして「(Recommended)」を付ける]
選択されたプロトタイプによって、執筆時の構成と L3~5 のレビュー基準が決まります。
Step 3b: プリセットの選択(該当する場合)
選択したテンプレートがイラストまたはカードのプリセットを使用し、かつモードで画像が必要な場合は、プリセットを確認ゲートの前に必ず選択します。これにより、概要に表示できます。
以下の場合は、このステップ全体をスキップしてください:
- ナレーションテンプレート(ビジュアルプリセットなし)
- Xiaohongshu で
preferences.xiaohongshu.modeが"long-text"(カードや画像を生成しない)
それ以外の場合:
- テンプレートのプリセットセクションを読み、利用可能なプリセットとトピックとのマッチング表を確認します。
- ユーザーがプロンプトですでにプリセットを指定している場合(例:「水彩スタイルで」):そのプリセットをそのまま使用します。
- 指定されていない場合:AskUserQuestion を使ってユーザーに尋ねます。最初に、1 行のヒント「配图风格可以随时换,先选一个开始吧」を表示します。フロントマターの
labelフィールドにある中国語のラベルを使って、利用可能なプリセットをすべて列挙します。トピックとのマッチング表に従って最も関連性の高い選択肢を先頭に置き(「Recommended」と表示)、必ずユーザーが選択できるようにします。
Step 4: 確認ゲート
パイプラインでリモート API が必要な場合は、API キーを確認します:
- WeChat テンプレートは常に画像生成が必要 → API キーが必要
- Xiaohongshu のカードモードは画像生成が必要 → API キーが必要
- Xiaohongshu のロングテキストのみ → API キーは不要
- TTS を使わないナレーション → API キーは不要
- Web/記事の URL 入力 → content-parser が必要 → API キーが必要(音声/動画の URL はローカルの
coli asrを使用するため、API キーは不要)
API キーが必要で、まだ設定されていない場合:CLI ベースの呼び出しでは listenhub auth login を実行します。content-parser の呼び出しでは LISTENHUB_API_KEY を設定します(「content-parser/SKILL.md」§ Authentication を参照)。
確認用の概要を表示します:
准备生成内容:
模板:{WeChat article / Xiaohongshu / Narration}
输入:{topic description / URL / text excerpt...}
输出目录:{slug}-{platform}/
需要 API 调用:{content-parser, image-gen, ...}
风格偏好:{styles/{platform}.md 已配置 / 使用默认风格}
配图/卡片预设:{preset label / 不适用}
文章/内容原型:{selected prototype name}
本次风格参考:{M条来自参考文章 / 无}
确认开始?
続行する前に、明示的な「はい」または確認を待ちます。
ステップ 5:パイプラインを実行する
選択したテンプレートファイルを読み込み、実行します。
# The template file path
TEMPLATE="creator/templates/$PLATFORM/template.md"
STYLE="creator/templates/$PLATFORM/style.md"
URL 入力の場合 — まずコンテンツを抽出します:
# Submit content extraction
RESPONSE=$(curl -sS -X POST "https://api.marswave.ai/openapi/v1/content/extract" \
-H "Authorization: Bearer $LISTENHUB_API_KEY" \
-H "Content-Type: application/json" \
-H "X-Source: skills" \
-d "{\"source\":{\"type\":\"url\",\"uri\":\"$INPUT_URL\"}}")
TASK_ID=$(echo "$RESPONSE" | jq -r '.data.taskId')
その後、バックグラウンドでポーリングします。shared/cli-patterns.md に従い、run_in_background: true、timeout: 600000 を指定して、これを別の Bash 呼び出しとして実行します。ポーリングループ自体は最大 300 秒(5 秒間隔で 60 回)実行されます。Bash プロセスにポーリングの制限時間を超える余裕を持たせるため、ツールレベルの timeout: 600000 はそれより長く設定します。
# Run with: run_in_background: true, timeout: 600000
TASK_ID="<id>"
for i in $(seq 1 60); do
RESULT=$(curl -sS "https://api.marswave.ai/openapi/v1/content/extract/$TASK_ID" \
-H "Authorization: Bearer $LISTENHUB_API_KEY" \
-H "X-Source: skills" 2>/dev/null)
STATUS=$(echo "$RESULT" | tr -d '\000-\037\177' | jq -r '.data.status // "processing"')
case "$STATUS" in
completed) echo "$RESULT"; exit 0 ;;
failed) echo "FAILED: $RESULT" >&2; exit 1 ;;
*) sleep 5 ;;
esac
done
echo "TIMEOUT" >&2; exit 2
コンテンツを抽出します:MATERIAL=$(echo "$RESULT" | jq -r '.data.data.content')
抽出に失敗した場合は、ユーザーに「URL 解析失败,你可以直接粘贴文字内容给我」と伝えて終了します。
その後、プラットフォームのテンプレートに従います — template.md を読み込み、各ステップを実行します。テンプレートには、具体的な執筆指示と API 呼び出しが記載されています。テンプレートの内容については、creator/templates/{platform}/template.md を参照してください。
執筆エンジンとの連携: 各プラットフォームの template.md には、執筆エンジンへの参照とセルフレビューのループが追加されています。テンプレートは、writing-engine/ ファイルの読み込み、選択したプロトタイプの構成の適用、執筆後の L1-L4 品質レビューの実行を処理します。詳細については、各プラットフォームの template.md を参照してください。
スタイルの適用: コンテンツを執筆する際は、次の優先順位でスタイル指示を適用します(上位の指示が下位の指示を上書きします)。
sessionStyle— 現在のスタイル参照(ステップ 3)からの指示(ある場合).listenhub/creator/styles/{platform}.md— 保存されたユーザーのスタイル指示(ファイルが存在する場合)templates/{platform}/style.md— プラットフォームの基本スタイル
画像生成の場合(wechat および xiaohongshu のテンプレートから呼び出されます):
RESPONSE=$(listenhub image create \
--prompt "<generated prompt>" \
--aspect-ratio "<ratio>" \
--json)
BASE64_DATA=$(echo "$RESPONSE" | jq -r '.candidates[0].content.parts[0].inlineData.data // .data')
# macOS uses -D, Linux uses -d (detect platform)
if [[ "$(uname)" == "Darwin" ]]; then
echo "$BASE64_DATA" | base64 -D > "{output-path}/{filename}.jpg"
else
echo "$BASE64_DATA" | base64 -d > "{output-path}/{filename}.jpg"
fi
429 の場合:指数バックオフ(15 秒 → 30 秒 → 60 秒待機)を行い、最大 3 回再試行します。再試行後も失敗した場合は、この画像をスキップし、出力の要約にその旨を記載します。
レート制限を守るため、画像は順番に生成します(並列処理はしません)。
TTS の場合(ユーザーが音声を希望したときに、ナレーションテンプレートから呼び出されます):
listenhub tts create --text "$(cat /tmp/lh-content.txt)" --speaker "$SPEAKER_ID" --json \
| jq -r '.data' | base64 -D > "{slug}-narration/audio.mp3"
ステップ 6:出力をまとめる
出力フォルダーを作成し、すべてのファイルを書き込みます。
SLUG="{topic-slug}"
OUTPUT_DIR="${SLUG}-{platform}"
# Dedup folder name
i=2; while [ -d "$OUTPUT_DIR" ]; do OUTPUT_DIR="${SLUG}-{platform}-${i}"; i=$((i+1)); done
mkdir -p "$OUTPUT_DIR"
テンプレートの仕様に従ってコンテンツファイルを書き込みます。その後、meta.json を書き込みます。
{
"title": "...",
"slug": "...",
"platform": "wechat|xiaohongshu|narration",
"date": "YYYY-MM-DD",
"tags": ["...", "..."],
"summary": "..."
}
ステップ 7:結果を提示する
✅ 内容已生成!保存在 {OUTPUT_DIR}/
📄 {main files list}
🖼️ images/ — N 张配图(如有)
📋 meta.json — 标题、标签、摘要
(ハード制約に従い、ユーザーの入力言語に合わせます。)
ステップ 8:設定を更新する
この生成を履歴に記録します。
NEW_CONFIG=$(echo "$CONFIG" | jq \
--arg platform "$PLATFORM" \
--arg date "$(date +%Y-%m-%d)" \
--arg topic "$TOPIC" \
'.preferences[$platform].history = (.preferences[$platform].history + [{"date": $date, "topic": $topic}])[-5:]')
echo "$NEW_CONFIG" > "$CONFIG_PATH"
プラットフォームごとに、履歴の最新 5 件のみを保持します。
注:仕様に含まれる cardStyle は後回しになっています。V1 の設定では未実装です。カードスタイルのカスタマイズが必要になった場合、後から追加できます。
スタイルの手動調整
スタイル指示の追加:
ユーザーが「记住:{style directive}」または「remember: {style directive}」と言った場合:
- 適用するプラットフォームを特定します(文脈から判断するか、ユーザーに尋ねます)。
.listenhub/creator/styles/{platform}.mdに指示を新しい行として追加します(ファイルが存在しない場合は作成します)。
これはステップ 3(スタイルの抽出)の後にも適用されます。抽出された指示を確認した後、ユーザーが「记住这个风格」と言った場合は、確認済みの指示をすべて .listenhub/creator/styles/{platform}.md に書き込みます。
スタイルのリセット:
ユーザーが「重置风格偏好」または「reset style」と言った場合:
- 対象のプラットフォームを尋ねます(または、すべてのプラットフォームを対象にします)。
.listenhub/creator/styles/{platform}.mdを削除します。
API リファレンス
- 認証:
shared/cli-authentication.md - 画像生成:CLI:
listenhub image create(shared/cli-patterns.mdを参照) - コンテンツ抽出:
content-parser/SKILL.md§ API リファレンス(インライン) - TTS(テキスト読み上げ):CLI:
listenhub tts create(shared/cli-patterns.mdを参照) - 話者の選択:
shared/speaker-selection.md - 設定パターン:
shared/config-pattern.md - 共通パターン(ポーリング、エラー):
shared/cli-patterns.md - 出力モード:
shared/output-mode.md
コンポーザビリティ
- 呼び出すもの: content-parser(URL 抽出)、image-gen(イラスト/カード)、tts(ナレーション音声)、asr(
coliによる音声/動画の文字起こし) - 呼び出される側: 単独 — ユーザーが直接起動します
- テンプレート:
creator/templates/{wechat,xiaohongshu,narration}/template.mdでプラットフォームごとのパイプラインを定義します - スタイルガイド:
creator/templates/{wechat,xiaohongshu,narration}/style.mdでプラットフォームごとの文体を定義します