mcpField
C
creator

creator

github.com/marswaveai营销与增长81687 次安装5 周前更新
代码仓库

关于 creator

creator 是用于制作平台定制内容包的技能,可从主题、网址、文本或媒体素材生成内容。它协调写作与媒体生成流程,支持微信公众号、小红书和口播,并提供风格配置与执行前确认。

主要功能

  1. 01支持微信公众号、小红书和口播模板
  2. 02从主题、网址、文本或媒体生成内容
  3. 03协调写作与媒体生成流程
  4. 04提取参考风格并保存偏好
  5. 05执行流程前要求确认

适用场景

  1. 01将主题改写为带插图的公众号文章
  2. 02把素材转为小红书内容
  3. 03根据文本或媒体制作口播稿

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/marswaveai/skills --skill creator

安装后在 Claude Code 中输入/creator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

templates/narration/
methodology.md
script-prototypes.md
style.md
template.md
templates/narration/references/
style-examples.md
templates/wechat/
article-prototypes.md
methodology.md
style.md
template.md
templates/wechat/presets/
flat.md
photo-realistic.md
watercolor.md
templates/wechat/references/
style-examples.md
templates/xiaohongshu/
content-prototypes.md
methodology.md
style.md
template.md
templates/xiaohongshu/presets/
bold.md
chalkboard.md
cute.md
fresh.md
minimal.md
notion.md
pop.md
retro.md
study-notes.md
warm.md
templates/xiaohongshu/references/
style-examples.md
writing-engine/
ai-human-boundary.md
forbidden-words.md

详细介绍

适用场景

  • 用户想要为特定平台制作完整的内容包(微信公众号文章、小红书笔记、口播稿)
  • 用户说“帮我写篇公众号”“小红书图文”“口播稿”或“创作内容”
  • 用户提供 URL、文本或主题,并希望将其整理成配有图片、适合发布到平台的内容

不适用场景

  • 用户只想要一张图片,不需要内容工作流 → 直接使用 image-gen
  • 用户只想要一段 TTS 音频 → 直接使用 tts
  • 用户想要转录音频 → 直接使用 asr
  • 用户想要制作播客单集 → 直接使用 podcast
  • 用户想从 URL 提取内容,不需要进一步处理 → 直接使用 content-parser

Creator 用于多步骤内容制作,将写作与媒体生成结合起来,产出适合发布到平台的内容包。

目的

通过编排现有技能,生成针对不同平台的内容包。输入:主题、URL、文本或音频/视频文件。输出:包含文章/脚本、图片和元数据的文件夹,可直接发布。

硬性约束

  • 使用 listenhub CLI 命令进行 image-gen 和 TTS。使用 curl 调用 content-parser(参见 content-parser/SKILL.md § API Reference)。
  • 每次交互前,始终按照 shared/config-pattern.md 读取配置
  • 按照 shared/cli-patterns.md 处理轮询、错误和交互模式
  • 切勿将文件保存到 ~/Downloads/ 或 .listenhub/;将内容包保存到当前工作目录
  • 解析 JSON:只能使用 jq(不能使用 python3、awk)
语言适配:所有 UI 文本都遵循用户的输入语言。中文输入 → 中文输出。英文输入 → 英文输出。混合输入 → 遵循占主导地位的语言。 每个多选步骤都必须使用 AskUserQuestion。每次只问一个问题,并等待用户回答。选择模板且理解输入后,先展示确认摘要,并等待用户明确批准后再执行工作流。 确认环节的 API 密钥检查:如果工作流包含任何远程 API 调用(image-gen、content-parser、tts),则必须先检查身份验证。对于基于 CLI 的调用(image-gen、TTS),如果尚未通过身份验证,则运行 `listenhub auth login`。对于 content-parser 调用,配置 `LISTENHUB_API_KEY`(参见 `content-parser/SKILL.md` § Authentication)。纯文本工作流(例如从主题生成口播稿,但不使用 TTS)无需身份验证即可继续。

步骤 -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")

用户风格偏好以 Markdown 文件的形式存储在 .listenhub/creator/styles/ 中:

  • .listenhub/creator/styles/wechat.md
  • .listenhub/creator/styles/xiaohongshu.md
  • .listenhub/creator/styles/narration.md

这些文件是纯 Markdown,每行一条指示。如果文件不存在,则不应用自定义风格。用户可以直接编辑这些文件。

注意:outputMode 默认为 "download"(而非通常使用的 "inline"),因为 creator 始终会生成必须保存到磁盘的多文件输出文件夹。

如果文件存在——静默读取配置并继续:

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}

询问:

  1. outputMode:遵循 shared/output-mode.md § Setup Flow Question。
  2. 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/粘贴的文本)归类为风格参考,而非内容素材。单个请求可以同时包含素材和风格参考,请分别分类。如果只提供了风格参考,没有素材或主题,则属于独立的风格学习请求(参见步骤 2.5)。

对于 URL(音频/视频)输入:

  1. 使用 curl -L -o 下载到 /tmp/creator-{slug}.{ext}
  2. 检查是否有 coli:which coli 2>/dev/null && echo yes || echo no
  3. 如果缺少 coli:告知用户安装(npm install -g @marswave/coli),并请用户改为粘贴文本
  4. 转录:coli asr -j --model sensevoice "/tmp/creator-{slug}.{ext}"
  5. 从 JSON 结果中提取文本
  6. 清理文件:rm "/tmp/creator-{slug}.{ext}"

