Skip to content
Back to skills

Yt Intel

ASecurity

YouTube Content Intelligence Pipeline (UNATTENDED MODE). Extracts metadata + transcript from a YouTube video, applies the Fabric extract_wisdom analysis pattern, scores relevance to Delivery Factory, and (if relevant) generates a branded DOCX report, uploads to Google Drive, and posts a summary to Discord #ad-intel.

  • 42 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 31, 2026
devopspythongobashgitdevopsci/cd

Works with

  • claude code
  • cursor
  • cli
  • mcp

Security analysis

A100/100

Scanned May 31, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill yt-intel --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Yt Intel?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Yt Intel
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-yt-intel/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-yt-intel)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: yt-intel
description: YouTube Content Intelligence Pipeline (UNATTENDED MODE). Extracts metadata + transcript from a YouTube video, applies the Fabric extract_wisdom analysis pattern, scores relevance to Delivery Factory, and (if relevant) generates a branded DOCX report, uploads to Google Drive, and posts a summary to Discord #ad-intel.
---

# YouTube Content Intelligence Pipeline — UNATTENDED MODE

**This is an automated invocation.** There is no interactive user. All decisions must be made autonomously based on the thresholds below.

You are executing the `/yt-intel` pipeline. This is a 6-step process that extracts intelligence from a YouTube video, gates it for relevance to Agentic Delivery / Delivery Factory, and (if relevant) produces a branded report with Drive archival and Discord notification.

**Input:** A YouTube URL (e.g., `https://www.youtube.com/watch?v=VIDEO_ID`)

---

## Step 1: EXTRACT — Video Metadata + Transcript

### 1a. Metadata extraction

Run via Bash:

```bash
yt-dlp --dump-json "<URL>" > /tmp/yt-intel/metadata.json
```

Parse from the JSON:

| Field | JSON key |
|-------|----------|
| Title | `title` |
| Channel | `channel` (or `uploader`) |
| Published date | `upload_date` (format: YYYYMMDD -> reformat to YYYY-MM-DD) |
| Duration | `duration` (seconds -> format as MM:SS or HH:MM:SS) |
| Views | `view_count` |
| Likes | `like_count` |
| Tags | `tags` (array -> comma-separated) |
| Chapters | `chapters` (array of {title, start_time, end_time}) |
| Description | `description` (first 500 chars) |

### 1b. Transcript extraction

```bash
# Download auto-generated subtitles
yt-dlp --write-auto-subs --sub-lang en --skip-download -o "/tmp/yt-intel/transcript" "<URL>"
```

This produces a `.vtt` file. Clean it:

```bash
# Parse VTT -> clean text (deduplicate, remove timestamps)
python3 -c "
import re, sys

with open('/tmp/yt-intel/transcript.en.vtt', 'r') as f:
    content = f.read()

# Remove VTT header and metadata
lines = content.split('\n')
text_lines = []
seen = set()
for line in lines:
    line = line.strip()
    # Skip timestamps, empty lines, VTT headers, and style tags
    if not line or '-->' in line or line.startswith('WEBVTT') or line.startswith('Kind:') or line.startswith('Language:') or line[0:1].isdigit() and len(line) < 10:
        continue
    # Remove HTML tags
    clean = re.sub(r'<[^>]+>', '', line)
    if clean and clean not in seen:
        seen.add(clean)
        text_lines.append(clean)

with open('/tmp/yt-intel/transcript_clean.txt', 'w') as f:
    f.write(' '.join(text_lines))
print(f'Transcript: {len(text_lines)} unique lines, {len(\" \".join(text_lines))} chars')
"
```

Read the clean transcript for analysis. If transcript extraction fails (no captions available), continue with metadata-only analysis.

---

## Step 2: ANALYZE — Extract Wisdom

Apply the Fabric `extract_wisdom` structured analysis to the transcript. Produce these sections:

### Output Structure

