# Setup

> |

- **Type:** Skill
- **Install:** `agentstack add skill-devinilabs-content-research-os-setup`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [devinilabs](https://agentstack.voostack.com/s/devinilabs)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [devinilabs](https://github.com/devinilabs)
- **Source:** https://github.com/devinilabs/content-research-os/tree/main/.claude/skills/setup

## Install

```sh
agentstack add skill-devinilabs-content-research-os-setup
```

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

## About

# Setup — Content Research OS

Conversational onboarding. Interview the user, then write their configuration. Be warm, brief, and clear. Ask **one topic at a time** and let the user **skip anything** — never block on a single answer.

## Before you start

1. Detect fresh setup vs. re-run: read `.env` (if present) and the four files in `.claude/context/`.
   - If real values already exist (a key counts as configured only if it's non-blank and not a `your-..-here` placeholder; an account only if it's not `@example`), summarize what's already configured and ask whether to **update specific parts** or **start fresh**. When updating, change only what the user asks for — never clobber existing API keys or accounts they didn't mention.
2. Briefly tell the user what you'll collect: three API keys, their YouTube channel details, and the X / Instagram / TikTok accounts to track.

## Group A — API keys

Ask for each key on its own line of conversation. For each, give the one-line "where to get it" link and offer **"skip for now"** (you'll leave that key blank in `.env`, and note the matching skill won't run until it's filled).

| Key | Powers | Get it from |
|-----|--------|-------------|
| `APIFY_TOKEN` | X, Instagram, TikTok scraping | https://console.apify.com/account/integrations |
| `TUBELAB_API_KEY` | YouTube outlier detection | https://tubelab.net/settings/api |
| `GEMINI_API_KEY` | AI video analysis | https://aistudio.google.com/apikey |

## Group B — Your YouTube channel

Channel URL/@handle is required; everything else is optional but improves relevance filtering.

- Channel URL or @handle
- Channel ID (24 chars, starts with `UC…`). If the user doesn't know it, try to resolve it from the handle by fetching the channel page and reading the `UC…` id; if you can't, ask them to paste it from YouTube Studio → Settings → Channel → Advanced, or store `UC_REPLACE_ME` and tell them youtube-research needs it.
- Channel name
- Primary niche
- Content style (e.g., tutorials, vlogs, reviews)
- Target audience
- Typical video length
- Upload frequency
- Best-performing topics
- Goals

## Group C — Accounts to track

For **X**, then **Instagram**, then **TikTok**, ask which accounts to research. Let the user paste a list in any format (commas or new lines, with or without `@`). Optionally capture a niche and a note per handle. If a platform has none, leave its table empty.

## Writing the files

When the interview is done, **echo a summary first** with API keys masked (show only the first 6 and last 2 characters, e.g. `apify_a1b2…z9`). Then write the files exactly as specified below.

### `.env`

Write all three keys. Use the user's value, or leave the value **blank** if skipped — a blank makes the matching script report a clean "not set" error instead of a confusing auth failure. Preserve any extra keys the user already had.

```
# YouTube Research - TubeLab API
TUBELAB_API_KEY=

# X/Twitter, Instagram, TikTok Research - Apify API
APIFY_TOKEN=

# Video Analysis - Gemini API
GEMINI_API_KEY=
```

### `.claude/context/x-accounts.md`, `instagram-accounts.md`, `tiktok-accounts.md`

**Strict format — the fetch scripts parse these.** For all three: the header row MUST start with `| Handle`, the separator MUST start with `|---` (no space after the first pipe), and each handle goes in the **second** column with a leading `@`. Never write an `@example` row — replace the placeholder with real handles. If a platform has no accounts, write only the header + separator.

X (`.claude/context/x-accounts.md`):
```
# X/Twitter Accounts to Track

Add accounts below to track for research. The fetch script will pull content from these accounts.

| Handle | Niche | Notes |
|--------|-------|-------|
| @handle1 | niche | notes |
```

Use the same structure for Instagram (title `# Instagram Accounts to Track`) and TikTok (title `# TikTok Accounts to Track`).

### `.claude/context/youtube-channel.md`

Keep this exact section structure — youtube-research reads **Channel ID** and **Primary Niche** from here:

```
# YouTube Channel Context

## Channel Information
- **Channel Name:** 
- **Channel Handle:** 
- **Channel ID:** 

## Niche & Positioning
- **Primary Niche:** 
- **Content Style:** 
- **Target Audience:** 

## Content Strategy
- **Typical Video Length:** 
- **Upload Frequency:** 
- **Best Performing Topics:** 

## Goals
- **Growth Targets:** 
- **Content Goals:** 
```

## Finish

Tell the user:
- What was written, and which keys were left blank (so they know which skills won't run until those are filled).
- If the channel ID is `UC_REPLACE_ME`, remind them youtube-research needs it.
- Next steps: in Claude Desktop, upload the `.skill` bundles (Settings → Capabilities → Skills) if not done, then run `/content-planner` for a full cross-platform pass, or an individual skill like `/x-research`.

## Source & license

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

- **Author:** [devinilabs](https://github.com/devinilabs)
- **Source:** [devinilabs/content-research-os](https://github.com/devinilabs/content-research-os)
- **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:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** yes
- **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-devinilabs-content-research-os-setup
- Seller: https://agentstack.voostack.com/s/devinilabs
- 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%.
