{
  "schemaVersion": "1.0",
  "item": {
    "slug": "viral-video-analysis",
    "name": "Viral Video Analysis",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/shawnshenopeninterx/viral-video-analysis",
    "canonicalUrl": "https://clawhub.ai/shawnshenopeninterx/viral-video-analysis",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/viral-video-analysis",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=viral-video-analysis",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/creator-feedback-framework.md",
      "scripts/analyze_video.py",
      "scripts/generate_report.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/viral-video-analysis"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/viral-video-analysis",
    "agentPageUrl": "https://openagent3.xyz/skills/viral-video-analysis/agent",
    "manifestUrl": "https://openagent3.xyz/skills/viral-video-analysis/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/viral-video-analysis/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Requirements",
        "body": "API Key: Requires MEMORIES_API_KEY from Memories.ai\nExternal API: Sends video URLs to https://mavi-backend.memories.ai for transcription\nPython packages: generate_report.py will auto-install fpdf2, pandas, openpyxl if missing"
      },
      {
        "title": "Privacy Note",
        "body": "Video URLs are sent to Memories.ai for transcription\nBatch analysis reads Excel files with creator/ROI data\nReview Memories.ai privacy policy before use"
      },
      {
        "title": "Viral Video Analysis",
        "body": "Analyze videos and provide actionable feedback for creators."
      },
      {
        "title": "Core Insight",
        "body": "High ROI videos: <100 words, ~5s per product, visual-first + background music\nLow ROI videos: >150 words, >15s per product, too much explaining\n\nThe core problem: Creators spend too much time \"selling\" instead of \"showing\".\nRemember: Ads reach non-followers who need to be hooked in 3 seconds."
      },
      {
        "title": "Quantitative Thresholds",
        "body": "Metric✅ GOOD (High ROI)❌ BAD (Low ROI)Word Count<100 words>150 wordsTime per Product~5 seconds>15 secondsShows All Products UpfrontYESNOFormatVisual + MusicTalking/Explaining"
      },
      {
        "title": "Setup",
        "body": "Requires Memories.ai API key. Get one at https://api-tools.memories.ai\n\nSet environment variable:\n\nexport MEMORIES_API_KEY=\"sk-mavi-your-key-here\""
      },
      {
        "title": "1. Get Audio Transcript (Word Count)",
        "body": "import os\nimport requests\n\nBASE_URL = \"https://mavi-backend.memories.ai/serve/api/v2\"\nAPI_KEY = os.environ.get(\"MEMORIES_API_KEY\")\nHEADERS = {\"Authorization\": API_KEY}\n\ndef get_transcript(url: str, platform: str = \"instagram\"):\n    resp = requests.post(\n        f\"{BASE_URL}/{platform}/video/transcript\",\n        headers=HEADERS,\n        json={\"video_url\": url, \"channel\": \"rapid\"},\n        timeout=60\n    )\n    data = resp.json()\n    if data.get(\"success\"):\n        text = data[\"data\"][\"transcripts\"][0][\"text\"]\n        return {\"text\": text, \"word_count\": len(text.split())}\n    return {\"error\": data.get(\"msg\")}\n\n# Platform detection\ndef detect_platform(url):\n    url = url.lower()\n    if \"tiktok\" in url: return \"tiktok\"\n    if \"instagram\" in url: return \"instagram\"\n    if \"twitter\" in url or \"x.com\" in url: return \"twitter\"\n    return \"youtube\""
      },
      {
        "title": "2. Analyze Against Thresholds",
        "body": "def analyze_video(url):\n    platform = detect_platform(url)\n    result = get_transcript(url, platform)\n    \n    if \"error\" in result:\n        return result\n    \n    word_count = result[\"word_count\"]\n    \n    return {\n        \"url\": url,\n        \"word_count\": word_count,\n        \"word_count_status\": \"GOOD\" if word_count < 100 else \"OK\" if word_count < 150 else \"BAD\",\n        \"issues\": [],\n        \"transcript_preview\": result[\"text\"][:200]\n    }"
      },
      {
        "title": "3. Generate Creator Feedback",
        "body": "Based on analysis, provide specific feedback:\n\nIf word_count > 150:\n\n\"Your video has {X} words. Top performers use <100 words. Try replacing verbal explanations with visual demonstrations - stretch the fabric, spin around, show the fit.\"\n\nIf pace is slow (>15s per product):\n\n\"You're spending ~{X} seconds per product. High-performers show each item in ~5 seconds. Try quick cuts - one outfit = one scene transition.\"\n\nIf no upfront overview:\n\n\"Show ALL products in the first 2-3 seconds. Let viewers see the full haul immediately - it sets expectations and keeps them watching.\"\n\nAlways remind:\n\n\"Remember: Ads reach people who DON'T follow you. You have 3 seconds to grab a stranger's attention - don't waste it on intros.\""
      },
      {
        "title": "The Exception: Kirstin Approach",
        "body": "Detailed verbal reviews CAN work if:\n\nShow all products FIRST before explaining\nUse low-pressure language: \"if it doesn't fit, just return it\"\nFocus on introducing products, not \"selling\" them\n\nWord count: 373 words can still perform if structure is right."
      },
      {
        "title": "GOOD Examples (share with creators)",
        "body": "instagram.com/reel/Cy1zs4gLGFG - 46 words, 15s for 3 outfits, pure visual\ninstagram.com/reel/DEybxPbNeOl - 56 words, quick showcase, background music\ninstagram.com/reel/DHHr5o2s1LG - 91 words, fast cuts, shows product features\ninstagram.com/reel/DBd6NxbOeBb - 91 words, demonstrates fit visually"
      },
      {
        "title": "EXCEPTION Example (detailed review done RIGHT)",
        "body": "instagram.com/reel/DCQJ355RWSE - 373 words but works: shows all upfront, low-pressure"
      },
      {
        "title": "BAD Example (avoid)",
        "body": "instagram.com/reel/DRCdjLlDcla - 168 words, 30s per outfit, too much explaining"
      },
      {
        "title": "Feedback Template",
        "body": "Hi [Creator],\n\nThanks for your video! Here's some feedback to help improve performance:\n\n**What's Working:**\n- [Specific positive]\n\n**Opportunities:**\n1. **Pacing**: Currently ~{X}s per product. Try ~5s per item with quick cuts.\n2. **Word Count**: {X} words detected. Top performers use <100. Show more, tell less.\n3. **Opening**: Consider showing all products in first 2-3 seconds.\n\n**Key Reminder:**\nAds reach people who don't follow you yet. They need to be hooked in 3 seconds!\n\n**Reference Videos:**\n[Link to good example]\n\nBest,\n[Team]"
      },
      {
        "title": "Batch Analysis",
        "body": "def analyze_batch(excel_path, sample_size=20):\n    import pandas as pd\n    df = pd.read_excel(excel_path)\n    df.columns = [c.lower().replace('sum of ', '').replace(' ', '_') for c in df.columns]\n    \n    # Get top and bottom performers\n    top = df.nlargest(sample_size // 2, 'roi')\n    bottom = df.nsmallest(sample_size // 2, 'roi')\n    \n    results = []\n    for _, row in pd.concat([top, bottom]).iterrows():\n        url = row.get('video_url') or row.get('row_labels')\n        analysis = analyze_video(url)\n        analysis['roi'] = row['roi']\n        analysis['tier'] = 'TOP' if row['roi'] > 1.0 else 'BOTTOM'\n        results.append(analysis)\n    \n    return results"
      },
      {
        "title": "Quick Commands",
        "body": "\"Analyze this video: [url]\" → Word count + feedback\n\"Why is this video underperforming?\" → Detailed analysis\n\"Give me feedback for [creator]\" → Coaching template\n\"Compare these videos\" → Side-by-side analysis\n\"Analyze my performance data\" → Batch analysis from Excel"
      }
    ],
    "body": "Requirements\nAPI Key: Requires MEMORIES_API_KEY from Memories.ai\nExternal API: Sends video URLs to https://mavi-backend.memories.ai for transcription\nPython packages: generate_report.py will auto-install fpdf2, pandas, openpyxl if missing\nPrivacy Note\nVideo URLs are sent to Memories.ai for transcription\nBatch analysis reads Excel files with creator/ROI data\nReview Memories.ai privacy policy before use\nViral Video Analysis\n\nAnalyze videos and provide actionable feedback for creators.\n\nCore Insight\n\nHigh ROI videos: <100 words, ~5s per product, visual-first + background music Low ROI videos: >150 words, >15s per product, too much explaining\n\nThe core problem: Creators spend too much time \"selling\" instead of \"showing\". Remember: Ads reach non-followers who need to be hooked in 3 seconds.\n\nQuantitative Thresholds\nMetric\t✅ GOOD (High ROI)\t❌ BAD (Low ROI)\nWord Count\t<100 words\t>150 words\nTime per Product\t~5 seconds\t>15 seconds\nShows All Products Upfront\tYES\tNO\nFormat\tVisual + Music\tTalking/Explaining\nAnalysis Workflow\nSetup\n\nRequires Memories.ai API key. Get one at https://api-tools.memories.ai\n\nSet environment variable:\n\nexport MEMORIES_API_KEY=\"sk-mavi-your-key-here\"\n\n1. Get Audio Transcript (Word Count)\nimport os\nimport requests\n\nBASE_URL = \"https://mavi-backend.memories.ai/serve/api/v2\"\nAPI_KEY = os.environ.get(\"MEMORIES_API_KEY\")\nHEADERS = {\"Authorization\": API_KEY}\n\ndef get_transcript(url: str, platform: str = \"instagram\"):\n    resp = requests.post(\n        f\"{BASE_URL}/{platform}/video/transcript\",\n        headers=HEADERS,\n        json={\"video_url\": url, \"channel\": \"rapid\"},\n        timeout=60\n    )\n    data = resp.json()\n    if data.get(\"success\"):\n        text = data[\"data\"][\"transcripts\"][0][\"text\"]\n        return {\"text\": text, \"word_count\": len(text.split())}\n    return {\"error\": data.get(\"msg\")}\n\n# Platform detection\ndef detect_platform(url):\n    url = url.lower()\n    if \"tiktok\" in url: return \"tiktok\"\n    if \"instagram\" in url: return \"instagram\"\n    if \"twitter\" in url or \"x.com\" in url: return \"twitter\"\n    return \"youtube\"\n\n2. Analyze Against Thresholds\ndef analyze_video(url):\n    platform = detect_platform(url)\n    result = get_transcript(url, platform)\n    \n    if \"error\" in result:\n        return result\n    \n    word_count = result[\"word_count\"]\n    \n    return {\n        \"url\": url,\n        \"word_count\": word_count,\n        \"word_count_status\": \"GOOD\" if word_count < 100 else \"OK\" if word_count < 150 else \"BAD\",\n        \"issues\": [],\n        \"transcript_preview\": result[\"text\"][:200]\n    }\n\n3. Generate Creator Feedback\n\nBased on analysis, provide specific feedback:\n\nIf word_count > 150:\n\n\"Your video has {X} words. Top performers use <100 words. Try replacing verbal explanations with visual demonstrations - stretch the fabric, spin around, show the fit.\"\n\nIf pace is slow (>15s per product):\n\n\"You're spending ~{X} seconds per product. High-performers show each item in ~5 seconds. Try quick cuts - one outfit = one scene transition.\"\n\nIf no upfront overview:\n\n\"Show ALL products in the first 2-3 seconds. Let viewers see the full haul immediately - it sets expectations and keeps them watching.\"\n\nAlways remind:\n\n\"Remember: Ads reach people who DON'T follow you. You have 3 seconds to grab a stranger's attention - don't waste it on intros.\"\n\nThe Exception: Kirstin Approach\n\nDetailed verbal reviews CAN work if:\n\nShow all products FIRST before explaining\nUse low-pressure language: \"if it doesn't fit, just return it\"\nFocus on introducing products, not \"selling\" them\n\nWord count: 373 words can still perform if structure is right.\n\nReference Videos\nGOOD Examples (share with creators)\ninstagram.com/reel/Cy1zs4gLGFG - 46 words, 15s for 3 outfits, pure visual\ninstagram.com/reel/DEybxPbNeOl - 56 words, quick showcase, background music\ninstagram.com/reel/DHHr5o2s1LG - 91 words, fast cuts, shows product features\ninstagram.com/reel/DBd6NxbOeBb - 91 words, demonstrates fit visually\nEXCEPTION Example (detailed review done RIGHT)\ninstagram.com/reel/DCQJ355RWSE - 373 words but works: shows all upfront, low-pressure\nBAD Example (avoid)\ninstagram.com/reel/DRCdjLlDcla - 168 words, 30s per outfit, too much explaining\nFeedback Template\nHi [Creator],\n\nThanks for your video! Here's some feedback to help improve performance:\n\n**What's Working:**\n- [Specific positive]\n\n**Opportunities:**\n1. **Pacing**: Currently ~{X}s per product. Try ~5s per item with quick cuts.\n2. **Word Count**: {X} words detected. Top performers use <100. Show more, tell less.\n3. **Opening**: Consider showing all products in first 2-3 seconds.\n\n**Key Reminder:**\nAds reach people who don't follow you yet. They need to be hooked in 3 seconds!\n\n**Reference Videos:**\n[Link to good example]\n\nBest,\n[Team]\n\nBatch Analysis\ndef analyze_batch(excel_path, sample_size=20):\n    import pandas as pd\n    df = pd.read_excel(excel_path)\n    df.columns = [c.lower().replace('sum of ', '').replace(' ', '_') for c in df.columns]\n    \n    # Get top and bottom performers\n    top = df.nlargest(sample_size // 2, 'roi')\n    bottom = df.nsmallest(sample_size // 2, 'roi')\n    \n    results = []\n    for _, row in pd.concat([top, bottom]).iterrows():\n        url = row.get('video_url') or row.get('row_labels')\n        analysis = analyze_video(url)\n        analysis['roi'] = row['roi']\n        analysis['tier'] = 'TOP' if row['roi'] > 1.0 else 'BOTTOM'\n        results.append(analysis)\n    \n    return results\n\nQuick Commands\n\"Analyze this video: [url]\" → Word count + feedback\n\"Why is this video underperforming?\" → Detailed analysis\n\"Give me feedback for [creator]\" → Coaching template\n\"Compare these videos\" → Side-by-side analysis\n\"Analyze my performance data\" → Batch analysis from Excel"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/shawnshenopeninterx/viral-video-analysis",
    "publisherUrl": "https://clawhub.ai/shawnshenopeninterx/viral-video-analysis",
    "owner": "shawnshenopeninterx",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/viral-video-analysis",
    "downloadUrl": "https://openagent3.xyz/downloads/viral-video-analysis",
    "agentUrl": "https://openagent3.xyz/skills/viral-video-analysis/agent",
    "manifestUrl": "https://openagent3.xyz/skills/viral-video-analysis/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/viral-video-analysis/agent.md"
  }
}