Awesome-omni-skill yt-intel

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.

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/yt-intel" ~/.claude/skills/diegosouzapw-awesome-omni-skill-yt-intel && rm -rf "$T"
manifest: skills/development/yt-intel/SKILL.md
source content

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:

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

Parse from the JSON:

FieldJSON 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

# 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:

# 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

# 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

CriterionWeightWhat counts as relevant
Dark factory / autonomous delivery3xSoftware factories, lights-out development, autonomous agents building software, zero-human-code workflows
AI coding tools & practices2xClaude Code, Codex, Cursor, Copilot, agentic coding, vibe coding, spec-driven development, AI-assisted dev workflows
DevOps / infrastructure automation2xCI/CD, containers, monitoring, deployment automation, GitOps, infrastructure-as-code
Enterprise software delivery1xEngineering management, team structures, developer productivity, delivery metrics, technical leadership
Business model / pricing / GTM1xSaaS pricing, product-led growth, AI-native business models, developer tools market
Irrelevant content-5xGaming, 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)

ScoreAction
>= 6PROCEED — Continue to Steps 4-6 (DOCX, Drive, Discord)
3 - 5PROCEED 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.
< 3SKIP — 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:

---

## 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:

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

ErrorRecovery
yt-dlp
not found
Pipeline error — yt-dlp must be pre-installed
No subtitles availableContinue with metadata-only analysis
Pandoc conversion failsCheck
pandoc
is installed. Fall back to uploading the .md file
Drive upload failsCheck Google auth. Retry once.
Discord post failsLog error and continue — report is still on Drive
Video is age-restricted/privateLog error and skip

Working Directory

All intermediate files go to

/tmp/yt-intel/
. Create it if it doesn't exist:

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).