← 返回
未分类 中文

scrape-creator-profile

Scrape and extract structured data from creator profiles across platforms such as YouTube, Instagram, TikTok, Twitter/X, LinkedIn, Twitch, and personal websi...
从YouTube、Instagram、TikTok、Twitter/X、LinkedIn、Twitch等平台以及个人网站的创作者资料中抓取并提取结构化数据。
ahqazi-dev
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 262
下载
💾 0
安装
1
版本
#latest

概述

Scrape Creator Profile

Extract structured profile data from a content creator's public page.

Returns a normalized JSON object regardless of platform.


When to Use This Skill

Use this skill for any request that involves:

  • Looking up a creator, influencer, streamer, or public figure's profile
  • Fetching follower counts, bio, links, recent content, or engagement stats
  • Comparing multiple creators
  • Building lead lists or research reports about creators
  • Monitoring a creator's stats over time

If the user provides a URL, jump straight to Step 2. If they only give a

name or handle, start at Step 1.


Step 1 — Resolve the Profile URL

If the user gave a username/handle without a URL:

  1. Construct the likely URL using the platform mapping below.
  2. If the platform is ambiguous, try the most likely one first (see detection

hints), then ask the user to confirm.

Platform URL Patterns

PlatformURL PatternExample
----------------------------------------------------------------------------------------------------
YouTubehttps://www.youtube.com/@{handle}https://www.youtube.com/@mkbhd
Instagramhttps://www.instagram.com/{handle}/https://www.instagram.com/natgeo/
TikTokhttps://www.tiktok.com/@{handle}https://www.tiktok.com/@charlidamelio
Twitter / Xhttps://x.com/{handle}https://x.com/sama
LinkedInhttps://www.linkedin.com/in/{handle}/https://www.linkedin.com/in/satyanadella/
Twitchhttps://www.twitch.tv/{handle}https://www.twitch.tv/shroud
Substackhttps://{handle}.substack.comhttps://astralcodexten.substack.com
GitHubhttps://github.com/{handle}https://github.com/torvalds
Patreonhttps://www.patreon.com/{handle}https://www.patreon.com/kurzgesagt

Detection Hints

  • @ prefix with short handle → likely Twitter/X or Instagram
  • "yt:" or "youtube" keyword → YouTube
  • "channel", "subscribe", "views" → YouTube
  • "stream", "live" → Twitch
  • "reel", "story", "ig:" → Instagram
  • "tiktok", "tt:" or handle with numbers → TikTok
  • Professional title + name → LinkedIn

Step 2 — Fetch the Profile Page

2a. Try plain web_fetch first

web_fetch(url)

Check if the response contains useful profile data (bio, follower count, etc.).

If the content is mostly JS placeholders, empty

s, or a login wall,

move to 2b.

2b. Use browser (managed mode) for JS-heavy sites

Platforms that almost always require browser mode:

  • Instagram — always requires browser
  • TikTok — always requires browser
  • LinkedIn — login wall without session; use browser if session cookies available
  • YouTube — web_fetch usually works; use browser if blocked

Browser steps:

  1. Open the profile URL in managed browser mode.
  2. Wait for the main content container to render (look for follower/subscriber

counts, bio text).

  1. Take a DOM snapshot.
  2. Extract data from the snapshot using the field map in Step 3.

2c. Apify fallback (if APIFY_API_TOKEN is set)

For persistent blocks, use the Apify actor for that platform. See

references/apify-actors.md for actor IDs and call patterns.


Step 3 — Extract Structured Fields

Parse the fetched content and populate the following fields. Mark any missing

field as null — do not guess.

{
  "platform": "string",          // youtube | instagram | tiktok | twitter | linkedin | twitch | substack | github | patreon | other
  "handle": "string",            // @-prefixed username
  "display_name": "string",      // Full display name
  "verified": true | false,
  "bio": "string",               // Profile description / about text
  "profile_url": "string",       // Canonical URL used to scrape
  "avatar_url": "string | null",
  "external_links": ["string"],  // Any links in bio or link-in-bio
  "stats": {
    "followers": "number | null",
    "following": "number | null",
    "subscribers": "number | null",
    "total_views": "number | null",
    "total_posts": "number | null",
    "monthly_listeners": "number | null",  // Spotify-style, if applicable
    "engagement_rate": "number | null"     // Percentage, if computable
  },
  "recent_content": [
    {
      "title": "string | null",
      "url": "string",
      "published_at": "ISO 8601 string | null",
      "views": "number | null",
      "likes": "number | null",
      "comments": "number | null"
    }
    // Up to 5 most recent items
  ],
  "contact_info": {
    "email": "string | null",    // Only if publicly listed in bio/links
    "website": "string | null"
  },
  "scraped_at": "ISO 8601 UTC timestamp"
}

> Privacy rule: Only capture fields that are explicitly public on the

> profile page. Do not infer, deduce, or cross-reference private information.

> Do not store or relay phone numbers even if visible.

Platform-specific extraction hints

See references/platform-selectors.md for CSS selectors and JSON-LD paths

per platform. Quick reference:

  • YouTube: subscriber count in #subscriber-count or meta itemprop=interactionCount; description in #description-inner
  • Twitter/X: follower count in [data-testid="UserProfileHeader_Items"]; bio in [data-testid="UserDescription"]
  • Instagram: JSON blob in window._sharedData or