对于 URL(网页/文章)输入: 将在工作流执行期间(确认后)调用 Content-parser。

步骤 2:匹配模板

如果用户在提示词中指定了平台,请直接匹配:

  • “公众号”“wechat”“微信” → wechat
  • “小红书”“xiaohongshu”“xhs” → xiaohongshu
  • “口播”“narration”“脚本” → narration

如果未指定平台,请通过 AskUserQuestion 提问:

问题:“Which content template?” / “用哪个创作模板?” 选项(根据用户的输入调整语言):

  • “WeChat article (公众号长文)” — 带 AI 插图的长篇文章
  • “Xiaohongshu (小红书)” — 图片卡片 + 长文帖子
  • “Narration script (口播稿)” — 可选配音的口播稿
步骤 2.5:主题辅助

仅当用户的输入是主题或关键词(少于 50 个字符的短文本)时才执行此步骤。如果用户提供了 URL、文件或较长的文本,则跳过。

  1. 阅读所选平台的 methodology.md:

    • WeChat:creator/templates/wechat/methodology.md
    • Xiaohongshu:creator/templates/xiaohongshu/methodology.md
    • Narration:creator/templates/narration/methodology.md
  2. 使用三圈维恩模型评估主题:

    • 用户的专业领域(创作者的专长)
    • 读者的普遍兴趣(读者兴趣)
    • 当下的时间节点(当前时机/相关性)
  3. 运行 HKR 质量筛选:

    • H(Happy):足够有趣、有悬念?
    • K(Knowledge):有信息量?看完能学到新东西?
    • R(Resonance):能戳中情绪?让人觉得“对对对,我也这么想”?
  4. 如果主题符合 3 项 HKR 标准中的至少 2 项:继续使用该主题。

  5. 如果主题符合的标准少于 2 项:通过 AskUserQuestion 主动向用户建议 2-3 个替代角度。

  6. 如果主题比较模糊:请用户补充具体信息——关键要点、个人经历,以及让他们感到兴奋或沮丧的事情。

第 3 步:风格提取(如果提供了风格参考)

仅当用户在第 1 步提供了风格参考时,才运行此步骤。如果未检测到风格参考,则跳至第 3b 步。

阅读参考内容:

  • 本地文件 → Read 工具
  • URL → content-parser API(需要 API key)
  • 粘贴的文本 → 直接使用

分析并提取风格指引:

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 模板(没有视觉预设)
  • preferences.xiaohongshu.mode 为 "long-text" 的 Xiaohongshu(不会生成卡片或图片)

否则:

  1. 阅读模板的预设部分,获取可用预设和主题匹配表。
  2. 如果用户已在提示中指定预设(例如“用水彩风格”):直接使用该预设。
  3. 如果未指定:通过 AskUserQuestion 询问用户。先输出一行提示:“配图风格可以随时换,先选一个开始吧”。列出所有可用预设及其中文标签(来自 frontmatter 的 label 字段)。使用主题匹配表,将最相关的选项置于首位(标记为“Recommended”),但始终让用户自行选择。
第 4 步:确认关卡

如果流程需要远程 API,则检查 API key:

  • WeChat 模板始终需要 image-gen → 需要 API key
  • Xiaohongshu 卡片模式需要 image-gen → 需要 API key
  • 仅 Xiaohongshu 长文本 → 无需 API key
  • 不使用 TTS 的 Narration → 无需 API key
  • 网页/文章 URL 输入 → 需要 content-parser → 需要 API key(音频/视频 URL 使用本地 coli asr,无需 API key)

如果需要 API key 但尚未配置:对于基于 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')

然后在后台轮询。将其作为单独的 Bash 调用运行,并设置 run_in_background: true 和 timeout: 600000(参见 shared/cli-patterns.md)。轮询循环本身最长运行 300 秒(轮询 60 次,每次间隔 5 秒);工具级别的 timeout: 600000 设置得更长,为 Bash 进程留出超出轮询时限的缓冲时间:

# 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。

风格应用: 写作时,按以下优先级顺序应用风格指令(优先级高的覆盖优先级低的):

  1. sessionStyle——当前风格参考(第 3 步)中的指令(如果有)
  2. .listenhub/creator/styles/{platform}.md——已保存的用户风格指令(如果文件存在)
  3. 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(当用户需要音频时,由 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}"
# 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}”:

  1. 判断适用的平台(根据上下文判断,或询问用户)
  2. 将该指令作为新的一行追加到 .listenhub/creator/styles/{platform}.md(如果文件不存在,则创建)

第 3 步(风格提取)后也适用此规则:如果用户查看提取出的指令后说“记住这个风格”,则将所有已确认的指令写入 .listenhub/creator/styles/{platform}.md。

重置风格:

如果用户说“重置风格偏好”或“reset style”:

  1. 询问适用的平台(或询问是否重置所有平台)
  2. 删除 .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 定义各平台的写作风格

评论

支持 Markdown