creator
コンテンツ制作ワークフローを実行し、各プラットフォームに最適化されたコンテンツパッケージを生成します。「記事を書いて」「コンテンツを作成して」「write an article」「create content」などのキーワードで起動し、SNSや媒体向けの投稿・原稿作成に活用できます。
description の原文を見る
| Creator workflow — generate platform-ready content packages. Triggers on: "创作", "写公众号", "小红书", "口播", "creator", "content workflow", "帮我写一篇", "生成内容", "write an article", "create content".
SKILL.md 本文
いつ使うか
- ユーザーが特定のプラットフォーム向けの完全なコンテンツパッケージを求めている(WeChat記事、Xiaohongshu投稿、口播稿)
- ユーザーが「帮我写篇公众号」「小红书图文」「口播稿」「create content」と言っている
- ユーザーが 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に従い config を読み込む - ポーリング、エラー、インタラクションパターンは
shared/cli-patterns.mdに従う ~/Downloads/または.listenhub/にファイルを保存しない — コンテンツパッケージは現在の作業ディレクトリに保存- JSON パース:
jqのみを使用(python3、awk は使用不可)
ステップ -1: API キーチェック
遅延実行。API キーは確認ゲート(ステップ 4)時のみチェックされ、パイプラインがリモート API 呼び出しを必要とする場合だけです。上記の厳密な制約を参照。
ステップ 0: コンフィグ設定
shared/config-pattern.md ステップ 0(ゼロ質問ブート)に従う。
ファイルが存在しない場合 — デフォルト値を使用して無音で作成し進行:
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/ のマークダウンファイルに格納されます:
.listenhub/creator/styles/wechat.md.listenhub/creator/styles/xiaohongshu.md.listenhub/creator/styles/narration.md
これらはプレーンマークダウン — 1 行に 1 つのディレクティブ。ファイルが存在しない場合、カスタムスタイルは適用されません。ユーザーはこれらのファイルを直接編集できます。
注:outputMode はデフォルトで "download"(通常の "inline" ではなく)です。creator は常に複数ファイルの出力フォルダを生成し、ディスクに保存する必要があるため。
ファイルが存在する場合 — config を無音で読み込み進行:
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(Web/記事) | http(s):// プレフィックス、オーディオ/ビデオ URL ではない | content-parser を呼び出す(API キー必須) |
| URL(オーディオ/ビデオ) | 拡張子が .mp3/.mp4/.wav/.m4a/.webm または domain が 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(Web/記事)入力の場合: パイプライン実行中(確認後)に content-parser が呼び出されます。
ステップ 2: テンプレート一致
ユーザーがプロンプトでプラットフォームを指定した場合、直接一致させます:
- 「公众号」「wechat」「微信」 → wechat
- 「小红书」「xiaohongshu」「xhs」 → xiaohongshu
- 「口播」「narration」「脚本」 → narration
プラットフォームが指定されていない場合、AskUserQuestion で質問:
質問:「Which content template?」 / 「用哪个创作模板?」 オプション(ユーザーの入力言語に適応):
- 「WeChat article (公众号长文)」 — AI イラスト付きロングフォーム記事
- 「Xiaohongshu (小红书)」 — 画像カード + ロングテキスト投稿
- 「Narration script (口播稿)」 — スポークンスクリプト(オプションでオーディオ付き)
ステップ 2.5: トピックアシスタンス
このステップは、ユーザーの入力がトピックまたはキーワード(短いテキスト 50 文字未満、URL/パスなし)の場合のみ実行。ユーザーが URL、ファイル、または実質的なテキストを提供した場合はスキップ。
-
選択されたプラットフォームの
methodology.mdを読む:- WeChat:
creator/templates/wechat/methodology.md - Xiaohongshu:
creator/templates/xiaohongshu/methodology.md - Narration:
creator/templates/narration/methodology.md
- WeChat:
-
3 つの円の Venn 図モデルを使用してトピックを評価:
- 用户的专业领域(作成者の専門分野)
- 读者的普遍兴趣(読者の一般的な関心)
- 当下的时间节点(現在の時間軸/関連性)
-
HKR 品質フィルターを実行:
- H (Happy):十分面白い、サスペンスはある?
- K (Knowledge):情報量がある?見終わって新しいことを学べる?
- R (Resonance):感情に触れる?「そうそう、私も同じ」と思わせられる?
-
トピックが HKR 基準の 3 つ中 2 つ以上を満たす場合:トピックで進行。
-
トピックが 3 つ中 2 つ未満の場合:AskUserQuestion を通じてユーザーに 2-3 の代替角度を積極的に提案。
-
トピックが曖昧な場合:より詳細な情報を求める — 主要なポイント、個人的な経験、何に興奮または不満があるか。
ステップ 3: スタイル抽出(スタイル参照が提供された場合)
このステップはユーザーがステップ 1 でスタイル参照を提供した場合のみ実行。スタイル参照が検出されていない場合、ステップ 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」。コンテンツ生成に進まない。
ステップ 3a: プロトタイプ分類
選択されたプラットフォームのプロトタイプファイルを読む:
- WeChat:
creator/templates/wechat/article-prototypes.md - Xiaohongshu:
creator/templates/xiaohongshu/content-prototypes.md - Narration:
creator/templates/narration/script-prototypes.md
ユーザーの材料/トピックに基づき、プロトタイプファイル内の一致ヒューリスティック表を使用して最適なプロトタイプを自動一致。
AskUserQuestion を通じてユーザーに推奨を提示:
質問:「这篇内容最适合哪种写法?」 / 「Which content prototype fits best?」 オプション:[プラットフォーム用のすべてのプロトタイプをリスト、推奨されたものが最初に「(Recommended)」サフィックス付き]
選択されたプロトタイプはナラティブ構造と L3-5 レビュー基準を決定します。
ステップ 3b: プリセット選択(該当する場合)
選択されたテンプレートが図解またはカードプリセットを使用し、かつモードが画像を必要とする場合、プリセットは確認ゲート前に選択される必要があります。これでサマリーに表示できます。
以下に該当する場合、このステップを完全にスキップ:
- Narration テンプレート(ビジュアルプリセットなし)
- Xiaohongshu が
preferences.xiaohongshu.mode="long-text"(カードまたは画像が生成されない)
それ以外の場合:
- テンプレートのプリセットセクションを読んで利用可能なプリセットとトピック一致表を取得。
- ユーザーがプロンプトでプリセットを指定済み(例:「用水彩风格」)の場合:そのプリセットを直接使用。
- 指定されていない場合:AskUserQuestion を通じてユーザーに質問。まず 1 行のヒントを出力:「配图风格可以随时换,先选一个开始吧」。利用可能なすべてのプリセットをそれらの中国語ラベル付きで一覧表示(frontmatter
labelフィールドから)。トピック一致表を使用して最も関連のあるオプションを最初に置く(「Recommended」とマーク)が、常にユーザーに選択させる。
ステップ 4: 確認ゲート
パイプラインがリモート API を必要とする場合、API キーをチェック:
- WeChat テンプレートは常に image-gen が必要 → API キー必須
- Xiaohongshu カードモードは image-gen が必要 → API キー必須
- Xiaohongshu ロングテキストのみ → API キー不要
- TTS なしの Narration → 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条来自参考文章 / 无}
确认开始?
進行する前に明示的な「yes」/確認を待つ。
ステップ 5: パイプラインを実行
選択されたテンプレートファイルを読んで実行:
# テンプレートファイルパス
TEMPLATE="creator/templates/$PLATFORM/template.md"
STYLE="creator/templates/$PLATFORM/style.md"
URL 入力の場合 — 最初にコンテンツを抽出:
# コンテンツ抽出を送信
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')
その後、バックグラウンドでポーリング。run_in_background: true と timeout: 600000 を使用して、これを別の Bash 呼び出しとして実行(shared/cli-patterns.md 参照)。ポーリングループ自体は最大 300 秒(60 回のポーリング × 5 秒)実行されます;timeout: 600000 はツールレベルで高く設定され、ポーリング予算を超えて Bash プロセスにヘッドルームを与えます:
# 実行: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 は -D、Linux は -d を使用(プラットフォーム検出)
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 の場合(ユーザーがオーディオを求める場合、narration テンプレートで呼び出し):
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}"
# フォルダ名を重複排除
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 config では実装されていません。カードスタイルのカスタマイズが必要になったら後で追加できます。
手動スタイルチューニング
スタイルディレクティブを追加:
ユーザーが「记住:{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 Reference(インライン) - TTS(テキスト音声変換):CLI:
listenhub tts create(shared/cli-patterns.md参照) - スピーカー選択:
shared/speaker-selection.md - Config パターン:
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はプラットフォーム固有のライティングトーンを定義
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- marswaveai
- リポジトリ
- marswaveai/skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/marswaveai/skills / ライセンス: MIT
関連スキル
newsblur-cli
ターミナルからNewsBlurを管理できます。フィードの閲覧、ストーリーの検索、記事の保存・共有、インテリジェンス分類器の学習、新しいフィードの発見、ワークフローの自動化がNewsBlur CLIで実現します。ユーザーがNewsBlurアカウントを操作したい場合、フィードの確認、購読管理、またはニュース読み込みに関するスクリプト構築時に活用してください。
caveman-compress
自然言語のメモリファイル(CLAUDE.md、todos、preferences)を「原始人形式」に圧縮し、入力トークンを削減します。技術的な内容、コード、URL、構造はすべて保持したまま圧縮します。圧縮版が元のファイルを上書きし、人間が読める形のバックアップはFILE.original.mdとして保存されます。トリガー:/caveman-compress FILEPATH または「compress memory file」
find-skills
日本語の意図から Agent Skills を発見する。「楽天SEOのスキル探して」「PDFを処理したい」「データ分析を自動化したい」などの日本語リクエストに対応。Claude Code (CLI)、Codex、Gemini CLI、claude.ai (Web) いずれでも動作。日本最大の Agent Skills データベース「Agent Skills by ALSEL」(11,000件超、全件日本語化、ダウンロード可能スキル8,600件超) から、ユーザーの意図に合うスキルを推薦・インストール案内する。
planning-and-task-breakdown
仕事を順序立てたタスクに分割します。仕様書や要件が明確にあり、実装可能なタスクに分解する必要がある場合に利用してください。タスクが大きすぎて着手しづらい場合、スコープを見積もる必要がある場合、または並列で作業を進められる場合に活用できます。
docx
このスキルは、ユーザーがWord文書(.docxファイル)を作成、読み込み、編集、操作したいときに使用します。以下の場合に実行してください:「Word文書」「.docx」などの記述、または目次・見出し・ページ番号・レターヘッドなどのフォーマットを含む専門的な文書の作成リクエスト。また、.docxファイルのコンテンツ抽出・再編成、文書への画像挿入・置換、Word形式での検索置換、変更履歴やコメント機能の使用、コンテンツを整形したWord文書への変換の場合も対象です。ユーザーが「レポート」「メモ」「手紙」「テンプレート」などの成果物をWord形式または.docxファイルで求める場合はこのスキルを使用してください。PDF、スプレッドシート、Google Docs、文書作成と無関係なコーディングタスクには使用しないでください。
idea-refine
アイデアを反復的に改善します。構造化された発散的思考と収束的思考を通じて、アイデアを洗練させることができます。「idea-refine」または「ideate」を使用してトリガーします。