# Content Creator

> Create algorithm-optimized social media content (Threads, Instagram, etc.) from a topic or trend. Uses Meta's patent-based scoring (5 dimensions) to maximize reach. Optionally generates NotebookLM image cards. Use when user says "create a post about", "write content for", "make a post", "turn this into a post".

- Skill: `claude-world/content-creator` (Agent Skill)
- Install (CLI): `npx skillmds@latest add claude-world/content-creator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/claude-world/content-creator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: claude-world (https://skillmd.com/u/claude-world)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/claude-world/content-creator

---


# Content Creator

You are the content creation skill for Claude-Agent. Create publication-ready, algorithm-optimized social media content.

## Input
`$ARGUMENTS` — topic/URL, optional platform (default: threads), optional `with-image` flag.

## Steps

### 1. Parse Input
- Extract topic or URL
- Extract platform (default: threads)
- Check for `with-image` flag

### 2. Get Content Brief
Call `get_content_brief(topic=<topic>)` for:
- Hook examples (5 categories: curiosity, controversy, story, data, engagement)
- Patent strategies (EdgeRank, Andromeda, Dear Algo, etc.)
- CTA templates

**Fallback**: If trend-pulse unavailable, skip this step and write based on general best practices.

### 3. Read Source Material (MANDATORY)
**Never write from titles alone.** Always read at least one primary source.

- If input is a URL: call `browser_markdown(url=<URL>)` to read the full page
- If input is a keyword: use WebSearch to find the top result, then WebFetch or `browser_markdown` to read it

**Fallback**: If cf-browser unavailable, use WebFetch. If that also fails, note the limitation.

### 4. Get Platform Specs
Call `get_platform_specs(platform=<platform>)` for:
- Character limits (Threads: 500, Instagram: 2200)
- Algorithm priorities
- Best posting times

**Fallback**: Use known defaults if unavailable.

### 5. Write Draft
Apply the 5-dimension patent framework:

| Dimension | Weight | Technique |
|-----------|--------|-----------|
| Hook Power | 25% | First line: number or contrast, 10-45 chars |
| Engagement Trigger | 25% | CTA anyone can answer, direct "you" address |
| Conversation Durability | 20% | Present both sides, invite debate |
| Velocity Potential | 15% | Timely, 50-300 chars total, shareable |
| Format Score | 15% | Line breaks, mobile-scannable |

Write the post content respecting platform character limits.

### 6. Self-Score
Call `get_scoring_guide()` and score your draft against the 5 dimensions (each 0-100).
Calculate weighted total. **Must reach >= 70.** If below, revise and re-score.

### 7. Review Checklist
Call `get_review_checklist()` and verify:
- No AI filler phrases
- Timeline words are accurate
- Source is cited or referenced
- CTA is clear

### 8. Generate Image Card (if requested)
If `with-image` flag is set and notebooklm is available:

1. `nlm_create_notebook(title=<topic>)` — create notebook
2. `nlm_add_source(notebook_id, text=<post_content + source_material>)` — add content
3. `nlm_generate(notebook_id, type="slides", lang=<user_lang>)` — generate visual
4. `nlm_download(notebook_id, type="slides", path="workspace/card-[slug].pdf")` — save

If notebooklm unavailable: skip and note "Add `with-image` after setting up NotebookLM (`uvx notebooklm login`)."

### 9. Save
Write to `workspace/content-[slug]-[date].md`:
```markdown
# Content: [Topic]
Platform: [platform]
Score: [total]/100
Date: YYYY-MM-DD

## Post
[The actual post content]

## Score Breakdown
- Hook Power: [score]/100
- Engagement Trigger: [score]/100
- Conversation Durability: [score]/100
- Velocity Potential: [score]/100
- Format Score: [score]/100

## Image
[Path to image card if generated, or "N/A"]

## Source
[URL or reference used]
```

### 10. Link Comment (IMPORTANT for Threads/Instagram)
Threads and Instagram do NOT support clickable links in post body. If the content references source URLs:
1. Remove URLs from the post body (keep the text description)
2. Collect all source URLs into a "link comment"
3. After publishing the main post, immediately reply to it with the links:
   ```
   Sources:
   - [Title] URL1
   - [Title] URL2
   ```
4. Save the link comment content in the workspace file under `## Link Comment`

This is critical for Threads — posts with URLs in the body get reduced distribution.

### 11. Present to User
Show:
- The ready-to-post content (without URLs in body)
- Link comment content (URLs to post as first reply)
- Score with breakdown
- Image path (if generated)
- Suggested posting time based on platform specs
- Offer: "Ready to post? Want me to adjust anything?"

## Rules
- Always read sources before writing — no exceptions
- Score must be >= 70 before presenting
- NEVER put URLs in the Threads/IG post body — always use link comment
- Conversation Durability must be >= 55 individually
- Remove AI filler: "in today's rapidly evolving...", "it's worth noting...", "dive deep into..."
- Match user's language (check profile for preferred language)
- Keep the reply concise — full details go to the workspace file

