Token导航 LogoToken导航TokenDH.com
研究检索敏感数据clawhub未标认证来源可访问clear审计提醒

ai-gaming-contentAI 游戏内容

Agent Skill

用于辅助文档、README、Markdown、说明文和内容稿件的整理与改写。它适合让 Agent 提炼结构、补齐章节、统一术语、检查链接或把零散材料整理成可读文档。使用时应保留项目已有事实、命令和路径,不要把未确认的信息写成确定结论;涉及对外文案时,还需要控制语气,避免过度营销或夸大能力。

总安装

2,766

周安装

113

GitHub Stars

公开资料未说明

下载量

886
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:ai-gaming-content(AI 游戏内容)
来源仓库:https://github.com/nicemaths123/ai-gaming-content
安装命令:
openclaw skills install ai-gaming-content
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install ai-gaming-content

简介

抓取流行游戏数据和病毒式剪辑,生成优化脚本,并利用人工智能为内容创作者和货币化制作病毒式游戏视频。

SKILL.md

AI Gaming Content and Monetization Machine: Research Trends, Script and Produce Viral Gaming Videos That Make Money

Display Name: AI Gaming Content and Monetization Machine Version: 1.0.0 Author: @g4dr

Overview

Gaming is the largest entertainment industry on the planet. $200B+ per year and growing. This skill scrapes trending games, viral clips, Reddit discussions, YouTube gaming channels and TikTok gaming content to find what is blowing up right now, then generates optimized scripts and produces complete gaming content videos with AI. Whether you run a gaming channel, review games, create compilations or do commentary, this skill builds your content factory.

Works for: gaming YouTubers, TikTok gaming creators, Twitch streamers expanding to short-form, gaming news channels, esports content teams, game review sites.

Powered by: Apify + InVideo AI + Claude AI


What This Skill Does

  • Scrape trending games, clips and discussions from Reddit gaming subreddits (r/gaming, r/pcgaming, r/PS5, r/NintendoSwitch)
  • Extract top-performing gaming videos from TikTok and YouTube to reverse-engineer what works
  • Monitor Steam trending, new releases and most-wishlisted games via web scraping
  • Detect emerging game trends 48 to 72 hours before they peak on YouTube
  • Analyze which video formats (reviews, tier lists, "hot takes", news, tutorials) get the most engagement per game
  • Generate 30 optimized gaming video scripts with proven hooks and A/B variations
  • Produce complete 9:16 short-form gaming videos with voiceover, captions and music
  • Build a full month content calendar mapped to upcoming game releases and events
  • Identify monetization angles: sponsorships, affiliate programs, ad revenue optimization

Step 1: Set Up Your Research Engine

This skill uses Apify to scrape gaming trend data across platforms.

  1. Create your free account at Apify
  2. Go to Settings > Integrations and copy your Personal API Token
  3. Store it securely:
   export APIFY_TOKEN=apify_api_xxxxxxxxxxxxxxxx

Step 2: Set Up Your Video Engine

This skill uses InVideo AI to produce gaming content videos.

  1. Create your account at InVideo AI
  2. Choose a plan with API access
  3. Copy your API key:
   export INVIDEO_API_KEY=iv_api_xxxxxxxxxxxxxxxx

Step 3: Install Dependencies

npm install apify-client axios

Apify Actors Used

ActorWhat It ScrapesGaming Data
Apify Reddit Scraperr/gaming, r/pcgaming, r/PS5, r/NintendoSwitchTrending discussions, controversies, leaks, memes
Apify TikTok Hashtag ScraperGaming TikTok contentViral clips, views, engagement, sounds
Apify YouTube ScraperGaming YouTube channels and searchViews, likes, upload frequency, topics
Apify Twitter ScraperGaming Twitter/XDeveloper announcements, community reactions
Apify Google Trends ScraperSearch interest for gamesRising vs declining games, seasonal patterns
Apify Website Content CrawlerSteam, IGN, MetacriticNew releases, review scores, wishlists
Apify Google News ScraperGaming news sitesBreaking news, controversy, updates
Apify Instagram ScraperGaming InstagramFan art, memes, cosplay trends

