PORTAL / LIBRARY / pb-ideate

[ COPY & CONTENT · OPERATOR UTILITY ]

/pb-ideate

Generate 9 ranked YouTube video ideas for Faris's personal brand (faris-bio)

Download the skill file (.md)

Placeholders like ACME Agency, <id> and you@example.com mark values that are per-agency — your install fills them with YOUR clients and accounts. If a section references a helper script you don't have yet, it ships with that workflow's install.

/pb-ideate — Personal Brand Idea Generator

Triggers

What this skill does

  1. Pulls meaningful commits from c:/Users/faris/agency-os git log (filters merges, fixups, doc-only)
  2. Scores commits by lines changed + presence in .claude/skills/, .claude/agents/, */scripts/*.mjs, etc.
  3. Clusters commits by domain (meta, google_ads, ai_video, agents, bridge, etc.)
  4. Reads faris-bio/brand/pillars.md, positioning.md, voice.md for context
  5. Generates 9 ranked video ideas in the structured format below
  6. Asks the user which ideas to keep (driver's-seat checkpoint)
  7. Appends only the user's picks to the Faris Bio — Content Pipeline Google Sheet with Status = Inbox
  8. Logs the full set (picked + discarded) to faris-bio/research/notes/ideate-runs/<timestamp>.md

What this skill does NOT do

Procedure

Step 1 — Verify pipeline is initialized

Check that faris-bio/config.json exists and contains sheet_id. If not, run:

node faris-bio/scripts/setup_pipeline.mjs

This creates the Drive folder, sheet, tab, headers, and dropdowns. Idempotent — safe to re-run.

Step 2 — Pull commits + brand context

node faris-bio/scripts/ideate_prepare.mjs --since "30 days ago"

The script prints a structured JSON block containing:

Step 3 — Generate 9 ranked ideas

Using the JSON output + brand docs, generate exactly 9 ideas following Chase's ideation pattern (from faris-bio/research/notes/<id>.md):

<id>

For each of the 9 ideas, present:

## Idea N — <working title>

- **angle:** <one-line, what makes this video different from the obvious version>
- **desire:** <one-line, the desire/pain this hits in the viewer>
- **pillar:** 1-5 (from brand/pillars.md)
- **format:** long-form / short / linkedin / carousel / live-build
- **channel:** YT / Shorts / LI / IG (one or more)
- **source commits:** <short hashes>
- **effort:** low / med / high
- **competitive gap:** <one-line, what other AI-marketing YouTubers are not doing here>
- **why now:** <one-line, why this angle is fresh given Faris's actual recent work>

After all 9, add a ranking section that orders them by your judgment of strategic value — weighting:

End with: "Which of these 9 should go to the Inbox in the Content Pipeline? Reply with the numbers, e.g. '1, 3, 7' — or 'all' / 'none'."

Step 4 — Wait for the user to pick

Do NOT auto-write to the sheet. The user is in the driver's seat.

Step 5 — Commit the picks

For each picked idea, build a JSON object:

{
  "id": "2026-04-<short-slug>",
  "title": "<working title>",
  "angle": "<from output>",
  "pillar": "<1-5>",
  "format": "<from output>",
  "channel": "<YT/Shorts/LI/IG, comma-separated if multi>",
  "source": "git:<hash1>,git:<hash2>",
  "desire": "<from output>",
  "effort": "<low/med/high>",
  "notes": "<optional — anything the user said when picking>"
}

ID format: YYYY-MM-<short-slug> (year-month + 3-5 word kebab slug).

Write the array to a temp JSON file, then:

node faris-bio/scripts/ideate_commit.mjs <temp.json>

The script appends the picks to the sheet with Status = Inbox and prints the sheet URL.

Step 6 — Save the run log

Write all 9 ideas (picked + discarded) to:

faris-bio/research/notes/ideate-runs/<YYYY-MM-DD-HHmm>.md

Format: same as the <id> above + a "Picks" section listing which ones the user kept. This is the audit trail — useful when ACME Agencywing what we discarded later.

Reusable infrastructure

Voice rules (apply to the generated ideas)

From faris-bio/brand/voice.md:

Strategic frame (from research notes)

Faris's fountainhead is agency-os itself. He is the source. Every idea should pull from a real artifact he shipped — not an abstract "here's how AI could help an agency" angle.

If a generated idea doesn't trace back to a specific commit, drop it.