--- name: influencer description: Research influencers on Instagram, TikTok, and X/Twitter through your browser compatibility: "Designed for Vellum personal assistants" metadata: emoji: "🔍" vellum: category: "browsing" display-name: "Influencer Research" includes: ["vellum-browser-use"] --- Use browser automation for collection and `host_bash` helper scripts for deterministic parsing, scoring, and comparison. All browser operations are executed through the `assistant browser` CLI, invoked via `host_bash`. ## Required tools - `host_bash` for `assistant browser` CLI commands and helper scripts in `scripts/`. ## Step graph (state machine) ### Step 1: Route intent Use deterministic routing when intent is unclear: ```bash bun {baseDir}/scripts/influencer-intent.ts --request "" --has-candidates --has-shortlist ``` Use returned `step` to route to `discover`, `enrich_profile`, or `compare_shortlist`. ### Step 2: Discover candidates (`discover`) #### Instagram 1. Navigate to keyword search/post surfaces. 2. Snapshot + extract: ```bash assistant browser --session influencer --json snapshot assistant browser --session influencer --json extract --include-links ``` 3. Parse candidates: ```bash bun {baseDir}/scripts/influencer-parse-candidates.ts --platform instagram --input-json '' ``` #### TikTok 1. Navigate to user search page for query. 2. Use `assistant browser --session influencer scroll` + `assistant browser --session influencer wait-for` to load additional candidates. 3. Extract and parse: ```bash bun {baseDir}/scripts/influencer-parse-candidates.ts --platform tiktok --input-json '' ``` #### X/Twitter 1. Navigate to people search view (`f=user`). 2. Snapshot + extract: ```bash assistant browser --session influencer --json snapshot assistant browser --session influencer --json extract --include-links ``` 3. Parse: ```bash bun {baseDir}/scripts/influencer-parse-candidates.ts --platform twitter --input-json '' ``` ### Step 3: Enrich profiles (`enrich_profile`) For each selected candidate profile: 1. Navigate to profile URL. 2. Snapshot + extract profile metadata (bio, follower counts, verification indicators). 3. Score with criteria: ```bash bun {baseDir}/scripts/influencer-score.ts --query "" --min-followers --max-followers --verified-only --input-json '' ``` 4. If themes are missing, enrich using: ```bash bun {baseDir}/scripts/influencer-theme-extract.ts --bio "" --query "" ``` ### Step 4: Build shortlist (`compare_shortlist`) Generate deterministic comparison output: ```bash bun {baseDir}/scripts/influencer-compare.ts --limit --input-json '' ``` Present results grouped by platform with: - Username / display name - Followers (normalized) - Verification status - Theme highlights - Profile URL ## Retry and fallback policy - Retry budget: 3 attempts for each state-changing browser step. - After any navigation or click that changes DOM, run fresh `assistant browser --session influencer --json snapshot`. - If blocked by sign-in wall or challenge after retries, ask user to complete that step and resume from latest successful state. ## Platform notes - Instagram search often surfaces posts/reels before profiles; use author-handle pivot logic. - TikTok search can require scroll cycles to load profile cards. - X/Twitter should use people-search surfaces to avoid irrelevant mixed-content feeds. ## Example helper payload shape ```json { "phase": "discover", "context": { "platform": "instagram" }, "extracted": { "text": "...", "links": ["https://www.instagram.com/example/"] }, "userIntent": "find fitness creators" } ```