Examples

Scrape Trending Gaming Discussions from Reddit

import ApifyClient from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

async function scrapeGamingReddit() {
  const subreddits = [
    "https://www.reddit.com/r/gaming/",
    "https://www.reddit.com/r/pcgaming/",
    "https://www.reddit.com/r/PS5/",
    "https://www.reddit.com/r/NintendoSwitch/",
    "https://www.reddit.com/r/Games/"
  ];

  const run = await client.actor("apify/reddit-scraper").call({
    startUrls: subreddits.map(url => ({ url })),
    maxPostCount: 30,
    maxComments: 10,
    sort: "hot"
  });

  const { items } = await run.dataset().getData();

  // Score by controversy potential (high comments to upvotes ratio = hot take territory)
  return items.map(post => ({
    title: post.title,
    subreddit: post.subreddit,
    score: post.score,
    comments: post.numComments,
    upvoteRatio: post.upvoteRatio,
    controversyScore: post.numComments > 0 ? Math.round(post.numComments / Math.max(post.score, 1) * 100) : 0,
    url: post.url,
    created: post.created,
    flair: post.flair || ''
  })).sort((a, b) => b.controversyScore - a.controversyScore);
}

const trending = await scrapeGamingReddit();
console.log("Top trending gaming topics:");
trending.slice(0, 10).forEach((t, i) => {
  console.log(`${i + 1}. [${t.controversyScore}] ${t.title} (${t.subreddit})`);
});

Scrape Viral Gaming Content from TikTok and YouTube

async function scrapeViralGamingContent(game = "gaming") {
  const hashtags = [game, `${game}tiktok`, 'gamingtiktok', 'gamingclips', 'gamernews'];

  const [ttRun, ytRun] = await Promise.all([
    client.actor("apify/tiktok-hashtag-scraper").call({
      hashtags: hashtags.slice(0, 3),
      resultsPerPage: 30,
      shouldDownloadVideos: false
    }),
    client.actor("apify/youtube-scraper").call({
      searchKeywords: [`${game} 2025`, `${game} news`, `${game} review`],
      maxResults: 30,
      type: "video",
      sortBy: "view_count"
    })
  ]);

  const [tt, yt] = await Promise.all([
    ttRun.dataset().getData(),
    ytRun.dataset().getData()
  ]);

  // Identify top formats
  const formatDetection = (text) => {
    const t = (text || '').toLowerCase();
    if (t.includes('tier list') || t.includes('ranking')) return 'Tier List';
    if (t.includes('review') || t.includes('worth')) return 'Review';
    if (t.includes('vs') || t.includes('versus') || t.includes('better')) return 'Comparison';
    if (t.includes('tip') || t.includes('trick') || t.includes('hack')) return 'Tips & Tricks';
    if (t.includes('news') || t.includes('update') || t.includes('patch')) return 'News/Update';
    if (t.includes('hot take') || t.includes('unpopular') || t.includes('controversial')) return 'Hot Take';
    if (t.includes('compilation') || t.includes('moments') || t.includes('montage')) return 'Compilation';
    return 'Other';
  };

  const tiktokTop = tt.items.sort((a, b) => (b.playCount || 0) - (a.playCount || 0)).slice(0, 15);
  const youtubeTop = yt.items.sort((a, b) => (b.viewCount || 0) - (a.viewCount || 0)).slice(0, 15);

  // Count formats
  const formatCounts = {};
  [...tiktokTop, ...youtubeTop].forEach(v => {
    const format = formatDetection(v.text || v.title);
    formatCounts[format] = (formatCounts[format] || 0) + 1;
  });

  return {
    tiktokTop: tiktokTop.map(v => ({
      text: v.text,
      views: v.playCount,
      likes: v.diggCount,
      shares: v.shareCount,
      format: formatDetection(v.text),
      sound: v.musicMeta?.musicName
    })),
    youtubeTop: youtubeTop.map(v => ({
      title: v.title,
      views: v.viewCount,
      likes: v.likeCount,
      channel: v.channelName,
      format: formatDetection(v.title),
      duration: v.duration
    })),
    winningFormats: Object.entries(formatCounts)
      .sort((a, b) => b[1] - a[1])
      .map(([format, count]) => ({ format, count })),
    trendingSounds: tiktokTop
      .filter(v => v.sound)
      .map(v => v.sound)
      .filter((v, i, a) => a.indexOf(v) === i)
      .slice(0, 5)
  };
}