```markdown
# YouTube Content Intelligence Report

> **Generated:** YYYY-MM-DD | **Pipeline:** /yt-intel (extract_wisdom)
> **Source:** [Title](URL)

---

## Video Metadata

| Field | Value |
|-------|-------|
| **Title** | ... |
| **Channel** | ... |
| **Published** | ... |
| **Duration** | ... |
| **Views** | ... |
| **Likes** | ... |
| **Tags** | ... |

---

## Summary
[3-5 sentence overview of the video's core argument and conclusions]

---

## Ideas
[10-15 numbered key concepts/ideas, each 1-2 sentences with **bold lead**]

---

## Insights
[5-8 numbered deeper analyses — non-obvious takeaways, each 2-3 sentences with **bold lead**]

---

## Quotes
[8-12 notable verbatim quotes from the speaker, attributed]

---

## Facts
[10-15 numbered factual claims with specific numbers, studies, or data points]

---

## Habits & Practices
[5-10 numbered actionable habits or practices mentioned]

---

## References
[Table: Type | Name | Context — for all tools, people, companies, studies, products mentioned]

---

## Recommendations
[8-12 numbered recommendations from the speaker]

---

## One-Sentence Takeaway
> **[Single most important point in bold]**
```

**Quality bar:** Each section must have substantive content. If the video doesn't support a section (e.g., no specific quotes), write "None identified" rather than fabricating content. Facts must be verifiable claims from the video, not your own additions.

---

## Step 3: RELEVANCE GATE

Score the video's relevance to **Agentic Delivery / Delivery Factory** on a weighted 1-10 scale.

### Scoring Criteria

| Criterion | Weight | What counts as relevant |
|-----------|--------|------------------------|
| **Dark factory / autonomous delivery** | 3x | Software factories, lights-out development, autonomous agents building software, zero-human-code workflows |
| **AI coding tools & practices** | 2x | Claude Code, Codex, Cursor, Copilot, agentic coding, vibe coding, spec-driven development, AI-assisted dev workflows |
| **DevOps / infrastructure automation** | 2x | CI/CD, containers, monitoring, deployment automation, GitOps, infrastructure-as-code |
| **Enterprise software delivery** | 1x | Engineering management, team structures, developer productivity, delivery metrics, technical leadership |
| **Business model / pricing / GTM** | 1x | SaaS pricing, product-led growth, AI-native business models, developer tools market |
| **Irrelevant content** | -5x | Gaming, lifestyle, politics, entertainment, cooking, sports, or other unrelated topics |

### Calculation

1. Rate each criterion 0-10
2. Multiply by weight
3. Sum weighted scores, divide by total weight (10)
4. Clamp to 1-10 range

### Decision Thresholds (UNATTENDED MODE)

| Score | Action |
|-------|--------|
| **>= 6** | **PROCEED** — Continue to Steps 4-6 (DOCX, Drive, Discord) |
| **3 - 5** | **PROCEED WITH REDUCED PRIORITY** — Continue to Steps 4-6 but prefix Discord title with `[MARGINAL]`. The pre-filter already scored this above threshold, so complete the analysis. |
| **< 3** | **SKIP** — Output the summary and score to stdout. Print: "Low relevance to Delivery Factory (score: X/10). Skipping Drive upload and Discord notification." Stop here. |

### Relevance Section (added to report if proceeding)

After the One-Sentence Takeaway, add:

```markdown
---

## Relevance to Agentic Delivery

**Score: X/10**

[Brief justification of the score — 2-3 sentences]

| Video Concept | Agentic Delivery Equivalent |
|--------------|---------------------------|
| [concept from video] | [how it maps to our product/positioning] |
| ... | ... |

### Sales Talking Points Extracted

1. [talking point derived from video insights]
2. ...
```

---

## Step 4: GENERATE DOCX (only if relevance gate passes)

### 4a. Write Markdown report

Save the complete report (Steps 2 + 3 output) to:

```
/tmp/yt-intel/YYYY-MM-DD_<video-title-slug>_<channel-slug>_extract-wisdom.md
```

**Slug rules:** lowercase, hyphens for spaces, strip special chars, max 50 chars per slug.

### 4b. Convert to branded DOCX

Use the Pandoc MCP with the Agentic Delivery reference template:

