技能详情(站内镜像,无评论)
许可证:MIT-0
MIT-0 ·免费使用、修改和重新分发。无需归因。
版本:v1.0.0
统计:⭐ 5 · 2.1k · 6 current installs · 6 all-time installs
⭐ 5
安装量(当前) 6
🛡 VirusTotal :良性 · OpenClaw :可疑
Package:adamkristopher/youtube-analytics
安全扫描(ClawHub)
- VirusTotal :良性
- OpenClaw :可疑
OpenClaw 评估
The code and README clearly require a YouTube Data API key and write JSON results to a local results/ folder, but the registry metadata incorrectly declares no required credentials — this mismatch is the main coherence problem you should address before installing.
目的
The skill's name, description, SKILL.md and code all match: it's a YouTube Data API v3 toolkit that needs a YOUTUBE_API_KEY and performs channel/video/search queries. However the registry metadata claims 'Required env vars: none' and 'Primary credential: none', which contradicts the code (scripts/src/config/settings.ts and core/client.ts enforce and use YOUTUBE_API_KEY). That mismatch is incoherent and could lead to missing prompts or accident…
说明范围
SKILL.md instructs running npm install in scripts/, creating a .env with YOUTUBE_API_KEY and optional max results, then calling exported TypeScript functions or running with npx tsx. Runtime behavior is scoped to calling the YouTube API and saving results as JSON under results/{category}/; there are no instructions to read unrelated system files or send data to external endpoints other than Google's YouTube API. Be aware it will write files to…
安装机制
There is no custom installer or remote URL; install is standard npm install using package.json (dependencies: dotenv, googleapis, tsx, typescript). No downloads from obscure hosts or archive extracts are present in the manifest. Running npm install will fetch npm packages from the registry (normal but has the usual supply-chain considerations).
证书
The code requires YOUTUBE_API_KEY (and optionally YOUTUBE_DEFAULT_MAX_RESULTS) but the skill metadata does not declare any required environment variables or primary credential. Requiring a YouTube API key is proportional for the stated purpose, but the missing declaration is an inconsistency that affects consent and credential-handling policies. The API key is a sensitive secret and should be declared and scoped (restrict referer/IP/usage) bef…
持久
The skill does not ask for permanent platform-wide presence (always:false) and does not modify other skills or global agent settings. Its persistent action is local auto-saving of JSON results into results/ — expected for an analytics toolkit.
安装(复制给龙虾 AI)
将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。
请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「YouTube Analytics」。简介:YouTube Data API v3 analytics toolkit. Analyze YouTube channels, videos, and se…。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/adamkristopher/youtube-analytics/SKILL.md
(来源:yingzhi8.cn 技能库)
SKILL.md
---
name: youtube-analytics
description: "YouTube Data API v3 analytics toolkit. Analyze YouTube channels, videos, and search results. Use when the user asks to: check YouTube channel stats, analyze video performance, compare channels, search for videos, get subscriber counts, view engagement metrics, find trending videos, get channel uploads, or analyze YouTube competition. Requires a YouTube Data API v3 key from Google Cloud Console."
---
# YouTube Analytics Toolkit
## Setup
Install dependencies:
```bash
cd scripts && npm install
```
Configure credentials by creating a `.env` file in the project root:
```
YOUTUBE_API_KEY=AIzaSy...your-api-key
YOUTUBE_DEFAULT_MAX_RESULTS=50
```
**Prerequisites**: A Google Cloud project with the YouTube Data API v3 enabled. Get your API key from the [Google Cloud Console](https://console.cloud.google.com/apis/credentials).
## Quick Start
| User says | Function to call |
|-----------|-----------------|
| "Analyze this YouTube channel" | `analyzeChannel(channelId)` |
| "Compare these two channels" | `compareChannels([id1, id2])` |
| "How is this video performing?" | `analyzeVideo(videoId)` |
| "Search YouTube for [topic]" | `searchAndAnalyze(query)` |
| "Get stats for this channel" | `getChannelStats(channelId)` |
| "Get this video's view count" | `getVideoStats(videoId)` |
| "Find channels about [topic]" | `searchChannels(query)` |
| "Show recent uploads from this channel" | `getChannelVideos(channelId)` |
Execute functions by importing from `scripts/src/index.ts`:
```typescript
import { analyzeChannel, searchAndAnalyze } from './scripts/src/index.js';
const analysis = await analyzeChannel('UCxxxxxxxx');
```
Or run directly with tsx:
```bash
npx tsx scripts/src/index.ts
```
## Workflow Pattern
Every analysis follows three phases:
### 1. Analyze
Run API functions. Each call hits the YouTube Data API and returns structured data.
### 2. Auto-Save
All results automatically save as JSON files to `results/{category}/`. File naming patterns:
- Named results: `{sanitized_name}.json`
- Auto-generated: `YYYYMMDD_HHMMSS__{operation}.json`
### 3. Summarize
After analysis, read the saved JSON files and create a markdown summary in `results/summaries/` with data tables, comparisons, and insights.
## High-Level Functions
| Function | Purpose | What it gathers |
|----------|---------|----------------|
| `analyzeChannel(channelId)` | Full channel analysis | Channel info, recent videos, avg views per video |
| `compareChannels(channelIds)` | Compare multiple channels | Side-by-side subscribers, views, video counts |
| `analyzeVideo(videoId)` | Video performance analysis | Views, likes, comments, like rate, comment rate |
| `searchAndAnalyze(query, maxResults?)` | Search + stats | Search results with full video statistics |
## Individual API Functions
For granular control, import specific functions from the API modules. See [references/api-reference.md](references/api-reference.md) for the complete list of 13 API functions with parameters, types, and examples.
### Channel Functions
| Function | Purpose |
|----------|---------|
| `getChannel(channelId)` | Get full channel details |
| `getChannelStats(channelId)` | Get simplified stats (subscribers, views, videoCount) |
| `getMultipleChannels(channelIds)` | Batch fetch multiple channels |
### Video Functions
| Function | Purpose |
|----------|---------|
| `getVideo(videoId)` | Get full video details |
| `getVideoStats(videoId)` | Get simplified stats (views, likes, comments) |
| `getMultipleVideos(videoIds)` | Batch fetch multiple videos |
| `getChannelVideos(channelId)` | Get recent uploads from a channel |
### Search Functions
| Function | Purpose |
|----------|---------|
| `searchVideos(query, options?)` | Search for videos |
| `searchChannels(query, options?)` | Search for channels |
## Results Storage
Results auto-save to `results/` with this structure:
```
results/
├── channels/ # Channel data and comparisons
├── videos/ # Video data and analyses
├── search/ # Search results
└── summaries/ # Human-readable markdown summaries
```
### Managing Results
```typescript
import { listResults, loadResult, getLatestResult } from './scripts/src/index.js';
// List recent results
const files = listResults('channels', 10);
// Load a specific result
const data = loadResult(files[0]);
// Get most recent result for an operation
const latest = getLatestResult('channels', 'channel_analysis');
```
## Tips
1. **Use channel IDs** — Channel IDs start with `UC` (e.g., `UCxxxxxxxx`). You can find them in the channel URL or page source.
2. **Request summaries** — After pulling data, ask for a markdown summary with tables and insights.
3. **Compare channels** — Use `compareChannels()` to benchmark competitors side by side.
4. **Batch requests** — Use `getMultipleChannels()` or `getMultipleVideos()` for efficient batch lookups.
5. **Search + analyze** — `searchAndAnalyze()` combines search with full video stats in one call.