# Content Pipeline

> Internal tool: run full content pipeline from a skill list — add use-cases to use-cases.ts + push, write HTML article to Supabase, generate tweet draft.

- Skill: `bytesagain/content-pipeline` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add bytesagain/content-pipeline`
- Raw SKILL.md: https://api.skillmd.com/api/skills/bytesagain/content-pipeline/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: bytesagain (https://skillmd.com/u/bytesagain)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/bytesagain/content-pipeline

---


# Content Pipeline (Internal Tool)

⚠️ **自用工具，不发 ClawHub。** 含内部路径、Supabase key、X API key。

从 skill 列表一键跑完三步：use-cases → 文章 → 推文草稿。

## Commands

### run
完整流水线（推荐）。

```bash
XAI_API_KEY=xai-xxx \
SUPABASE_URL=https://jfpeycpiyayrpjldppzq.supabase.co \
SUPABASE_KEY=eyJ... \
SITE_DIR=/home/admin/bytesagain-next \
bash scripts/script.sh run \
  --slugs "skill-a,skill-b,skill-c" \
  --topic "AI tools for X"
```

### usecase
只跑 Step 1：往 `lib/use-cases.ts` 加条目 + git push（触发 Vercel 部署）。

```bash
SITE_DIR=/home/admin/bytesagain-next \
bash scripts/script.sh usecase \
  --slugs "skill-a,skill-b" \
  --topic "topic string"
```

### article
只跑 Step 2：用 Grok 生成 HTML 文章 → 写入 Supabase articles 表。已存在自动跳过。

```bash
XAI_API_KEY=xai-xxx \
SUPABASE_URL=... SUPABASE_KEY=... \
bash scripts/script.sh article \
  --slugs "skill-a,skill-b" \
  --topic "topic string" \
  [--article-slug "custom-slug"]
```

### tweet
只跑 Step 3：用 Grok 生成推文草稿 → 追加到 `/tmp/x-drafts-YYYY-MM-DD.json`。

```bash
XAI_API_KEY=xai-xxx \
bash scripts/script.sh tweet \
  --url "https://bytesagain.com/article/slug" \
  --topic "topic string"
```

## Env Vars

| 变量 | 用于 | 说明 |
|------|------|------|
| XAI_API_KEY | article, tweet, run | Grok API key |
| SUPABASE_URL | article, run | Supabase 项目地址 |
| SUPABASE_KEY | article, run | Supabase service role key |
| SITE_DIR | usecase, run | bytesagain-next 本地路径（默认 /home/admin/bytesagain-next） |
| X_API_KEY / X_API_SECRET / X_ACCESS_TOKEN / X_ACCESS_TOKEN_SECRET | tweet(未用，草稿只存文件) | 暂不需要 |

## Output

- `usecase` → 改 use-cases.ts + push → Vercel 自动部署
- `article` → Supabase articles 表，URL: `https://bytesagain.com/article/<slug>`
- `tweet` → `/tmp/x-drafts-YYYY-MM-DD.json`（追加，用 x-monitor 发布）

## Notes

- use-case slug 自动从 topic 生成（小写+连字符）
- article slug 同上，可用 `--article-slug` 覆盖
- 重复检测：use-case 和 article 都会先 SELECT 确认不存在再写入