const gamingContent = await scrapeViralGamingContent("GTA6");
console.log("Winning formats:", gamingContent.winningFormats);

Detect Emerging Games Before They Peak

async function detectEmergingGames() {
  // Scrape Reddit for rising discussions
  const redditRun = await client.actor("apify/reddit-search-scraper").call({
    queries: ["new game 2025", "upcoming game", "game announcement", "hidden gem game"],
    maxItems: 50
  });

  // Scrape Google Trends for rising game searches
  const trendsRun = await client.actor("apify/google-trends-scraper").call({
    searchTerms: ["new video game", "game release 2025", "best game 2025"],
    geo: "US",
    timeRange: "past7Days"
  });

  // Scrape YouTube for low-view-count videos on trending topics (content gap)
  const ytRun = await client.actor("apify/youtube-scraper").call({
    searchKeywords: ["new game 2025 review"],
    maxResults: 30,
    type: "video",
    sortBy: "date"
  });

  const [reddit, trends, yt] = await Promise.all([
    redditRun.dataset().getData(),
    trendsRun.dataset().getData(),
    ytRun.dataset().getData()
  ]);

  // Find games mentioned in Reddit with high engagement but few YouTube videos
  const gameNames = new Set();
  reddit.items.forEach(post => {
    const words = (post.title || '').split(/\s+/);
    // Simple heuristic: capitalized multi-word phrases are likely game names
    words.forEach((w, i) => {
      if (w.length > 3 && w[0] === w[0].toUpperCase() && words[i + 1]?.[0] === words[i + 1]?.[0]?.toUpperCase()) {
        gameNames.add(`${w} ${words[i + 1]}`);
      }
    });
  });

  // Check which have few YouTube results (content gap = opportunity)
  const lowCompetition = yt.items
    .filter(v => (v.viewCount || 0) < 10000)
    .map(v => v.title);

  return {
    emergingTopics: reddit.items
      .sort((a, b) => (b.score || 0) - (a.score || 0))
      .slice(0, 10)
      .map(p => ({ title: p.title, score: p.score, comments: p.numComments })),
    potentialGameNames: [...gameNames].slice(0, 20),
    contentGaps: lowCompetition.slice(0, 10),
    searchTrends: trends.items?.slice(0, 10)
  };
}

const emerging = await detectEmergingGames();
console.log("Emerging topics:", emerging.emergingTopics.slice(0, 5));
console.log("Content gaps:", emerging.contentGaps.slice(0, 5));

Generate Gaming Video Scripts with AI

import axios from 'axios';

async function generateGamingScripts(trendData, gameTopic, count = 5) {
  const topHooks = trendData.tiktokTop?.slice(0, 5).map(v =>
    `"${(v.text || '').substring(0, 80)}" (${(v.views || 0).toLocaleString()} views)`
  ).join('\
') || 'No TikTok data';

  const formats = trendData.winningFormats?.map(f => `${f.format} (${f.count}x)`).join(', ') || 'Mixed';

  const prompt = `You are a viral gaming content creator. Generate ${count} short-form video scripts about "${gameTopic}".

VIRAL DATA (from real top-performing gaming videos):
Top hooks:
${topHooks}

Winning formats: ${formats}

RULES FOR EACH SCRIPT:
- Hook in first 2 seconds (gaming audiences scroll FAST)
- 100 to 160 words (30 to 45 second video for gaming)
- Use one of these proven formats: Hot Take, Tier List, "Things You Missed", News Reaction, Tips
- Include gaming-specific language (no corporate tone)
- Each script gets 2 hook variations (A/B test)
- End with engagement CTA ("drop your rank in comments", "follow for daily gaming news")
- Include 5 hashtags per script

FORMAT:
SCRIPT [number]: [title]
FORMAT: [format type]
HOOK A: [hook variation 1]
HOOK B: [hook variation 2]
BODY: [script body]
CTA: [call to action]
HASHTAGS: [5 hashtags]

Generate all ${count} scripts now.`;

  const { data } = await axios.post('https://api.anthropic.com/v1/messages', {
    model: "claude-sonnet-4-20250514",
    max_tokens: 2000,
    messages: [{ role: "user", content: prompt }]
  }, {
    headers: {
      'x-api-key': process.env.CLAUDE_API_KEY,
      'anthropic-version': '2023-06-01'
    }
  });

  return data.content[0].text;
}

