# Creator

> |

- **Type:** Skill
- **Install:** `agentstack add skill-joeseesun-qiaomu-cut-skill-creator`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [joeseesun](https://agentstack.voostack.com/s/joeseesun)
- **Installs:** 0
- **Category:** [Content & Media](https://agentstack.voostack.com/c/content-and-media)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [joeseesun](https://github.com/joeseesun)
- **Source:** https://github.com/joeseesun/qiaomu-cut-skill/tree/main/vendor/marswaveai-skills/creator

## Install

```sh
agentstack add skill-joeseesun-qiaomu-cut-skill-creator
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

## When to Use

- User wants a full content package for a specific platform (WeChat article, Xiaohongshu post, narration script)
- User says "帮我写篇公众号", "小红书图文", "口播稿", "create content"
- User provides a URL/text/topic and wants it turned into platform-ready content with images

## When NOT to Use

- User wants a single image without a content workflow → use image-gen directly
- User wants a single TTS audio → use tts directly
- User wants to transcribe audio → use asr directly
- User wants a podcast episode → use podcast directly
- User wants to extract content from a URL without further processing → use content-parser directly

Creator is for **multi-step content production** that combines writing + media generation into a platform-ready package.

## Purpose

Generate platform-specific content packages by orchestrating existing skills. Input: topic, URL, text, or audio/video file. Output: a folder with article/script, images, and metadata — ready to publish.

## Hard Constraints

- Use `listenhub` CLI commands for image-gen and TTS. Use curl for content-parser (see `content-parser/SKILL.md` § API Reference).
- Always read config following `shared/config-pattern.md` before any interaction
- Follow `shared/cli-patterns.md` for polling, errors, and interaction patterns
- Never save files to `~/Downloads/` or `.listenhub/` — save content packages to the current working directory
- JSON parsing: use `jq` only (no python3, awk)

Language Adaptation: All UI text follows the user's input language. Chinese input → Chinese output. English input → English output. Mixed → follow dominant language.

Use AskUserQuestion for every multiple-choice step. One question at a time. Wait for the answer. After template is selected and input is understood, show a confirmation summary and wait for explicit approval before executing the pipeline.

API Key Check at Confirmation Gate: If the pipeline includes any remote API call (image-gen, content-parser, tts), check authentication before proceeding. For CLI-based calls (image-gen, TTS), run `listenhub auth login` if not authenticated. For content-parser calls, configure `LISTENHUB_API_KEY` (see `content-parser/SKILL.md` § Authentication). Pure text-only pipelines (e.g., topic → narration script without TTS) can proceed without authentication.

## Step -1: API Key Check

Deferred. API key is checked at the confirmation gate (Step 4) only when the pipeline requires remote API calls. See Hard Constraints above.

## Step 0: Config Setup

Follow `shared/config-pattern.md` Step 0 (Zero-Question Boot).

**If file doesn't exist** — silently create with defaults and proceed:
```bash
mkdir -p ".listenhub/creator" ".listenhub/creator/styles"
cat > ".listenhub/creator/config.json" 50 chars, not a URL/path | Use directly as material |
| Topic/keywords | Short text (/dev/null && echo yes || echo no`
3. If `coli` missing: inform user to install (`npm install -g @marswave/coli`), ask them to paste text instead
4. Transcribe: `coli asr -j --model sensevoice "/tmp/creator-{slug}.{ext}"`
5. Extract text from JSON result
6. Cleanup: `rm "/tmp/creator-{slug}.{ext}"`

**For URL (web/article) inputs:**
Content-parser will be called during pipeline execution (after confirmation).

### Step 2: Template Matching

If the user specified a platform in their prompt, match directly:
- "公众号", "wechat", "微信" → wechat
- "小红书", "xiaohongshu", "xhs" → xiaohongshu
- "口播", "narration", "脚本" → narration

If no platform was specified, ask via AskUserQuestion:

Question: "Which content template?" / "用哪个创作模板？"
Options (adapt language to user's input):
- "WeChat article (公众号长文)" — Long-form article with AI illustrations
- "Xiaohongshu (小红书)" — Image cards + long text post
- "Narration script (口播稿)" — Spoken script with optional audio

### Step 2.5: Topic Assistance

This step runs only when the user's input is a topic or keywords (short text "
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
```

Extract content: `MATERIAL=$(echo "$RESULT" | jq -r '.data.data.content')`

If extraction fails: tell user "URL 解析失败，你可以直接粘贴文字内容给我" and stop.

**Then follow the platform template** — read `template.md` and execute each step. The template specifies the exact writing instructions and API calls. See `creator/templates/{platform}/template.md` for template contents.

**Writing engine integration:** Each platform's `template.md` now includes writing-engine references and a self-review loop. The template handles loading `writing-engine/` files, applying the selected prototype's narrative structure, and running L1-L4 quality review after writing. See each platform's `template.md` for details.

**Style application:** When writing content, apply style directives in this priority order (higher overrides lower):
1. `sessionStyle` — directives from the current style reference (Step 3), if any
2. `.listenhub/creator/styles/{platform}.md` — persisted user style directives (if file exists)
3. `templates/{platform}/style.md` — baseline platform style

**For image generation** (called by wechat and xiaohongshu templates):

```bash
RESPONSE=$(listenhub image create \
  --prompt "" \
  --aspect-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
```

On 429: exponential backoff (wait 15s → 30s → 60s), retry up to 3 times. On failure after retries: skip this image, annotate in output summary.

Generate images **sequentially** (not parallel) to respect rate limits.

**For TTS** (called by narration template when user wants audio):

```bash
listenhub tts create --text "$(cat /tmp/lh-content.txt)" --speaker "$SPEAKER_ID" --json \
  | jq -r '.data' | base64 -D > "{slug}-narration/audio.mp3"
```

### Step 6: Assemble Output

Create the output folder and write all files:

```bash
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"
```

Write content files per template spec. Then write `meta.json`:

```json
{
  "title": "...",
  "slug": "...",
  "platform": "wechat|xiaohongshu|narration",
  "date": "YYYY-MM-DD",
  "tags": ["...", "..."],
  "summary": "..."
}
```

### Step 7: Present Result

```
✅ 内容已生成！保存在 {OUTPUT_DIR}/

📄 {main files list}
🖼️ images/ — N 张配图（如有）
📋 meta.json — 标题、标签、摘要
```

(Adapt language to user's input language per Hard Constraints.)

### Step 8: Update Preferences

Record this generation in history:

```bash
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"
```

Keep only the last 5 history entries per platform.

Note: `cardStyle` from the spec is deferred — not implemented in V1 config. Can be added later when card style customization is needed.

### Manual Style Tuning

**Adding style directives:**

If the user says "记住：{style directive}" or "remember: {style directive}":

1. Detect which platform it applies to (from context or ask)
2. Append the directive as a new line to `.listenhub/creator/styles/{platform}.md` (create the file if it doesn't exist)

This also applies after Step 3 (Style Extraction): if the user says "记住这个风格" after reviewing extracted directives, write all confirmed directives to `.listenhub/creator/styles/{platform}.md`.

**Resetting style:**

If the user says "重置风格偏好" or "reset style":
1. Ask which platform (or all)
2. Delete `.listenhub/creator/styles/{platform}.md`

## API Reference

- Authentication: `shared/cli-authentication.md`
- Image generation: CLI: `listenhub image create` (see `shared/cli-patterns.md`)
- Content extraction: `content-parser/SKILL.md` § API Reference (Inlined)
- TTS (text-to-speech): CLI: `listenhub tts create` (see `shared/cli-patterns.md`)
- Speaker selection: `shared/speaker-selection.md`
- Config pattern: `shared/config-pattern.md`
- Common patterns (polling, errors): `shared/cli-patterns.md`
- Output mode: `shared/output-mode.md`

## Composability

- **Invokes**: content-parser (URL extraction), image-gen (illustrations/cards), tts (narration audio), asr (audio/video transcription via `coli`)
- **Invoked by**: standalone — user triggers directly
- **Templates**: `creator/templates/{wechat,xiaohongshu,narration}/template.md` define per-platform pipelines
- **Style guides**: `creator/templates/{wechat,xiaohongshu,narration}/style.md` define per-platform writing tone

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [joeseesun](https://github.com/joeseesun)
- **Source:** [joeseesun/qiaomu-cut-skill](https://github.com/joeseesun/qiaomu-cut-skill)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-joeseesun-qiaomu-cut-skill-creator
- Seller: https://agentstack.voostack.com/s/joeseesun
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
