crawl_config.json 5.64 KB
{
  "skill_name": "interactive-video-selector",
  "version": "1.0.0",
  "crawl_time": "2026-04-13T02:40:00Z",
  "sources": [
    {
      "id": "youtube_trending",
      "name": "YouTube Data API v3 - Trending",
      "type": "api",
      "endpoint": "https://www.googleapis.com/youtube/v3/videos",
      "method": "GET",
      "params": {
        "part": "snippet,statistics,contentDetails",
        "chart": "mostPopular",
        "regionCode": "US",
        "maxResults": 50,
        "key": "${YOUTUBE_API_KEY}"
      },
      "headers": {
        "Accept": "application/json",
        "User-Agent": "Mozilla/5.0 (compatible; ArenaSK-Bot/1.0)"
      },
      "parse_rules": {
        "list_path": "items",
        "fields": {
          "video_id": "id",
          "title": "snippet.title",
          "channel": "snippet.channelTitle",
          "published_at": "snippet.publishedAt",
          "duration": "contentDetails.duration",
          "view_count": "statistics.viewCount",
          "like_count": "statistics.likeCount"
        }
      },
      "rate_limit": {
        "requests_per_day": 10000,
        "requests_per_second": 10,
        "sleep_ms": 2000
      },
      "priority": 1
    },
    {
      "id": "youtube_search",
      "name": "YouTube Data API v3 - Search",
      "type": "api",
      "endpoint": "https://www.googleapis.com/youtube/v3/search",
      "method": "GET",
      "params": {
        "part": "snippet",
        "q": "drama short film | comedy skit | relationship advice | reality show clip",
        "type": "video",
        "videoDuration": "medium",
        "maxResults": 50,
        "key": "${YOUTUBE_API_KEY}"
      },
      "headers": {
        "Accept": "application/json"
      },
      "parse_rules": {
        "list_path": "items",
        "fields": {
          "video_id": "id.videoId",
          "title": "snippet.title",
          "channel": "snippet.channelTitle",
          "published_at": "snippet.publishedAt"
        }
      },
      "rate_limit": {
        "requests_per_second": 5,
        "sleep_ms": 2000
      },
      "priority": 2
    },
    {
      "id": "tiktok_research_api",
      "name": "TikTok Research API - Video Info",
      "type": "api",
      "endpoint": "https://open-api.tiktok.com/research/video/query/",
      "method": "POST",
      "headers": {
        "Authorization": "Bearer ${TIKTOK_RESEARCH_TOKEN}",
        "Content-Type": "application/json"
      },
      "body": {
        "query": {
          "and": [
            {
              "operation": "EQ",
              "field_name": "region_code",
              "field_values": [
                "US"
              ]
            }
          ]
        },
        "max_count": 100
      },
      "parse_rules": {
        "list_path": "data.videos",
        "fields": {
          "video_id": "id",
          "title": "title",
          "region": "region_code",
          "view_count": "view_count",
          "like_count": "like_count",
          "duration": "duration",
          "create_time": "create_time"
        }
      },
      "rate_limit": {
        "requests_per_day": 600,
        "sleep_ms": 3000
      },
      "priority": 3
    },
    {
      "id": "reelshort_web",
      "name": "ReelShort Web - Popular Dramas",
      "type": "web_scraper",
      "endpoint": "https://www.reelshort.com/",
      "method": "GET",
      "headers": {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
        "Accept-Language": "en-US,en;q=0.9"
      },
      "parse_rules": {
        "list_selector": "[data-testid='drama-card']",
        "fields": {
          "title": ".drama-title",
          "tag": ".drama-tag",
          "cover_url": "img[src]"
        }
      },
      "rate_limit": {
        "requests_per_minute": 10,
        "sleep_ms": 3000,
        "respect_robots_txt": true
      },
      "priority": 4
    },
    {
      "id": "dramabox_web",
      "name": "DramaBox Web - Trending",
      "type": "web_scraper",
      "endpoint": "https://www.dramabox.com/",
      "method": "GET",
      "headers": {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
      },
      "parse_rules": {
        "list_selector": ".drama-item",
        "fields": {
          "title": ".title",
          "tags": ".tags"
        }
      },
      "rate_limit": {
        "requests_per_minute": 10,
        "sleep_ms": 3000,
        "respect_robots_txt": true
      },
      "priority": 5
    },
    {
      "id": "douban_drama_topic",
      "name": "豆瓣短剧/互动剧话题",
      "type": "web_scraper",
      "endpoint": "https://www.douban.com/group/search",
      "method": "GET",
      "params": {
        "cat": 1013,
        "q": "短剧 互动剧"
      },
      "headers": {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
        "Referer": "https://www.douban.com/"
      },
      "parse_rules": {
        "list_selector": ".result .title",
        "fields": {
          "title": "a",
          "url": "a[href]"
        }
      },
      "rate_limit": {
        "requests_per_minute": 5,
        "sleep_ms": 3000,
        "respect_robots_txt": true
      },
      "priority": 6
    }
  ],
  "data_schema": {
    "required_fields": [
      "video_id",
      "title",
      "source_url",
      "crawl_time",
      "score_total",
      "grade",
      "adaptation_plan"
    ],
    "optional_fields": [
      "channel",
      "duration",
      "view_count",
      "like_count",
      "dimension_scores",
      "ai_producibility_score",
      "platform_fit_tags",
      "sbse_framework",
      "predicted_metrics"
    ]
  },
  "output_format": {
    "file": "seed_data.json",
    "encoder": "json",
    "append_timestamp": true
  }
}