const scripts = await generateGamingScripts(gamingContent, "GTA 6", 5);
console.log(scripts);

Produce Gaming Videos with InVideo AI

const invideo = axios.create({
  baseURL: 'https://api.invideo.io/v1',
  headers: {
    'Authorization': `Bearer ${process.env.INVIDEO_API_KEY}`,
    'Content-Type': 'application/json'
  }
});

async function produceGamingVideo(script) {
  const response = await invideo.post('/videos/generate', {
    script: script,
    format: "9:16",
    duration: "short",
    style: "dynamic",
    voiceover: {
      enabled: true,
      voice: "en-US-male-1",
      speed: 1.15 // gaming audience prefers fast pacing
    },
    captions: {
      enabled: true,
      style: "bold-bottom",
      highlight: true
    },
    music: {
      enabled: true,
      mood: "energetic",
      volume: 0.3
    }
  });

  const videoId = response.data.videoId;

  let exportUrl = null;
  while (!exportUrl) {
    await new Promise(r => setTimeout(r, 5000));
    const status = await invideo.get(`/videos/${videoId}/status`);
    if (status.data.state === "completed") exportUrl = status.data.exportUrl;
    if (status.data.state === "failed") throw new Error("Video generation failed");
  }

  return { videoId, exportUrl };
}

Monetization Analysis

async function analyzeMonetization(game, youtubeData) {
  // Estimate CPM by niche (gaming CPMs are $3-8)
  const estimatedCPM = 5.50;

  const channelAnalysis = youtubeData.youtubeTop.map(v => {
    const estimatedRevenue = Math.round((v.views / 1000) * estimatedCPM * 100) / 100;
    return {
      title: v.title,
      channel: v.channel,
      views: v.views,
      estimatedAdRevenue: estimatedRevenue,
      format: v.format
    };
  });

  // Best monetization formats
  const formatRevenue = {};
  channelAnalysis.forEach(v => {
    if (!formatRevenue[v.format]) formatRevenue[v.format] = { totalViews: 0, count: 0 };
    formatRevenue[v.format].totalViews += v.views;
    formatRevenue[v.format].count++;
  });

  const bestFormats = Object.entries(formatRevenue)
    .map(([format, data]) => ({
      format,
      avgViews: Math.round(data.totalViews / data.count),
      estimatedRevenuePer: Math.round((data.totalViews / data.count / 1000) * estimatedCPM * 100) / 100
    }))
    .sort((a, b) => b.avgViews - a.avgViews);

  return {
    estimatedCPM,
    topEarningVideos: channelAnalysis.sort((a, b) => b.estimatedAdRevenue - a.estimatedAdRevenue).slice(0, 5),
    bestFormatsForRevenue: bestFormats,
    monthlyPotential: {
      "1_video_per_day": Math.round(30 * bestFormats[0]?.estimatedRevenuePer || 0),
      "3_videos_per_week": Math.round(12 * bestFormats[0]?.estimatedRevenuePer || 0)
    },
    sponsorshipAngle: `Gaming channels with 10K+ subs covering ${game} can charge $500-2000 per sponsored video`
  };
}