```
mcp__pandoc__convert-contents
  input_file: "/tmp/yt-intel/YYYY-MM-DD_<slug>.md"
  output_format: "docx"
  reference_doc: "/home/burhan/github/dev-delivery-factory-deployment/.claude/templates/AgenticDelivery_Document-Template_v2.docx"
  output_file: "/tmp/yt-intel/YYYY-MM-DD_<video-title-slug>_<channel-slug>_extract-wisdom.docx"
```

Verify the DOCX was created:

```bash
ls -la /tmp/yt-intel/*.docx
```

---

## Step 5: UPLOAD TO DRIVE (only if relevance gate passes)

### 5a. Copy files to accessible path

The Google Workspace MCP restricts `file://` URLs to `ALLOWED_FILE_DIRS` (`$HOME` and `/tmp`). Files in `/tmp/yt-intel/` are already accessible.

### 5b. Upload DOCX report

```
mcp__google-workspace__create_drive_file
  file_name: "YYYY-MM-DD_<video-title-slug>_<channel-slug>_extract-wisdom.docx"
  fileUrl: "file:///tmp/yt-intel/<filename>.docx"
  folder_id: "1ISaW-3u8Kcrl_sfnGUR8pYfivlmazFzD"
  user_google_email: "burhan@ocut.se"
```

**Folder:** `05-YouTube-Intelligence/Summaries/` (ID: `1ISaW-3u8Kcrl_sfnGUR8pYfivlmazFzD`)

**IMPORTANT:** If `create_drive_file` uploads with wrong MIME type (e.g. `text/plain`), the DOCX will render as garbage on Drive. Verify the upload is `application/vnd.openxmlformats-officedocument.wordprocessingml.document`. If it fails, copy the DOCX to `$HOME` first and retry from there.

### 5c. Upload clean transcript

```
mcp__google-workspace__create_drive_file
  file_name: "YYYY-MM-DD_<video-title-slug>_transcript.txt"
  fileUrl: "file:///tmp/yt-intel/transcript_clean.txt"
  folder_id: "1IZBTofol-NwDEPWRzpc_HOy8PVr2JsXy"
  user_google_email: "burhan@ocut.se"
```

**Folder:** `05-YouTube-Intelligence/Transcripts/` (ID: `1IZBTofol-NwDEPWRzpc_HOy8PVr2JsXy`)

### 5d. Get shareable link

```
mcp__google-workspace__get_drive_shareable_link
  file_id: <uploaded DOCX file ID>
  user_google_email: "burhan@ocut.se"
```

Save this link for the Discord message.

---

## Step 6: POST TO DISCORD (only if relevance gate passes)

### Channel

**#ad-intel** — Channel ID: `1475173738646470826`

### Message Format

```
**INTEL REPORT** — <Clickbait Title>

<2-3 sentence hook with the most provocative or surprising finding from the video. Make it compelling enough that someone scrolling Discord stops to read.>

**Key stats:**
- <stat 1 — most striking number/claim>
- <stat 2>
- <stat 3>
- <stat 4 (optional)>

**Relevance (X/10):** <One sentence on why this matters for Delivery Factory>

Full analysis: <Drive shareable link>
Source: <YouTube URL>
```

### Constraints

- **Max 2000 characters** (Discord message limit)
- The clickbait title should be your own reframing, not just the video title
- The hook should make someone want to read the full report
- Stats should be specific numbers, not vague claims
- Do NOT use `>>>` block quotes (renders poorly in Discord)

### Send via Discord MCP

Use `discord_discover` to find the send message action, then `discord_execute` to post. The channel ID is `1475173738646470826`.

---

## Error Handling

| Error | Recovery |
|-------|---------|
| `yt-dlp` not found | Pipeline error — yt-dlp must be pre-installed |
| No subtitles available | Continue with metadata-only analysis |
| Pandoc conversion fails | Check `pandoc` is installed. Fall back to uploading the .md file |
| Drive upload fails | Check Google auth. Retry once. |
| Discord post fails | Log error and continue — report is still on Drive |
| Video is age-restricted/private | Log error and skip |

---

## Working Directory

All intermediate files go to `/tmp/yt-intel/`. Create it if it doesn't exist:

```bash
mkdir -p /tmp/yt-intel
```

Clean up previous run files at the start of each invocation, but **do not delete** files from other videos (check filenames).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…