const monetization = await analyzeMonetization("GTA 6", gamingContent);
console.log("Monthly potential (daily uploads):", `$${monetization.monthlyPotential["1_video_per_day"]}`);
console.log("Best format for revenue:", monetization.bestFormatsForRevenue[0]);

Full Pipeline: Research, Script, Produce, Calendar

import { writeFileSync } from 'fs';

async function fullGamingContentPipeline(game, videoCount = 5) {
  console.log(`Starting Gaming Content Pipeline for: ${game}`);

  // 1. Scrape trends
  const reddit = await scrapeGamingReddit();
  const content = await scrapeViralGamingContent(game);
  console.log(`Step 1: ${reddit.length} Reddit topics + ${content.tiktokTop.length + content.youtubeTop.length} viral videos analyzed`);

  // 2. Generate scripts
  const scripts = await generateGamingScripts(content, game, videoCount);
  console.log(`Step 2: ${videoCount} scripts generated`);

  // 3. Monetization analysis
  const money = await analyzeMonetization(game, content);
  console.log(`Step 3: Revenue potential $${money.monthlyPotential["1_video_per_day"]}/month`);

  // 4. Export report
  const report = {
    game,
    generatedAt: new Date().toISOString(),
    trendingTopics: reddit.slice(0, 15),
    viralContent: content,
    scripts,
    monetization: money,
    contentCalendar: Array.from({ length: 30 }, (_, i) => ({
      day: i + 1,
      topic: reddit[i % reddit.length]?.title || `${game} content day ${i + 1}`,
      format: content.winningFormats[i % content.winningFormats.length]?.format || 'Hot Take',
      platform: ['tiktok', 'youtube_shorts', 'instagram_reels'][i % 3]
    }))
  };

  writeFileSync(`gaming-content-${game.replace(/\s+/g, '-')}-${Date.now()}.json`, JSON.stringify(report, null, 2));
  console.log(`Pipeline complete`);

  return report;
}

await fullGamingContentPipeline("GTA 6", 5);

What Makes This Different

FeatureGeneric Content ToolThis Skill
Trend detectionManual browsingReddit + TikTok + YouTube scraping in parallel
Content gapsGuessworkData-driven: high demand topics with low supply
Script writingGeneric promptsBased on real viral hooks from gaming content
Video productionManual editingAI-produced with gaming-optimized pacing
MonetizationNoneCPM estimates + sponsorship angles + format ROI
CalendarNone30-day plan mapped to game releases

Pro Tips

  1. "Hot Take" format consistently outperforms all other gaming content formats on TikTok
  2. Cover new game announcements within 4 hours for maximum algorithm boost
  3. Reddit controversies with high comment-to-upvote ratios are your best video topics
  4. Gaming audiences prefer 1.15x voiceover speed. Slower feels boring to this demographic
  5. Cross-post the same video to TikTok, YouTube Shorts AND Instagram Reels. Different audiences on each
  6. Tier list videos have the highest comment count because everyone disagrees. Comments = algorithm fuel

Cost Estimate

ActionToolCost
Scrape 5 gaming subredditsApify~$0.08
Scrape TikTok + YouTube gamingApify~$0.12
Detect emerging gamesApify~$0.10
Generate 5 scriptsClaude AI~$0.05
Produce 5 videosInVideo AIPlan dependent
Full pipelineTotalUnder $1 for research + scripts

Error Handling

try {
  const run = await client.actor("apify/reddit-scraper").call(input);
  const dataset = await run.dataset().getData();
  return dataset.items;
} catch (error) {
  if (error.statusCode === 401) throw new Error("Invalid Apify token. Get yours at https://www.apify.com?fpr=dx06p");
  if (error.statusCode === 429) throw new Error("Rate limit. Reduce batch size.");
  throw error;
}

Requirements

  • An Apify account with API token
  • An InVideo AI account for video production
  • Claude API key for script generation
  • Node.js 18+ with apify-client and axios

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

73.24%
按下载量换算649

安全审计

VirusTotal

通过

ClawScan

可疑

Static analysis

通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills