#233 by GitHub stars

browser-act/skills

Browser automation CLI built for AI agents. Break through anti-bot walls, hand off to humans across platforms when stuck. Parallel multi-task execution, independent multi-session operation, isolated multi-account browsing.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

browser-act/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

browser-act-skill-forge/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/1688-product-detail/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/airbnb-listing-detail/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/airbnb-search-listing/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/amazon-alexa-qa/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/amazon-asin-lookup-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/amazon-best-selling-products-finder-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/amazon-bestseller-listing/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/amazon-buy-box-monitor-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/amazon-competitor-analyzer/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/amazon-listing-competitor-analysis-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/amazon-product-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/amazon-product-detail/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/amazon-product-search-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/amazon-reviews-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/amazon-search-listing/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/ebay-item-detail/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/ebay-search-listing/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/ebay-sold-listings-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/ecommerce-listing/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/ecommerce-product-detail/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/ecommerce-reviews/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/ecommerce-seller-info/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/etsy-category-listing/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/etsy-keyword-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/etsy-product-detail/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/etsy-shop-catalog/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/goofish-item-detail/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/goofish-search-list/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/taobao-keyword-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/taobao-product-detail/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/taobao-product-reviews/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/taobao-shop-catalog/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/walmart-category-listing/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/walmart-keyword-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/walmart-product-detail/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/ecommerce/walmart-product-reviews/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/business-contact-social-links-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/github-project-contributor-finder-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/google-maps-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/google-maps-contact-extract/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/google-maps-reviews-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/google-maps-search-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/google-social-media-finder/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/indeed-job-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/industry-key-contact-radar-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/linkedin-jobs-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/producthunt-launches/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/social-media-finder-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/trustpilot-company-info/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/lead-generation/youtube-channel-business-email/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/search-research/google-image-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/search-research/google-news-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/search-research/google-search-serp/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/search-research/web-research-assistant/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/search-research/web-search-scraper-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/search-research/webcrawler-deep-crawl/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/facebook-ads-library-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/facebook-groups-scrape-posts/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/facebook-page-posts/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/facebook-page-profile-posts/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/instagram-hashtag-posts/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/instagram-place-posts/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/instagram-post-comments/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/instagram-profile-meta/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/instagram-profile-posts/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/reddit-competitor-analysis-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/reddit-warmup/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/threads-keyword-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/threads-profile-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/threads-user-posts/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/trustpilot-company-info/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/trustpilot-reviews/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/wechat-article-search-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/x-dm-auto-chat/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/x-keyword-comment/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/x-tweet-by-conversation/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/x-tweet-by-handle/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/x-tweet-by-url/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/x-tweet-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/x-tweet-search-by-query/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/xiaohongshu-auto-posting/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/xiaohongshu-note-detail/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/xiaohongshu-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/xiaohongshu-search-full/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/xiaohongshu-user-profile/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/social-listening/zhihu-search-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/douyin-video-search/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/tiktok-hashtag-videos/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/tiktok-profile-videos/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/tiktok-search-videos/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/tiktok-video-detail/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/youtube-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/youtube-batch-transcript-extractor-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/youtube-channel-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/youtube-comments-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/youtube-influencer-finder-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/youtube-search-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/youtube-transcript/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/youtube-transcript-analysis-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/youtube-transcript-extractor-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

solutions/video-platforms/youtube-video-api-skill/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

11c057b03f92 → 11c057b03f92

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 11c057b03f92

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 11c057b03f92101642cadc9f840564574120d184

6.3kGitHub stars
26stars in 7 days
103skills in this repository
3commits in 30 days

Heat

4.4
  • Star growth, last 7 daysAhead of 70% of tracked repositories
  • Star growth, last 24 hoursAhead of 3% of tracked repositories
  • Rank movement, last 7 daysAhead of 52% of tracked repositories
  • Commits, last 30 daysAhead of 64% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Aug 2, 2026Nov 6, 20266,327

Individual skills in this repository

How it works

browser-act

When your agent uses it

Browser automation CLI for AI agents. NEVER run browser-act commands directly via Bash — always invoke this skill first. Use browser-act when a user mentions it by name, includes or asks to run a browser-act CLI command (e.g., browser-act browser list), or to: fetch, view, or extract rendered content from URLs, access pages requiring JavaScript, handle verification prompts, maintain authenticated sessions, fill forms and click through workflows, type, select, upload, take screenshots, capture XHR/fetch/HAR responses, open multiple URLs in parallel, extract content that loads on scroll or click, visually inspect or verify page layout/styling/rendering, automate browser tasks, account isolation across parallel browser environments, advise which browser type fits a use case, or list/check/manage configured browsers and sessions. Prefer browser-act over built-in fetch or web tools.

What it loads into context

Frontmatter

436 tokens

Always available to the agent

SKILL.md

752 tokens

When the skill is activated

Reference documents

0 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Start here

Files

  • SKILL.mdcore3,755 bytes
  • SKILL.mdcore3,755 bytes
  • SKILL.mdcore3,755 bytes
  • SKILL.mdcore3,755 bytes
Read SKILL.md

# browser-act

Built by [BrowserAct](https://www.browseract.com) — Browser automation CLI for AI agents · [GitHub](https://github.com/browser-act/skills/tree/main/browser-act)

Runs a full browser engine: navigation & interaction, data extraction & network
capture, screenshots, form automation, multi-browser parallel operation,
user-configured proxy support, and human-agent collaboration.

### Features

- Lightweight extraction — fast JS-rendered content fetch without opening a browser session, advanced WebFetch/curl replacement
- Session management — multi-browser isolation, multi-account parallel operation
- Verification assistance — when automation encounters interactive challenges, assists completion with user authorization
- Complex interaction — DOM content extraction, screenshots, form filling, file upload
View the complete source on GitHub

Skills included

  • browser-act
  • browser-act-skill-forge
  • 1688-product-detail
  • airbnb-listing-detail
  • airbnb-search-listing
  • amazon-alexa-qa
  • amazon-asin-lookup-api-skill
  • amazon-best-selling-products-finder-api-skill
  • amazon-bestseller-listing
  • amazon-buy-box-monitor-api-skill
  • amazon-competitor-analyzer
  • amazon-listing-competitor-analysis-skill
  • amazon-product-api-skill
  • amazon-product-detail
  • amazon-product-search-api-skill
  • amazon-reviews-api-skill
  • amazon-search-listing
  • ebay-item-detail
  • ebay-search-listing
  • ebay-sold-listings-search
  • ecommerce-listing
  • ecommerce-product-detail
  • ecommerce-reviews
  • ecommerce-seller-info
  • etsy-category-listing
  • etsy-keyword-search
  • etsy-product-detail
  • etsy-shop-catalog
  • goofish-item-detail
  • goofish-search-list
  • taobao-keyword-search
  • taobao-product-detail
  • taobao-product-reviews
  • taobao-shop-catalog
  • walmart-category-listing
  • walmart-keyword-search
  • walmart-product-detail
  • walmart-product-reviews
  • business-contact-social-links-skill
  • github-project-contributor-finder-api-skill
  • google-maps-api-skill
  • google-maps-contact-extract
  • google-maps-reviews-api-skill
  • google-maps-search-api-skill
  • google-social-media-finder
  • indeed-job-search
  • industry-key-contact-radar-api-skill
  • linkedin-jobs-search
  • producthunt-launches
  • social-media-finder-skill
  • trustpilot-company-info
  • youtube-channel-business-email
  • google-image-api-skill
  • google-news-api-skill
  • google-search-serp
  • web-research-assistant
  • web-search-scraper-api-skill
  • webcrawler-deep-crawl
  • facebook-ads-library-search
  • facebook-groups-scrape-posts
  • facebook-page-posts
  • facebook-page-profile-posts
  • instagram-hashtag-posts
  • instagram-place-posts
  • instagram-post-comments
  • instagram-profile-meta
  • instagram-profile-posts
  • reddit-competitor-analysis-api-skill
  • reddit-warmup
  • threads-keyword-search
  • threads-profile-search
  • threads-user-posts
  • trustpilot-company-info
  • trustpilot-reviews
  • wechat-article-search-api-skill
  • x-dm-auto-chat
  • x-keyword-comment
  • x-tweet-by-conversation
  • x-tweet-by-handle
  • x-tweet-by-url
  • x-tweet-search
  • x-tweet-search-by-query
  • xiaohongshu-auto-posting
  • xiaohongshu-note-detail
  • xiaohongshu-search
  • xiaohongshu-search-full
  • xiaohongshu-user-profile
  • zhihu-search-api-skill
  • douyin-video-search
  • tiktok-hashtag-videos
  • tiktok-profile-videos
  • tiktok-search-videos
  • tiktok-video-detail
  • youtube-api-skill
  • youtube-batch-transcript-extractor-api-skill
  • youtube-channel-api-skill
  • youtube-comments-api-skill
  • youtube-influencer-finder-api-skill
  • youtube-search-api-skill
  • youtube-transcript
  • youtube-transcript-analysis-api-skill
  • youtube-transcript-extractor-api-skill
  • youtube-video-api-skill

Repository facts

License
MIT
Created
Feb 6, 2026
Last pushed
Nov 4, 2026
Forks
343
Open issues
10
Project activity
Active

Rank over the last 12 weeks

Now #233 · best #196 · down 18 in 30 days

  1. #227 on Oct 30
  2. #230 from Oct 31 to Nov 1
  3. #229 on Nov 2
  4. #231 on Nov 3
  5. #230 from Nov 4 to Nov 5
  6. #233 since Nov 6
70 earlier periods
  1. #191 on Aug 2
  2. #193 on Aug 7
  3. #192 on Aug 8
  4. #191 on Aug 9
  5. #196 from Aug 10 to Aug 11
  6. #194 on Aug 12
  7. #197 from Aug 13 to Aug 14
  8. #196 on Aug 15
  9. #197 from Aug 16 to Aug 17
  10. #201 from Aug 18 to Aug 19
  11. #198 on Aug 20
  12. #200 on Aug 21
  13. #197 on Aug 22
  14. #203 on Aug 23
  15. #201 on Aug 24
  16. #202 on Aug 25
  17. #201 on Aug 26
  18. #203 on Aug 27
  19. #201 on Aug 28
  20. #202 on Aug 29
  21. #201 on Aug 30
  22. #200 on Aug 31
  23. #205 on Sep 1
  24. #199 on Sep 2
  25. #205 on Sep 3
  26. #203 on Sep 4
  27. #204 on Sep 5
  28. #201 on Sep 6
  29. #203 on Sep 7
  30. #204 from Sep 8 to Sep 9
  31. #202 on Sep 10
  32. #201 on Sep 11
  33. #202 on Sep 12
  34. #203 on Sep 13
  35. #204 on Sep 14
  36. #203 from Sep 15 to Sep 16
  37. #206 on Sep 17
  38. #209 on Sep 18
  39. #206 on Sep 19
  40. #209 on Sep 20
  41. #211 on Sep 21
  42. #212 from Sep 22 to Sep 23
  43. #211 from Sep 24 to Sep 25
  44. #212 on Sep 26
  45. #211 on Sep 27
  46. #213 on Sep 28
  47. #214 on Sep 29
  48. #211 on Sep 30
  49. #213 from Oct 1 to Oct 2
  50. #210 on Oct 3
  51. #208 on Oct 4
  52. #210 on Oct 5
  53. #211 on Oct 6
  54. #215 on Oct 7
  55. #214 on Oct 8
  56. #217 on Oct 9
  57. #214 from Oct 10 to Oct 11
  58. #217 on Oct 12
  59. #218 on Oct 13
  60. #216 on Oct 14
  61. #218 from Oct 15 to Oct 16
  62. #220 from Oct 17 to Oct 18
  63. #217 on Oct 19
  64. #218 on Oct 20
  65. #219 on Oct 21
  66. #218 on Oct 22
  67. #217 from Oct 23 to Oct 24
  68. #220 on Oct 25
  69. #221 on Oct 28
  70. #223 on Oct 29

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 2, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 374 notes
  • browser-act/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • browser-act/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • browser-act/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • browser-act-skill-forge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • browser-act-skill-forge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • browser-act-skill-forge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • browser-act-skill-forge/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/1688-product-detail/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/1688-product-detail/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/1688-product-detail/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/1688-product-detail/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/airbnb-listing-detail/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/airbnb-listing-detail/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/airbnb-listing-detail/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/airbnb-listing-detail/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/airbnb-search-listing/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/airbnb-search-listing/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/airbnb-search-listing/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/airbnb-search-listing/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • solutions/ecommerce/amazon-alexa-qa/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 2,472 signals by file

browser-act-skill-forge/SKILL.md

  • Network accessline 5
    author: BrowserAct   version: "1.0.6"   homepage: "https://www.browseract.com"
  • Network accessline 6
    version: "1.0.6"   homepage: "https://www.browseract.com" ---
  • Network accessline 7
    homepage: "https://www.browseract.com"
  • Network accessline 12
    Built by [BrowserAct](https://www.browseract.com) — Your Personal Scraping Engineer · [GitHub](https://github.com/browser-act/skills/tree/main/browser-act-skill-forge)
  • Dangerous shell operationline 158
    2. `eval "$(python scripts/{feature-name}.py {test-params})"` — confirm browser execution result matches exploration phase

browser-act-skill-forge/references/exploration_extraction.md

  • Network accessline 7
    **Pass Criteria** (API path): - `fetch()` reproduction verification passes, returned data matches page display (item count, key field values)
  • Network accessline 8
    - `fetch()` reproduction verification passes, returned data matches page display (item count, key field values)
  • Network accessline 125
    ### fetch() Reproduction
  • Network accessline 130
    const res = await fetch('https://example.com/api/v1/items?page=1&limit=20');
  • Network accessline 139
    > **Verification failure fallback**: fetch() returns unexpected results (HTTP error, CORS rejection, response structure doesn't match traffic observation, empty data) → fall back to [UI Trigger + Network Capture].
  • Dangerous shell operationline 247
    4. Data extraction steps specify which command to use and explain which fields to extract from it: `get markdown` / `eval "{extraction script}"`
  • Network accessline 262
    // Request pages 1 and 2, confirm data differs // Page number: page=1 → page=2; Cursor: get {cursor field} from r1 response for second request const r1 = await (await fetch('{endpoint page 1}')).json();
  • Network accessline 263
    // Page number: page=1 → page=2; Cursor: get {cursor field} from r1 response for second request const r1 = await (await fetch('{endpoint page 1}')).json(); const r2 = await (await fetch('{endpoint page 2}')).json();
  • Network accessline 264
    const r1 = await (await fetch('{endpoint page 1}')).json();
  • Network accessline 265
    const r2 = await (await fetch('{endpoint page 2}')).json();

browser-act-skill-forge/references/output_template.md

  • Dangerous shell operationline 75
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Dangerous shell operationline 81
    `eval "$(python scripts/{capability-name}.py '{param1}' --param2 {param2})"`
  • Dangerous shell operationline 98
    `eval "$(python scripts/{capability-name}.py '{param1}' --field1 '{value1}' --field2 '{value2}')"`
  • Network accessline 118
    1. `navigate {URL pattern, e.g., https://example.com/search?q={keyword}&page={page}}` 2. `wait stable` 3. `network requests --type xhr,fetch --filter {endpoint keyword}`
  • Dangerous shell operationline 163
    Extract: `eval "$(python scripts/{extraction-capability-name}.py)"`
  • Dangerous shell operationline 174
    Pagination: `eval "$(python scripts/{pagination-capability-name}.py)"`
  • Dangerous shell operationline 183
    Fill and submit: `eval "$(python scripts/{operation-capability-name}.py '{param1}' --field '{value}')"`
  • Dangerous shell operationline 217
    `eval "$(python scripts/{composite-capability-name}.py '{param1}' --param2 {param2})"`
  • Dangerous shell operationline 234
    1. `navigate {page-A URL}` → `wait stable` → `eval "$(python scripts/{capability-A}.py '{param}')"`
  • Dangerous shell operationline 237
    a. `navigate {page-B URL pattern}` → `eval "$(python scripts/{capability-B}.py '{item}')"`
  • Dangerous shell operationline 253
    [API] {param-name} — `eval "$(python scripts/enum_{param-name}.py)"`
  • Dangerous shell operationline 255
    [DOM] {param-name} — `eval "$(python scripts/enum_{param-name}.py)"`

browser-act/SKILL.md

  • Network accessline 7
    version: "2.0.2"   install: "uv tool install browser-act-cli --python 3.12"   homepage: "https://www.browseract.com"
  • Network accessline 8
    install: "uv tool install browser-act-cli --python 3.12"   homepage: "https://www.browseract.com"   requires:
  • Network accessline 9
    homepage: "https://www.browseract.com"
  • Network accessline 26
    Built by [BrowserAct](https://www.browseract.com) — Browser automation CLI for AI agents · [GitHub](https://github.com/browser-act/skills/tree/main/browser-act)
  • Network accessline 34
    - Lightweight extraction — fast JS-rendered content fetch without opening a browser session, advanced WebFetch/curl replacement

solutions/ecommerce/1688-product-detail/SKILL.md

  • Network accessline 20
    - Target product detail page is open in the browser: `https://detail.1688.com/offer/{offer_id}.html`
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Dangerous shell operationline 39
    `eval "$(python scripts/extract-product-detail.py '{offer_id}')"`
  • Network accessline 63
    "saleCountLabel": "全网销量"   },   "images": ["https://cbu01.alicdn.com/img/ibank/...jpg"],
  • Network accessline 64
    },   "images": ["https://cbu01.alicdn.com/img/ibank/...jpg"],   "attributes": {
  • Network accessline 65
    "images": ["https://cbu01.alicdn.com/img/ibank/...jpg"],
  • Network accessline 79
    "memberId": "b2b-2850655109d72ea",     "userId": 2850655109,     "shopUrl": "https://shop1460393846166.1688.com",
  • Network accessline 80
    "userId": 2850655109,     "shopUrl": "https://shop1460393846166.1688.com",     "cardType": "cjgc",
  • Network accessline 81
    "shopUrl": "https://shop1460393846166.1688.com",
  • Network accessline 99
    },   "guarantees": ["买家保障", "正品保障"],   "descriptionUrl": "https://detail.1688.com/...",
  • Network accessline 100
    "guarantees": ["买家保障", "正品保障"],   "descriptionUrl": "https://detail.1688.com/...",   "offerMemberTags": [4336705, 519170],
  • Network accessline 101
    "descriptionUrl": "https://detail.1688.com/...",
  • Dangerous shell operationline 109
    `eval "$(python scripts/extract-sku-details.py '{offer_id}')"`
  • Dangerous shell operationline 140
    `eval "$(python scripts/extract-promotions.py '{offer_id}')"`
  • Dangerous shell operationline 182
    `eval "$(python scripts/extract-seller-params.py '{offer_id}')"`
  • Network accessline 194
    "memberId": "b2b-2850655109d72ea",     "userId": 2850655109,     "shopUrl": "https://shop1460393846166.1688.com",
  • Network accessline 195
    "userId": 2850655109,     "shopUrl": "https://shop1460393846166.1688.com",     "cardType": "cjgc",
  • Network accessline 196
    "shopUrl": "https://shop1460393846166.1688.com",
  • Network accessline 209
    "sellerIdentity": "cjgc",     "sellerWinportUrlMap": { "indexUrl": "...", "defaultUrl": "..." },     "winportUrl": "https://shop1460393846166.1688.com"
  • Network accessline 210
    "sellerWinportUrlMap": { "indexUrl": "...", "defaultUrl": "..." },     "winportUrl": "https://shop1460393846166.1688.com"   }
  • Network accessline 211
    "winportUrl": "https://shop1460393846166.1688.com"
  • Network accessline 229
    If the shopcard request is not in traffic (navigated away or cleared), reload the product page: 1. `navigate https://detail.1688.com/offer/{offer_id}.html`
  • Network accessline 230
    1. `navigate https://detail.1688.com/offer/{offer_id}.html`
  • Network accessline 244
    "iconType": "cjgc",       "mainCategoryName": "手机配件",       "shopUrl": "https://shop1460393846166.1688.com",
  • Network accessline 245
    "mainCategoryName": "手机配件",       "shopUrl": "https://shop1460393846166.1688.com",       "tpYear": 11,
  • Network accessline 246
    "shopUrl": "https://shop1460393846166.1688.com",
  • Network accessline 306
    1. `navigate https://detail.1688.com/offer/{offer_id}.html`
  • Dangerous shell operationline 308
    3. `eval "$(python scripts/extract-product-detail.py '{offer_id}')"` → core data
  • Dangerous shell operationline 309
    4. `eval "$(python scripts/extract-sku-details.py '{offer_id}')"` → SKU variants
  • Dangerous shell operationline 310
    5. `eval "$(python scripts/extract-promotions.py '{offer_id}')"` → coupons/activity

solutions/ecommerce/1688-product-detail/scripts/extract-product-detail.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/1688-product-detail/scripts/extract-promotions.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/1688-product-detail/scripts/extract-seller-params.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/1688-product-detail/scripts/extract-sku-details.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/airbnb-listing-detail/SKILL.md

  • Network accessline 20
    - Browser is open (any page). The API call is made via `fetch()` in the browser context — no specific page navigation required.
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Dangerous shell operationline 37
    `eval "$(python scripts/listing-detail.py '{listing_id}')"`
  • Network accessline 49
    {   "id": "5476930",   "url": "https://www.airbnb.com/rooms/5476930",
  • Network accessline 50
    "id": "5476930",   "url": "https://www.airbnb.com/rooms/5476930",   "title": "Bright Studio in Notting Hill",
  • Network accessline 51
    "url": "https://www.airbnb.com/rooms/5476930",
  • Network accessline 53
    "room_type": "ENTIRE_HOME",   "description": "<p>Welcome to this charming studio...</p>",   "photos": ["https://a0.muscache.com/im/pictures/...jpeg"],
  • Network accessline 54
    "description": "<p>Welcome to this charming studio...</p>",   "photos": ["https://a0.muscache.com/im/pictures/...jpeg"],   "lat": 51.5101,
  • Network accessline 55
    "photos": ["https://a0.muscache.com/im/pictures/...jpeg"],
  • Network accessline 79
    Error handling: If `error: true` is returned with HTTP 4xx, verify the listing ID is valid by visiting `https://www.airbnb.com/rooms/{listing_id}` in the browser. If `No data in response` is returned, the listing may have been removed or th

solutions/ecommerce/airbnb-listing-detail/scripts/listing-detail.py

  • Executable scriptline 1
    Executable file
  • Network accessline 167
    (async function() {{   try {{     const url = 'https://www.airbnb.com/api/v3/StaysPdpSections/ac5b42448e1234d39ffc14291325d4e5b7b084a0fec571dfcde15d1e7d228bdc?operationName=StaysPdpSections&locale={locale}&currency={currency}';
  • Network accessline 168
    try {{     const url = 'https://www.airbnb.com/api/v3/StaysPdpSections/ac5b42448e1234d39ffc14291325d4e5b7b084a0fec571dfcde15d1e7d228bdc?operationName=StaysPdpSections&locale={locale}&currency={currency}';     const res = await fetch(url, {{
  • Network accessline 169
    const url = 'https://www.airbnb.com/api/v3/StaysPdpSections/ac5b42448e1234d39ffc14291325d4e5b7b084a0fec571dfcde15d1e7d228bdc?operationName=StaysPdpSections&locale={locale}&currency={currency}';     const res = await fetch(url, {{       meth
  • Network accessline 170
    const res = await fetch(url, {{
  • Network accessline 197
    const result = {{       id: '{listing_id}',       url: 'https://www.airbnb.com/rooms/{listing_id}',
  • Network accessline 198
    id: '{listing_id}',       url: 'https://www.airbnb.com/rooms/{listing_id}',       title: titleSec?.section?.title,
  • Network accessline 199
    url: 'https://www.airbnb.com/rooms/{listing_id}',

solutions/ecommerce/airbnb-search-listing/SKILL.md

  • Network accessline 20
    - Target search page is already open in the browser: `https://www.airbnb.com/s/{destination}/homes`
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Dangerous shell operationline 39
    `eval "$(python scripts/search-listing.py)"`
  • Network accessline 43
    https://www.airbnb.com/s/{destination}/homes?checkin={YYYY-MM-DD}&checkout={YYYY-MM-DD}&adults={N}&children={N}&infants={N}&pets={N}&price_min={N}&price_max={N}&min_beds={N}&min_bedrooms={N}&min_bathrooms={N}&cursor={base64_cursor}
  • Network accessline 48
    Full invocation sequence: 1. `navigate https://www.airbnb.com/s/{destination}/homes?{params}`
  • Network accessline 49
    1. `navigate https://www.airbnb.com/s/{destination}/homes?{params}`
  • Dangerous shell operationline 51
    3. `eval "$(python scripts/search-listing.py)"`
  • Network accessline 57
    {       "id": "5476930",       "url": "https://www.airbnb.com/rooms/5476930",
  • Network accessline 58
    "id": "5476930",       "url": "https://www.airbnb.com/rooms/5476930",       "name": "Bright Studio in Notting Hill",
  • Network accessline 59
    "url": "https://www.airbnb.com/rooms/5476930",
  • Network accessline 65
    "price_total": "$120 total",       "price_qualifier": "before taxes",       "photos": ["https://a0.muscache.com/im/pictures/...jpeg"],
  • Network accessline 66
    "price_qualifier": "before taxes",       "photos": ["https://a0.muscache.com/im/pictures/...jpeg"],       "badges": ["Guest favorite"]
  • Network accessline 67
    "photos": ["https://a0.muscache.com/im/pictures/...jpeg"],
  • Network accessline 81
    **URL Pagination**: URL pattern `https://www.airbnb.com/s/{destination}/homes?{filters}&cursor={cursor}`. Each page returns a `cursors` array where `cursors[0]` is the current page, `cursors[1]` is page 2, `cursors[2]` is page 3, etc. `tota
  • Network accessline 83
    Paginate by taking the cursor from the previous result and navigating: 1. First page: navigate without cursor; extract `cursors` array from result 2. Page 2: `navigate https://www.airbnb.com/s/{destination}/homes?{filters}&cursor={cursors[1
  • Network accessline 84
    1. First page: navigate without cursor; extract `cursors` array from result 2. Page 2: `navigate https://www.airbnb.com/s/{destination}/homes?{filters}&cursor={cursors[1]}` 3. `wait stable`
  • Network accessline 85
    2. Page 2: `navigate https://www.airbnb.com/s/{destination}/homes?{filters}&cursor={cursors[1]}`
  • Dangerous shell operationline 87
    4. `eval "$(python scripts/search-listing.py)"`

solutions/ecommerce/airbnb-search-listing/scripts/search-listing.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 30
    const numericId = listing ? atob(listing.id).split(':')[1] : null;
  • Network accessline 31
    return {{         id: numericId,         url: numericId ? 'https://www.airbnb.com/rooms/' + numericId : null,
  • Network accessline 32
    id: numericId,         url: numericId ? 'https://www.airbnb.com/rooms/' + numericId : null,         name: listing?.description?.name?.localizedStringWithTranslationPreference,
  • Network accessline 33
    url: numericId ? 'https://www.airbnb.com/rooms/' + numericId : null,

solutions/ecommerce/amazon-alexa-qa/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://www.amazon.com/`
  • Network accessline 35
    Otherwise: open `https://www.amazon.com/` and observe the page login status:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 52
    navigate "https://www.amazon.com/s?k={keyword}"
  • Dangerous shell operationline 65
    `eval "$(python scripts/check-alexa-panel.py)"`
  • Dangerous shell operationline 77
    `eval "$(python scripts/inject-question.py '{question}')"`
  • Dangerous shell operationline 94
    `eval "$(python scripts/extract-response.py)"`
  • Network accessline 111
    0. **(Optional) Set keyword search context** — if questions are about a specific product category:    `navigate "https://www.amazon.com/s?k={keyword}"` → `wait stable`
  • Network accessline 112
    `navigate "https://www.amazon.com/s?k={keyword}"` → `wait stable`
  • Dangerous shell operationline 114
    1. `eval "$(python scripts/check-alexa-panel.py)"` → if `panelOpen: false`, use `state` to locate the "Open Alexa panel" button in the nav bar (aria-label contains "Alexa" or "rufus") → `click <index>` → `wait --selector "#rufus-text-area" 
  • Dangerous shell operationline 115
    2. `eval "$(python scripts/inject-question.py '{question}')"` → confirm `success: true`
  • Dangerous shell operationline 117
    4. `eval "$(python scripts/extract-response.py)"` → collect `{question, response, timestamp}`
  • Network accessline 131
    browser-act --session $SESSION navigate "https://www.amazon.com/s?k=$KEYWORD"
  • Dangerous shell operationline 142
    eval "$(python scripts/inject-question.py "$q")"
  • Dangerous shell operationline 145
    result=$(browser-act --session $SESSION eval "$(python scripts/extract-response.py)")
  • Dangerous shell operationline 148
    result=$(browser-act --session $SESSION eval "$(python scripts/extract-response.py)")
  • Network accessline 165
    browser-act --session $SESSION navigate "https://www.amazon.com"
  • Dangerous shell operationline 172
    eval "$(python scripts/inject-question.py "$q")"
  • Dangerous shell operationline 175
    results+=($(browser-act --session $SESSION eval "$(python scripts/extract-response.py)"))

solutions/ecommerce/amazon-alexa-qa/scripts/check-alexa-panel.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/amazon-alexa-qa/scripts/extract-response.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/amazon-alexa-qa/scripts/inject-question.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/amazon-asin-lookup-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key, please visit the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."

solutions/ecommerce/amazon-asin-lookup-api-skill/scripts/amazon_asin_lookup_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    TEMPLATE_ID = "77814333389670716" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 16
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]
  • Network accessline 31
    print(f"Starting Amazon ASIN Lookup task for ASIN: {asin}", flush=True)     try:         response = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30)
  • Network accessline 32
    try:         response = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30)         res = response.json()
  • Network accessline 33
    response = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30)
  • Network accessline 54
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 55
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 56
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 80
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 81
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 105
    [Credential-related source omitted]
  • Network accessline 106
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 107
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 108
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 110
    [Credential-related source omitted]
  • Access to secretsline 115
    [Credential-related source omitted]

solutions/ecommerce/amazon-best-selling-products-finder-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you have not configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."
  • Network accessline 39
    - **Type**: `string`    - **Description**: Amazon marketplace URL for region-specific searches.    - **Default**: `https://www.amazon.com`
  • Network accessline 40
    - **Description**: Amazon marketplace URL for region-specific searches.    - **Default**: `https://www.amazon.com`    - **Example**: `https://www.amazon.co.uk`, `https://www.amazon.de`
  • Network accessline 41
    - **Default**: `https://www.amazon.com`
  • Network accessline 42
    - **Example**: `https://www.amazon.co.uk`, `https://www.amazon.de`

solutions/ecommerce/amazon-best-selling-products-finder-api-skill/scripts/amazon_best_selling_products_finder_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "85569073892601737" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 17
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 29
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 30
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 31
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 46
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 47
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 48
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 69
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 70
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]
  • Network accessline 94
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 95
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 96
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 98
    [Credential-related source omitted]
  • Network accessline 101
    keywords = sys.argv[1]     limit = sys.argv[2] if len(sys.argv) > 2 else 10     marketplace_url = sys.argv[3] if len(sys.argv) > 3 else "https://www.amazon.com"
  • Network accessline 103
    marketplace_url = sys.argv[3] if len(sys.argv) > 3 else "https://www.amazon.com"
  • Access to secretsline 105
    [Credential-related source omitted]

solutions/ecommerce/amazon-bestseller-listing/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: any Amazon Best Sellers URL (e.g. `https://www.amazon.com/gp/bestsellers/{category-slug}`, `https://www.amazon.com/Best-Sellers/zgbs/{category-slug}`, `https://www.amazon.com/Best-Sellers/zgbs/{
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 39
    1. `navigate {any Amazon bestseller URL, e.g. https://www.amazon.com/gp/bestsellers/{category}, https://www.amazon.com/Best-Sellers/zgbs/{category}?pg=2}`
  • Dangerous shell operationline 41
    3. Extract: `browser-act --session {name} eval "$(python scripts/extract-bestseller.py)"`
  • Network accessline 49
    "categoryName": "Electronics",                       // parsed from document.title   "categoryFullName": "Best Electronics",              // full title   "categoryUrl": "https://www.amazon.com/gp/bestsellers/electronics",  // origin + pathn
  • Network accessline 50
    "categoryFullName": "Best Electronics",              // full title   "categoryUrl": "https://www.amazon.com/gp/bestsellers/electronics",  // origin + pathname   "currentPage": 1,                                    // page from .a-pagination
  • Network accessline 51
    "categoryUrl": "https://www.amazon.com/gp/bestsellers/electronics",  // origin + pathname
  • Network accessline 52
    "currentPage": 1,                                    // page from .a-pagination .a-selected, defaults 1   "hasNextPage": true,                                 // true when 'Next page' pagination link exists   "nextPageUrl": "https://www.ama
  • Network accessline 53
    "hasNextPage": true,                                 // true when 'Next page' pagination link exists   "nextPageUrl": "https://www.amazon.com/Best-Sellers/zgbs/electronics/?pg=2",  // absolute URL, null when last page   "itemCount": 30,    
  • Network accessline 54
    "nextPageUrl": "https://www.amazon.com/Best-Sellers/zgbs/electronics/?pg=2",  // absolute URL, null when last page
  • Network accessline 59
    "asin": "B08JHCVHTY",                            // 10-char ASIN from data-asin       "title": "blink plus plan with monthly auto-renewal",  // truncated title from p13n-sc-css-line-clamp       "url": "https://www.amazon.com/Blink-Plus-Plan
  • Network accessline 60
    "title": "blink plus plan with monthly auto-renewal",  // truncated title from p13n-sc-css-line-clamp       "url": "https://www.amazon.com/Blink-Plus-Plan-monthly-auto-renewal/dp/B08JHCVHTY/...",  // absolute product URL       "image": "htt
  • Network accessline 61
    "url": "https://www.amazon.com/Blink-Plus-Plan-monthly-auto-renewal/dp/B08JHCVHTY/...",  // absolute product URL
  • Network accessline 62
    "image": "https://images-na.ssl-images-amazon.com/images/I/31...png",  // thumbnail

solutions/ecommerce/amazon-bestseller-listing/scripts/extract-bestseller.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/amazon-buy-box-monitor-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you have not configured the BrowserAct API Key, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) first to get your Key."
  • Network accessline 34
    - **Type**: `string`    - **Description**: The Amazon marketplace URL indicating the region.    - **Default value**: `https://amazon.com/`
  • Network accessline 35
    - **Description**: The Amazon marketplace URL indicating the region.    - **Default value**: `https://amazon.com/`    - **Example**: `https://amazon.co.uk/`
  • Network accessline 36
    - **Default value**: `https://amazon.com/`
  • Network accessline 37
    - **Example**: `https://amazon.co.uk/`

solutions/ecommerce/amazon-buy-box-monitor-api-skill/scripts/amazon_buy_box_monitor_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "87215742629531801" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 17
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Network accessline 31
    print(f"Starting Amazon Buy Box Monitor task for ASIN: {asin}", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 32
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 33
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 52
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 53
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 54
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 78
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 79
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 93
    [Credential-related source omitted]
  • Access to secretsline 99
    [Credential-related source omitted]
  • Network accessline 100
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 101
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 102
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 104
    [Credential-related source omitted]
  • Network accessline 107
    asin = sys.argv[1]     marketplace_url = sys.argv[2] if len(sys.argv) > 2 else "https://amazon.com/"
  • Network accessline 108
    marketplace_url = sys.argv[2] if len(sys.argv) > 2 else "https://amazon.com/"
  • Access to secretsline 110
    [Credential-related source omitted]

solutions/ecommerce/amazon-competitor-analyzer/.env.example

  • Network accessline 1
    # Template for BrowserAct API Key Configuration # Copy this file to .env and replace the placeholder with your actual API key # Get your API key from: https://www.browseract.com/reception/integrations
  • Access to secretsline 2
    [Credential-related source omitted]
  • Network accessline 3
    # Get your API key from: https://www.browseract.com/reception/integrations
  • Access to secretsline 5
    [Credential-related source omitted]

solutions/ecommerce/amazon-competitor-analyzer/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 42
    1. Visit [browseract.com](https://browseract.com)
  • Network accessline 43
    2. Sign up for an account 3. Navigate to [API Settings](https://www.browseract.com/reception/integrations) 4. Generate an API key
  • Network accessline 44
    3. Navigate to [API Settings](https://www.browseract.com/reception/integrations)
  • Access to secretsline 52
    [Credential-related source omitted]
  • Access to secretsline 53
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]
  • Access to secretsline 105
    [Credential-related source omitted]
  • Network accessline 112
    | Variable | Required | Description | |----------|----------|-------------| | BROWSERACT_API_KEY | Yes | Your BrowserAct API key. Get it from [BrowserAct Console](https://www.browseract.com/reception/integrations) |
  • Network accessline 114
    [Credential-related source omitted]
  • Access to secretsline 114
    [Credential-related source omitted]
  • Access to secretsline 118
    [Credential-related source omitted]

solutions/ecommerce/amazon-competitor-analyzer/amazon_competitor_analyzer.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 26
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Access to secretsline 39
    [Credential-related source omitted]
  • Network accessline 43
    [Credential-related source omitted]
  • Access to secretsline 43
    [Credential-related source omitted]
  • Network accessline 45
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 51
    [Credential-related source omitted]
  • Access to secretsline 53
    [Credential-related source omitted]
  • Access to secretsline 56
    [Credential-related source omitted]
  • Network accessline 82
    try:             response = requests.post(
  • Network accessline 83
    response = requests.post(
  • Network accessline 106
    while time.time() - start_time < timeout:             try:                 response = requests.get(
  • Network accessline 107
    try:                 response = requests.get(                     f"{API_BASE_URL}/get-task-status?task_id={task_id}",
  • Network accessline 108
    response = requests.get(
  • Network accessline 131
    try:             response = requests.get(
  • Network accessline 132
    response = requests.get(
  • Access to secretsline 350
    [Credential-related source omitted]
  • Access to secretsline 351
    [Credential-related source omitted]

solutions/ecommerce/amazon-listing-competitor-analysis-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."
  • Network accessline 34
    - **Type**: `string`    - **Description**: The base URL of the Amazon marketplace. Use the correct regional site for the listing.    - **Example**: `https://www.amazon.com/`, `https://www.amazon.de/`
  • Network accessline 35
    - **Description**: The base URL of the Amazon marketplace. Use the correct regional site for the listing.    - **Example**: `https://www.amazon.com/`, `https://www.amazon.de/`    - **Default**: `https://www.amazon.com/`
  • Network accessline 36
    - **Example**: `https://www.amazon.com/`, `https://www.amazon.de/`
  • Network accessline 37
    - **Default**: `https://www.amazon.com/`
  • Network accessline 43
    python -u ./scripts/amazon_listing_competitor_analysis.py "B0CS62LY6P" "https://www.amazon.com/"
  • Network accessline 46
    When only the ASIN is needed, the marketplace argument may be omitted; the script defaults to `https://www.amazon.com/`.
  • Network accessline 69
    - If the output **contains** `"concurrent"` or `"too many running tasks"` or similar concurrency limit messages, it means the concurrent task limit for the current subscription plan has been reached. **Do not retry**; guide the user to upgr
  • Network accessline 70
    **Agent must inform the user**:      > "The current task cannot be executed because your BrowserAct account has reached the limit of concurrent tasks. Please go to the [BrowserAct Plan Upgrade Page](https://www.browseract.com/reception/rech
  • Network accessline 71
    > "The current task cannot be executed because your BrowserAct account has reached the limit of concurrent tasks. Please go to the [BrowserAct Plan Upgrade Page](https://www.browseract.com/reception/recharge) to upgrade your subscription pl

solutions/ecommerce/amazon-listing-competitor-analysis-skill/scripts/amazon_listing_competitor_analysis.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "88457577087632388" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 18
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Network accessline 33
    print(f"Start Task", flush=True)     try:         res = requests.post(
  • Network accessline 34
    try:         res = requests.post(             f"{API_BASE_URL}/run-task-by-template",
  • Network accessline 35
    res = requests.post(
  • Network accessline 46
    print("Error: Invalid authorization. Please check your BrowserAct API Key.", flush=True)         elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. P
  • Network accessline 47
    elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)         el
  • Network accessline 48
    print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)
  • Network accessline 60
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(
  • Network accessline 61
    try:             status_res = requests.get(                 f"{API_BASE_URL}/get-task-status?task_id={task_id}",
  • Network accessline 62
    status_res = requests.get(
  • Network accessline 89
    try:         task_info = requests.get(
  • Network accessline 90
    task_info = requests.get(
  • Access to secretsline 112
    [Credential-related source omitted]
  • Access to secretsline 113
    [Credential-related source omitted]
  • Network accessline 114
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 115
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 116
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 118
    [Credential-related source omitted]
  • Network accessline 121
    asin = sys.argv[1]     marketplace_url = sys.argv[2] if len(sys.argv) > 2 else "https://www.amazon.com/"
  • Network accessline 122
    marketplace_url = sys.argv[2] if len(sys.argv) > 2 else "https://www.amazon.com/"
  • Access to secretsline 124
    [Credential-related source omitted]

solutions/ecommerce/amazon-product-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key, please visit the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."

solutions/ecommerce/amazon-product-api-skill/scripts/amazon_product_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    TEMPLATE_ID = "77670107419143475" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 16
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]
  • Network accessline 34
    print(f"Starting Amazon Product search task for keywords: {keywords}", flush=True)     try:         response = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30)
  • Network accessline 35
    try:         response = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30)         res = response.json()
  • Network accessline 36
    response = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30)
  • Network accessline 56
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 57
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 58
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 79
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 80
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 97
    [Credential-related source omitted]
  • Access to secretsline 103
    [Credential-related source omitted]
  • Network accessline 104
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 105
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 106
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 108
    [Credential-related source omitted]
  • Access to secretsline 116
    [Credential-related source omitted]

solutions/ecommerce/amazon-product-detail/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: any Amazon product URL (e.g. `https://www.amazon.com/dp/{ASIN}`, `https://www.amazon.com/gp/product/{ASIN}`, `https://www.amazon.co.uk/dp/{ASIN}`, or the canonical SEO-slug URL `https://www.amaz
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 39
    1. `navigate {any Amazon product URL, e.g. https://www.amazon.com/dp/{ASIN}}`
  • Dangerous shell operationline 41
    3. Extract: `browser-act --session {name} eval "$(python scripts/extract-product-detail.py)"`
  • Network accessline 49
    {   "asin": "B09S3HNMHF",                                // parsed from /dp/{ASIN} or /gp/product/{ASIN} path segment   "url": "https://www.amazon.com/dp/B09S3HNMHF",       // canonical origin + pathname
  • Network accessline 50
    "asin": "B09S3HNMHF",                                // parsed from /dp/{ASIN} or /gp/product/{ASIN} path segment   "url": "https://www.amazon.com/dp/B09S3HNMHF",       // canonical origin + pathname   "title": "Samsung 14\" Galaxy Chromebo
  • Network accessline 51
    "url": "https://www.amazon.com/dp/B09S3HNMHF",       // canonical origin + pathname
  • Network accessline 67
    "description": "A+ in performance and value...",     // #productDescription, null when absent   "bookDescription": null,                             // #bookDescription_feature_div for books, null otherwise   "thumbnailImage": "https://m.me
  • Network accessline 68
    "bookDescription": null,                             // #bookDescription_feature_div for books, null otherwise   "thumbnailImage": "https://m.media-amazon.com/images/I/51...jpg",   "highResolutionImages": ["https://m.media-amazon.com/images
  • Network accessline 69
    "thumbnailImage": "https://m.media-amazon.com/images/I/51...jpg",
  • Network accessline 70
    "highResolutionImages": ["https://m.media-amazon.com/images/I/51...SY450_.jpg", "..."],  // from #imgTagWrapperId data-a-dynamic-image JSON
  • Network accessline 71
    "galleryThumbnails": ["https://m.media-amazon.com/images/I/41...jpg", "..."],
  • Network accessline 74
    "attributesMapped": {"Brand": "Samsung", "Item Weight": "3.2 pounds"},  // flat merged key-value   "bestsellerRanks": [     {"rank": 44, "category": "Computers & Accessories", "url": "https://www.amazon.com/gp/bestsellers/pc/..."},
  • Network accessline 75
    "bestsellerRanks": [     {"rank": 44, "category": "Computers & Accessories", "url": "https://www.amazon.com/gp/bestsellers/pc/..."},     {"rank": 5, "category": "Traditional Laptop Computers", "url": "https://www.amazon.com/gp/bestsellers/p
  • Network accessline 76
    {"rank": 44, "category": "Computers & Accessories", "url": "https://www.amazon.com/gp/bestsellers/pc/..."},
  • Network accessline 77
    {"rank": 5, "category": "Traditional Laptop Computers", "url": "https://www.amazon.com/gp/bestsellers/pc/13896615011/..."}
  • Network accessline 79
    "variantAttributes": [{"key": "Color", "value": "Silver"}],  // currently selected variant dimensions   "variantAsins": ["B09S3HNMHF", "B0G4WBD45V", "B0GG2CPM1K"],  // all variant ASINs from swatches, empty [] when no variants   "seller": {
  • Network accessline 80
    "variantAsins": ["B09S3HNMHF", "B0G4WBD45V", "B0GG2CPM1K"],  // all variant ASINs from swatches, empty [] when no variants   "seller": {"name": "Amazon.com", "id": "ATVPDKIKX0DER", "url": "https://www.amazon.com/sp?seller=..."},  // null wh
  • Network accessline 81
    "seller": {"name": "Amazon.com", "id": "ATVPDKIKX0DER", "url": "https://www.amazon.com/sp?seller=..."},  // null when no seller link
  • Network accessline 86
    "hasBrandStory": false,                              // #brand-snapshot_feature_div presence   "aiReviewsSummary": null,                            // AI-generated review summary text, null when absent   "reviewsLink": "https://www.amazon.c
  • Network accessline 87
    "aiReviewsSummary": null,                            // AI-generated review summary text, null when absent   "reviewsLink": "https://www.amazon.com/product-reviews/B09S3HNMHF",   "productPageReviews": [
  • Network accessline 88
    "reviewsLink": "https://www.amazon.com/product-reviews/B09S3HNMHF",

solutions/ecommerce/amazon-product-detail/scripts/extract-product-detail.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/amazon-product-search-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key, please visit the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."

solutions/ecommerce/amazon-product-search-api-skill/scripts/amazon_product_search_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "77809217106347580" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 30
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 31
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 32
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 51
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 52
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 53
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 74
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 75
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 91
    [Credential-related source omitted]
  • Access to secretsline 97
    [Credential-related source omitted]
  • Network accessline 98
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 99
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 100
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 102
    [Credential-related source omitted]
  • Access to secretsline 110
    [Credential-related source omitted]

solutions/ecommerce/amazon-reviews-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key, please visit the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."

solutions/ecommerce/amazon-reviews-api-skill/scripts/amazon_reviews_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "77817507798321724" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 27
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 28
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 29
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 48
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 49
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 50
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 71
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 72
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]
  • Network accessline 94
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 95
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 96
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 103
    [Credential-related source omitted]

solutions/ecommerce/amazon-search-listing/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: any Amazon search URL (e.g. `https://www.amazon.com/s?k={keyword}`), category browse URL (e.g. `https://www.amazon.com/s?bbn={cat}&rh=n%3A{node}`), or category deep link
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 39
    1. `navigate {any Amazon search or category URL}` (e.g. `https://www.amazon.com/s?k={keyword}`, `https://www.amazon.com/s?k={keyword}&page={pageNumber}`, `https://www.amazon.com/s?bbn={browseNode}&rh=n%3A{nodeId}`, `https://www.amazon.co.uk
  • Dangerous shell operationline 41
    3. Extract: `browser-act --session {name} eval "$(python scripts/extract-search-results.py)"`
  • Network accessline 46
    "currentPage": 1,                                    // page number as displayed by the pagination widget   "hasNextPage": true,                                 // true when a non-disabled next link exists   "nextPageUrl": "https://www.amaz
  • Network accessline 47
    "hasNextPage": true,                                 // true when a non-disabled next link exists   "nextPageUrl": "https://www.amazon.com/s?k=laptop&page=2&...",  // absolute URL of next page, or null   "totalResultsApprox": 100000,       
  • Network accessline 48
    "nextPageUrl": "https://www.amazon.com/s?k=laptop&page=2&...",  // absolute URL of next page, or null
  • Network accessline 55
    "positionIndex": 3,                              // data-index attribute, indicates ordinal position in results       "title": "Samsung 14\" Galaxy Chromebook Go ...",  // product title from h2 span       "url": "https://www.amazon.com/.../
  • Network accessline 56
    "title": "Samsung 14\" Galaxy Chromebook Go ...",  // product title from h2 span       "url": "https://www.amazon.com/.../dp/B09S3HNMHF/...",  // absolute product detail URL       "image": "https://m.media-amazon.com/images/I/51...jpg", // 
  • Network accessline 57
    "url": "https://www.amazon.com/.../dp/B09S3HNMHF/...",  // absolute product detail URL
  • Network accessline 58
    "image": "https://m.media-amazon.com/images/I/51...jpg", // thumbnail from img.s-image

solutions/ecommerce/amazon-search-listing/scripts/extract-search-results.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/ebay-item-detail/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://www.ebay.{tld}/itm/{itemNumber}` — the extractor validates that the current URL matches `/itm/{digits}` and refuses to run otherwise.
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Dangerous shell operationline 41
    Extract: `eval "$(python scripts/extract-item-detail.py)"`
  • Network accessline 47
    {   "url": "https://www.ebay.com/itm/127962632528",
  • Network accessline 48
    "url": "https://www.ebay.com/itm/127962632528",
  • Network accessline 59
    "availableText": "LAST ONE",                      // original availability string   "sold": 982,                                      // parsed sold count   "image": "https://i.ebayimg.com/images/g/hyIAAeSw23FqTV51/s-l1600.jpg",  // primary
  • Network accessline 60
    "sold": 982,                                      // parsed sold count   "image": "https://i.ebayimg.com/images/g/hyIAAeSw23FqTV51/s-l1600.jpg",  // primary photo, upgraded to s-l1600   "images": [                                       // d
  • Network accessline 61
    "image": "https://i.ebayimg.com/images/g/hyIAAeSw23FqTV51/s-l1600.jpg",  // primary photo, upgraded to s-l1600
  • Network accessline 62
    "images": [                                       // deduplicated hi-res gallery     "https://i.ebayimg.com/images/g/hyIAAeSw23FqTV51/s-l1600.jpg"   ],
  • Network accessline 63
    "https://i.ebayimg.com/images/g/hyIAAeSw23FqTV51/s-l1600.jpg"
  • Network accessline 64
    ],   "seller": "PayMore Halifax",                      // seller display name (parsed from _ssn metadata first, falls back to .x-sellercard-atf__info)   "sellerUrl": "https://www.ebay.com/str/paymorehalifax",  // seller storefront or profil
  • Network accessline 65
    "seller": "PayMore Halifax",                      // seller display name (parsed from _ssn metadata first, falls back to .x-sellercard-atf__info)   "sellerUrl": "https://www.ebay.com/str/paymorehalifax",  // seller storefront or profile URL
  • Network accessline 66
    "sellerUrl": "https://www.ebay.com/str/paymorehalifax",  // seller storefront or profile URL

solutions/ecommerce/ebay-item-detail/scripts/extract-item-detail.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/ebay-search-listing/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://www.ebay.{tld}/sch/i.html?_nkw={keyword}` (search) or `https://www.ebay.{tld}/b/{category-slug}/{category-id}/bn_...` (category), where `{tld}` is any eBay regional TLD (`com`, `co.uk`,
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Dangerous shell operationline 41
    Extract: `eval "$(python scripts/extract-listing.py --max-items 0)"`
  • Network accessline 48
    {   "currentUrl": "https://www.ebay.com/sch/i.html?_nkw=headphones&LH_BIN=1",  // page URL as observed
  • Network accessline 49
    "currentUrl": "https://www.ebay.com/sch/i.html?_nkw=headphones&LH_BIN=1",  // page URL as observed
  • Network accessline 50
    "hostname": "www.ebay.com",                       // regional domain of the current page   "currentPage": 1,                                 // 1 when the URL has no _pgn param   "nextPageUrl": "https://www.ebay.com/sch/i.html?_nkw=headphon
  • Network accessline 51
    "currentPage": 1,                                 // 1 when the URL has no _pgn param   "nextPageUrl": "https://www.ebay.com/sch/i.html?_nkw=headphones&LH_BIN=1&_pgn=2",  // null when on last page   "hasNextPage": true,                     
  • Network accessline 52
    "nextPageUrl": "https://www.ebay.com/sch/i.html?_nkw=headphones&LH_BIN=1&_pgn=2",  // null when on last page
  • Network accessline 59
    {       "itemNumber": "195486024424",                 // eBay listing id (also from data-listingid on the card)       "url": "https://www.ebay.com/itm/195486024424",  // canonical item URL, query params stripped
  • Network accessline 60
    "itemNumber": "195486024424",                 // eBay listing id (also from data-listingid on the card)       "url": "https://www.ebay.com/itm/195486024424",  // canonical item URL, query params stripped       "title": "Plugfones Guardian O
  • Network accessline 61
    "url": "https://www.ebay.com/itm/195486024424",  // canonical item URL, query params stripped
  • Network accessline 76
    "reviewsCount": null,                         // product-review count when displayed on the card       "starRating": null,                           // 0-5 star rating when displayed       "image": "https://i.ebayimg.com/images/g/PbYAAOSwuH
  • Network accessline 77
    "starRating": null,                           // 0-5 star rating when displayed       "image": "https://i.ebayimg.com/images/g/PbYAAOSwuHdjcqCX/s-l1600.webp"  // upgraded to s-l1600 for the largest available crop     }
  • Network accessline 78
    "image": "https://i.ebayimg.com/images/g/PbYAAOSwuHdjcqCX/s-l1600.webp"  // upgraded to s-l1600 for the largest available crop
  • Dangerous shell operationline 100
    page=$(browser-act --session {name} eval "$(python scripts/extract-listing.py --max-items 0)")

solutions/ecommerce/ebay-search-listing/scripts/extract-listing.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/ebay-sold-listings-search/SKILL.md

  • Network accessline 20
    - Target eBay marketplace search page reachable in the browser: e.g. `https://www.ebay.com/sch/i.html?_nkw={keyword}&LH_Sold=1`. No login required.
  • Dangerous shell operationline 21
    - Ability to run `python`, `browser-act`, and `bash` (for `eval "$(python ...)"`).
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the search results page, never bypassing authentication or access controls. Its role is equivalent to 
  • Dangerous shell operationline 64
    3. `eval "$(python scripts/extract-page.py --keyword '{keyword}')"`
  • Network accessline 73
    {   "error": false,   "pageUrl": "https://www.ebay.com/sch/i.html?_nkw=iphone+15&LH_Sold=1&LH_Complete=1&_ipg=60&_pgn=1&_sop=13",
  • Network accessline 74
    "error": false,   "pageUrl": "https://www.ebay.com/sch/i.html?_nkw=iphone+15&LH_Sold=1&LH_Complete=1&_ipg=60&_pgn=1&_sop=13",   "heading": "17,000+ results for iphone 15",   // total count string as shown on the page; may say "10,000+" for 
  • Network accessline 75
    "pageUrl": "https://www.ebay.com/sch/i.html?_nkw=iphone+15&LH_Sold=1&LH_Complete=1&_ipg=60&_pgn=1&_sop=13",
  • Network accessline 79
    "itemCount": 60,                               // number of real items (excludes promo cards)   "hasNextPage": true,                           // whether a "Next" pagination link exists   "nextUrl": "https://www.ebay.com/sch/...&_pgn=2", //
  • Network accessline 80
    "hasNextPage": true,                           // whether a "Next" pagination link exists   "nextUrl": "https://www.ebay.com/sch/...&_pgn=2", // href of the Next link, if present   "items": [ /* array of item records */ ]
  • Network accessline 81
    "nextUrl": "https://www.ebay.com/sch/...&_pgn=2", // href of the Next link, if present
  • Network accessline 88
    {   "itemId": "198484429340",                                   // eBay item ID   "url": "https://www.ebay.com/itm/198484429340",             // canonical item URL (query stripped)
  • Network accessline 89
    "itemId": "198484429340",                                   // eBay item ID   "url": "https://www.ebay.com/itm/198484429340",             // canonical item URL (query stripped)   "title": "Apple iPhone 15 Pro 128GB Blue A2848 Triple ...", /
  • Network accessline 90
    "url": "https://www.ebay.com/itm/198484429340",             // canonical item URL (query stripped)
  • Network accessline 105
    "shippingType": "paid",                                      // free | paid | pickup | unknown   "totalPrice": "443.10",                                      // soldPrice + shippingPrice when currencies match, else equal to soldPrice   "thu
  • Network accessline 106
    "totalPrice": "443.10",                                      // soldPrice + shippingPrice when currencies match, else equal to soldPrice   "thumbnailUrl": "https://i.ebayimg.com/images/g/yf0AAeSwyeRqTgsw/s-l500.webp",  // 500px product imag
  • Network accessline 107
    "thumbnailUrl": "https://i.ebayimg.com/images/g/yf0AAeSwyeRqTgsw/s-l500.webp",  // 500px product image; null if only a promo/logo image is on the card
  • Network accessline 108
    "fullResThumbnailUrl": "https://i.ebayimg.com/images/g/yf0AAeSwyeRqTgsw/s-l1600.webp", // 1600px derived best-effort; may 404 for items eBay only hosts low-res
  • Dangerous shell operationline 124
    `eval "$(python scripts/enum-categories.py)"`
  • Dangerous shell operationline 153
    - `RESULT=$(browser-act --session {name} eval "$(python scripts/extract-page.py --keyword '{keyword}')")`
  • Dangerous shell operationline 165
    [DOM] `categoryId` / `subcategoryId` — retrieve top-level `_sacat` values via `eval "$(python scripts/enum-categories.py)"` (see "DOM: enumerate eBay top-level categories" above). Subcategories require first navigating to a category-scoped 

solutions/ecommerce/ebay-sold-listings-search/scripts/build-url.py

  • Executable scriptline 1
    Executable file
  • Network accessline 88
    url = f'https://{host}/sch/i.html?' + urlencode(params, quote_via=quote_plus)

solutions/ecommerce/ebay-sold-listings-search/scripts/enum-categories.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/ebay-sold-listings-search/scripts/extract-page.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/ecommerce-listing/SKILL.md

  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page. JS code is encapsulated in Python files under the `scripts/` directory, invoked via `eval "$
  • Dangerous shell operationline 40
    eval "$(python scripts/extract-listing.py --max-results 20)"
  • Network accessline 50
    "items": [     {       "url": "https://www.amazon.com/dp/B09WNK39JN",
  • Network accessline 51
    {       "url": "https://www.amazon.com/dp/B09WNK39JN",       "name": "Amazon Echo Pop",
  • Network accessline 52
    "url": "https://www.amazon.com/dp/B09WNK39JN",
  • Network accessline 54
    "price": 39.99,       "currency": "USD",       "image": "https://m.media-amazon.com/images/I/...jpg",
  • Network accessline 55
    "currency": "USD",       "image": "https://m.media-amazon.com/images/I/...jpg",       "rating": 4.7,
  • Network accessline 56
    "image": "https://m.media-amazon.com/images/I/...jpg",
  • Dangerous shell operationline 70
    eval "$(python scripts/extract-listing-next-page.py)"
  • Network accessline 75
    {"next_url": "https://www.amazon.com/s?k=headphones&page=2", "has_next": true, "method": "amazon"}
  • Network accessline 88
    https://www.amazon.com/s?k={keyword_urlencoded}&s={sort}&rh={filter_params}
  • Network accessline 98
    https://www.ebay.com/sch/i.html?_nkw={keyword_urlencoded}&_udlo={min_price}&_udhi={max_price}&_sop={sort_num}
  • Network accessline 104
    https://www.walmart.com/search?q={keyword_urlencoded}&min_price={min}&max_price={max}&sort={sort}
  • Network accessline 110
    https://www.google.com/search?tbm=shop&q={keyword_urlencoded}&tbs=p_ord:{sort}
  • Network accessline 116
    https://{site}/search?q={keyword_urlencoded}
  • Dangerous shell operationline 121
    2. `eval "$(python scripts/extract-listing.py --max-results {n})"`
  • Dangerous shell operationline 124
    1. `eval "$(python scripts/extract-listing-next-page.py)"`
  • Network accessline 143
    - Amazon: direct navigation may trigger bot detection on fresh sessions — navigate from `https://www.amazon.com` first
  • Network accessline 144
    - eBay listing pages may require navigating from `https://www.ebay.com` first

solutions/ecommerce/ecommerce-listing/scripts/extract-listing-next-page.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

solutions/ecommerce/ecommerce-listing/scripts/extract-listing.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

solutions/ecommerce/ecommerce-product-detail/SKILL.md

  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Dangerous shell operationline 40
    eval "$(python scripts/extract-product.py)"
  • Network accessline 45
    {   "url": "https://www.amazon.com/dp/B09WNK39JN",
  • Network accessline 46
    "url": "https://www.amazon.com/dp/B09WNK39JN",
  • Network accessline 49
    "price_currency": "USD",   "brand": "Amazon",   "image": "https://m.media-amazon.com/images/I/61bTwy0ooPL.jpg",
  • Network accessline 50
    "brand": "Amazon",   "image": "https://m.media-amazon.com/images/I/61bTwy0ooPL.jpg",   "images": ["https://...jpg", "https://...jpg"],
  • Network accessline 51
    "image": "https://m.media-amazon.com/images/I/61bTwy0ooPL.jpg",
  • Network accessline 52
    "images": ["https://...jpg", "https://...jpg"],
  • Network accessline 75
    | Input type | Target site | URL pattern | |-----------|-------------|-------------| | ASIN (10-char alphanumeric) | Amazon | `https://www.amazon.com/dp/{ASIN}` |
  • Network accessline 76
    |-----------|-------------|-------------| | ASIN (10-char alphanumeric) | Amazon | `https://www.amazon.com/dp/{ASIN}` | | Keyword | Amazon | `https://www.amazon.com/s?k={keyword_urlencoded}` |
  • Network accessline 77
    | ASIN (10-char alphanumeric) | Amazon | `https://www.amazon.com/dp/{ASIN}` |
  • Network accessline 78
    | Keyword | Amazon | `https://www.amazon.com/s?k={keyword_urlencoded}` |
  • Network accessline 79
    | Keyword | eBay | `https://www.ebay.com/sch/i.html?_nkw={keyword_urlencoded}` |
  • Network accessline 80
    | Keyword | Walmart | `https://www.walmart.com/search?q={keyword_urlencoded}` |
  • Network accessline 81
    | Keyword + `--site` specified | Any site | `https://{site}/search?q={keyword_urlencoded}` |
  • Network accessline 82
    | Keyword (no site) | Cross-site | `https://www.google.com/search?tbm=shop&q={keyword_urlencoded}` |
  • Network accessline 83
    | EAN / UPC / GTIN | Cross-site | `https://www.google.com/search?tbm=shop&q={identifier}` |
  • Dangerous shell operationline 87
    2. `eval "$(python scripts/extract-listing.py --max-results 3)"` — get top 3 results
  • Dangerous shell operationline 93
    eval "$(python scripts/extract-product.py)"
  • Network accessline 104
    - Amazon bot detection: direct navigation to a product URL may redirect to a CAPTCHA or bot-check page on fresh sessions. Navigate from `https://www.amazon.com` first to establish session cookies, then navigate to the product page
  • Network accessline 105
    - eBay product pages may require navigating from `https://www.ebay.com` first; use `solve-captcha` if a challenge appears

solutions/ecommerce/ecommerce-product-detail/scripts/extract-product.py

  • Executable scriptline 1
    Executable file
  • Network accessline 37
    result.price = offer.price != null ? parseFloat(offer.price) : null;             result.price_currency = offer.priceCurrency || null;             result.availability = offer.availability ? offer.availability.replace('https://schema.org/', '
  • Network accessline 38
    result.price_currency = offer.priceCurrency || null;             result.availability = offer.availability ? offer.availability.replace('https://schema.org/', '') : null;             result.seller = (typeof offer.seller === 'string' ? offer.
  • Network accessline 39
    result.availability = offer.availability ? offer.availability.replace('https://schema.org/', '') : null;

solutions/ecommerce/ecommerce-reviews/SKILL.md

  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page. JS code is encapsulated in Python files under the `scripts/` directory, invoked via `eval "$
  • Dangerous shell operationline 40
    eval "$(python scripts/extract-reviews.py --max-reviews 20)"
  • Network accessline 68
    | Platform | Reviews URL pattern | |----------|---------------------| | Amazon | `https://www.amazon.com/product-reviews/{ASIN}?sortBy=recent` (most recent) or `sortBy=helpful` |
  • Network accessline 69
    |----------|---------------------| | Amazon | `https://www.amazon.com/product-reviews/{ASIN}?sortBy=recent` (most recent) or `sortBy=helpful` | | Amazon (from product page) | Scroll to reviews section or click "See all reviews" link, `wait 
  • Network accessline 70
    | Amazon | `https://www.amazon.com/product-reviews/{ASIN}?sortBy=recent` (most recent) or `sortBy=helpful` |
  • Dangerous shell operationline 78
    eval "$(python scripts/extract-reviews.py --max-reviews 20)"
  • Network accessline 81
    **Step 3 — Paginate (Amazon):** Amazon review pages support URL pagination: - Most recent sort: `https://www.amazon.com/product-reviews/{ASIN}?sortBy=recent&pageNumber={page}`
  • Network accessline 82
    Amazon review pages support URL pagination: - Most recent sort: `https://www.amazon.com/product-reviews/{ASIN}?sortBy=recent&pageNumber={page}` - Helpful sort: `https://www.amazon.com/product-reviews/{ASIN}?sortBy=helpful&pageNumber={page}`
  • Network accessline 83
    - Most recent sort: `https://www.amazon.com/product-reviews/{ASIN}?sortBy=recent&pageNumber={page}`
  • Network accessline 84
    - Helpful sort: `https://www.amazon.com/product-reviews/{ASIN}?sortBy=helpful&pageNumber={page}`
  • Dangerous shell operationline 94
    **DOM Pagination (WooCommerce/generic)**: Look for a "Next" pagination link on the reviews section. Use `eval "$(python ../ecommerce-listing/scripts/extract-listing-next-page.py)"` to detect it, then navigate.
  • Network accessline 104
    - Amazon: navigate from `https://www.amazon.com` first on fresh sessions to avoid bot detection

solutions/ecommerce/ecommerce-reviews/scripts/extract-reviews.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/ecommerce-seller-info/SKILL.md

  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page. JS code is encapsulated in Python files under the `scripts/` directory, invoked via `eval "$
  • Dangerous shell operationline 40
    eval "$(python scripts/extract-seller.py)"
  • Network accessline 45
    {   "url": "https://www.amazon.com/shops/seller/A1234567890",
  • Network accessline 46
    "url": "https://www.amazon.com/shops/seller/A1234567890",
  • Network accessline 63
    | Seller page type | URL | |-----------------|-----| | Seller storefront | `https://www.amazon.com/shops/{seller_id}` |
  • Network accessline 64
    |-----------------|-----| | Seller storefront | `https://www.amazon.com/shops/{seller_id}` | | Seller feedback (from product page) | Click "Sold by {seller_name}" link on a product page |
  • Network accessline 65
    | Seller storefront | `https://www.amazon.com/shops/{seller_id}` |
  • Network accessline 67
    | Third-party seller ratings | `https://www.amazon.com/gp/seller/{seller_id}/ref=dp_byline_sr` |
  • Dangerous shell operationline 71
    2. `eval "document.querySelector('#sellerProfileTriggerId, #merchant-info a')?.href"` to get the seller URL
  • Dangerous shell operationline 73
    4. `eval "$(python scripts/extract-seller.py)"`
  • Network accessline 77
    | Seller page type | URL | |-----------------|-----| | eBay seller storefront | `https://www.ebay.com/str/{seller_username}` |
  • Network accessline 78
    |-----------------|-----| | eBay seller storefront | `https://www.ebay.com/str/{seller_username}` | | eBay seller feedback | `https://www.ebay.com/usr/{seller_username}` |
  • Network accessline 79
    | eBay seller storefront | `https://www.ebay.com/str/{seller_username}` |
  • Network accessline 80
    | eBay seller feedback | `https://www.ebay.com/usr/{seller_username}` |
  • Dangerous shell operationline 84
    2. `eval "document.querySelector('.x-sellercard-atf__data a[href*=\"/usr/\"]')?.href"` to get seller URL
  • Network accessline 93
    - Amazon seller pages may require navigating from `https://www.amazon.com` first on fresh sessions to avoid bot detection
  • Network accessline 94
    - eBay seller pages may require navigating from `https://www.ebay.com` first

solutions/ecommerce/ecommerce-seller-info/scripts/extract-seller.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/etsy-category-listing/SKILL.md

  • Network accessline 1
    --- name: etsy-category-listing description: "Etsy category page scraper: given an Etsy category URL (e.g. https://www.etsy.com/c/jewelry) and optional page number, returns paginated product listings with listingId, shopId, title, url, imag
  • Network accessline 2
    name: etsy-category-listing description: "Etsy category page scraper: given an Etsy category URL (e.g. https://www.etsy.com/c/jewelry) and optional page number, returns paginated product listings with listingId, shopId, title, url, image, s
  • Network accessline 3
    description: "Etsy category page scraper: given an Etsy category URL (e.g. https://www.etsy.com/c/jewelry) and optional page number, returns paginated product listings with listingId, shopId, title, url, image, salePrice, originalPrice, cur
  • Network accessline 20
    - Target page is already open in the browser: `https://www.etsy.com/c/{category-path}` (or navigate to it during execution)
  • Network accessline 22
    - Browser session must survive anti-bot verification (DataDome). Best practice: navigate to `https://www.etsy.com/` first, then to the category URL, within an established stealth browser session
  • Network accessline 36
    1. `navigate https://www.etsy.com/` → `wait stable`
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 47
    Prerequisite: current page is an Etsy category page (`https://www.etsy.com/c/{category-path}`) after `wait stable`.
  • Dangerous shell operationline 49
    Extract: `eval "$(python scripts/extract-listings.py)"`
  • Network accessline 53
    {   "error": false,   "url": "https://www.etsy.com/c/jewelry?ref=catnav-10855&page=2",  // page URL
  • Network accessline 54
    "error": false,   "url": "https://www.etsy.com/c/jewelry?ref=catnav-10855&page=2",  // page URL   "currentPage": 2,                        // current page number parsed from URL, defaults 1
  • Network accessline 55
    "url": "https://www.etsy.com/c/jewelry?ref=catnav-10855&page=2",  // page URL
  • Network accessline 56
    "currentPage": 2,                        // current page number parsed from URL, defaults 1   "count": 64,                             // number of unique listings on the page   "nextPageUrl": "https://www.etsy.com/c/jewelry?ref=pagination&
  • Network accessline 57
    "count": 64,                             // number of unique listings on the page   "nextPageUrl": "https://www.etsy.com/c/jewelry?ref=pagination&page=3",  // URL of next page, null on last page   "listings": [
  • Network accessline 58
    "nextPageUrl": "https://www.etsy.com/c/jewelry?ref=pagination&page=3",  // URL of next page, null on last page
  • Network accessline 62
    "shopId": "18293002",                // Etsy shop id       "title": "Handmade Silver Ring…",    // product title       "url": "https://www.etsy.com/listing/1791916774/…",  // canonical listing URL, tracking params stripped
  • Network accessline 63
    "title": "Handmade Silver Ring…",    // product title       "url": "https://www.etsy.com/listing/1791916774/…",  // canonical listing URL, tracking params stripped       "image": "https://i.etsystatic.com/…/il_794xN.….jpg",  // primary prod
  • Network accessline 64
    "url": "https://www.etsy.com/listing/1791916774/…",  // canonical listing URL, tracking params stripped
  • Network accessline 65
    "image": "https://i.etsystatic.com/…/il_794xN.….jpg",  // primary product image

solutions/ecommerce/etsy-category-listing/scripts/extract-listings.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/etsy-keyword-search/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://www.etsy.com/search?q={keyword}` (or navigate to it during execution)
  • Network accessline 22
    - Browser session must survive anti-bot verification (DataDome). Best practice: navigate to `https://www.etsy.com/` first, then to the search URL, within an established stealth browser session
  • Network accessline 36
    1. `navigate https://www.etsy.com/` → `wait stable`
  • Network accessline 37
    2. Then `navigate https://www.etsy.com/search?q={keyword}` → `wait stable`
  • Dangerous shell operationline 45
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 51
    Prerequisite: the current page must be an Etsy search results page (`https://www.etsy.com/search?q={keyword}&page={page}`), already `wait stable`.
  • Dangerous shell operationline 53
    Extract: `eval "$(python scripts/extract-listings.py)"`
  • Network accessline 57
    {   "error": false,   "url": "https://www.etsy.com/search?q=leather+wallet",  // page URL
  • Network accessline 58
    "error": false,   "url": "https://www.etsy.com/search?q=leather+wallet",  // page URL   "currentPage": 1,                        // current page number parsed from URL, defaults 1
  • Network accessline 59
    "url": "https://www.etsy.com/search?q=leather+wallet",  // page URL
  • Network accessline 60
    "currentPage": 1,                        // current page number parsed from URL, defaults 1   "count": 57,                             // number of unique listings extracted   "nextPageUrl": "https://www.etsy.com/search?q=leather+wallet&ref
  • Network accessline 61
    "count": 57,                             // number of unique listings extracted   "nextPageUrl": "https://www.etsy.com/search?q=leather+wallet&ref=pagination&page=2",  // URL of next page, null on last page   "listings": [
  • Network accessline 62
    "nextPageUrl": "https://www.etsy.com/search?q=leather+wallet&ref=pagination&page=2",  // URL of next page, null on last page
  • Network accessline 66
    "shopId": "15980284",                // Etsy shop id       "title": "Leather Wallet…",          // product title       "url": "https://www.etsy.com/listing/547491922/leather-walletwalletman-leather",  // canonical listing URL, tracking para
  • Network accessline 67
    "title": "Leather Wallet…",          // product title       "url": "https://www.etsy.com/listing/547491922/leather-walletwalletman-leather",  // canonical listing URL, tracking params stripped       "image": "https://i.etsystatic.com/…/il_7
  • Network accessline 68
    "url": "https://www.etsy.com/listing/547491922/leather-walletwalletman-leather",  // canonical listing URL, tracking params stripped
  • Network accessline 69
    "image": "https://i.etsystatic.com/…/il_794xN.….jpg",  // primary product image
  • Network accessline 91
    **URL Pagination**: URL pattern `https://www.etsy.com/search?q={keyword}&page={N}` where `{N}` starts at 1. Termination: navigate to `{N+1}`; if `count === 0` or the previous page's `nextPageUrl` was null, stop. Practical cap: Etsy search r

solutions/ecommerce/etsy-keyword-search/scripts/extract-listings.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/etsy-product-detail/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://www.etsy.com/listing/{listing-id}/{slug}` (or navigate to it during execution)
  • Network accessline 22
    - Browser session must survive anti-bot verification (DataDome). Best practice: navigate to `https://www.etsy.com/` first, then to the listing URL
  • Network accessline 36
    1. `navigate https://www.etsy.com/` → `wait stable`
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 47
    Prerequisite: current page is an Etsy listing page (`https://www.etsy.com/listing/{listing-id}/...`) after `wait stable`.
  • Dangerous shell operationline 49
    Extract (description included): `eval "$(python scripts/extract-detail.py)"`
  • Dangerous shell operationline 51
    Extract (skip description text to reduce output size): `eval "$(python scripts/extract-detail.py --include-description false)"`
  • Network accessline 58
    {   "error": false,   "url": "https://www.etsy.com/listing/870439619/personalized-handmade-leather-mens",  // canonical URL
  • Network accessline 59
    "error": false,   "url": "https://www.etsy.com/listing/870439619/personalized-handmade-leather-mens",  // canonical URL   "listingId": "870439619",                // Etsy listing id
  • Network accessline 60
    "url": "https://www.etsy.com/listing/870439619/personalized-handmade-leather-mens",  // canonical URL
  • Network accessline 66
    "imageCount": 50,                        // total unique image URLs discovered on the page (includes user-uploaded review photos)   "images": [                              // ordered list of image URLs (main product images first, then revi
  • Network accessline 67
    "images": [                              // ordered list of image URLs (main product images first, then review photos)     "https://i.etsystatic.com/22700950/r/il/…/il_fullxfull.….jpg"   ],
  • Network accessline 68
    "https://i.etsystatic.com/22700950/r/il/…/il_fullxfull.….jpg"
  • Network accessline 70
    "description": "** Handwriting Engraved Leather Wallet for Men … **",  // full description text; null when --include-description=false   "shopName": "CaglarCreations",           // shop / seller display name   "shopUrl": "https://www.etsy.c
  • Network accessline 71
    "shopName": "CaglarCreations",           // shop / seller display name   "shopUrl": "https://www.etsy.com/shop/CaglarCreations",  // shop URL, tracking params stripped   "rating": 4.9,                           // average star rating (numer
  • Network accessline 72
    "shopUrl": "https://www.etsy.com/shop/CaglarCreations",  // shop URL, tracking params stripped
  • Network accessline 90
    "listedDate": "Jul 8, 2026",             // date extracted from 'Listed on ...' text; null when not present   "relatedTags": [                         // links to related Etsy search / market pages surfaced on the listing     {"text": "Pers
  • Network accessline 91
    "relatedTags": [                         // links to related Etsy search / market pages surfaced on the listing     {"text": "Personalized Wedding Scroll for Sale", "url": "https://www.etsy.com/market/personalized_wedding_scroll"}   ]
  • Network accessline 92
    {"text": "Personalized Wedding Scroll for Sale", "url": "https://www.etsy.com/market/personalized_wedding_scroll"}

solutions/ecommerce/etsy-product-detail/scripts/extract-detail.py

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 79
    const rm = rt.match(/(\d+(?:\.\d+)?)/);

solutions/ecommerce/etsy-shop-catalog/SKILL.md

  • Network accessline 1
    --- name: etsy-shop-catalog description: "Etsy shop catalog scraper: given an Etsy shop URL (e.g. https://www.etsy.com/shop/{shop-name}) and optional page number, returns paginated product listings from that shop's own storefront with listi
  • Network accessline 2
    name: etsy-shop-catalog description: "Etsy shop catalog scraper: given an Etsy shop URL (e.g. https://www.etsy.com/shop/{shop-name}) and optional page number, returns paginated product listings from that shop's own storefront with listingId
  • Network accessline 3
    description: "Etsy shop catalog scraper: given an Etsy shop URL (e.g. https://www.etsy.com/shop/{shop-name}) and optional page number, returns paginated product listings from that shop's own storefront with listingId, shopId, title, url, im
  • Network accessline 20
    - Target page is already open in the browser: `https://www.etsy.com/shop/{shop-name}` (or navigate to it during execution)
  • Network accessline 22
    - Browser session must survive anti-bot verification (DataDome). Best practice: navigate to `https://www.etsy.com/` first, then to the shop URL
  • Network accessline 36
    1. `navigate https://www.etsy.com/` → `wait stable`
  • Network accessline 37
    2. Then `navigate https://www.etsy.com/shop/{shop-name}` → `wait stable`
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 47
    Prerequisite: current page is an Etsy shop page (`https://www.etsy.com/shop/{shop-name}`) after `wait stable`. Works on both the default first tab and paginated tabs.
  • Dangerous shell operationline 49
    Extract: `eval "$(python scripts/extract-listings.py)"`
  • Network accessline 53
    {   "error": false,   "url": "https://www.etsy.com/shop/Xcraftsman?ref=items-pagination&page=2&sort_order=custom",  // page URL
  • Network accessline 54
    "error": false,   "url": "https://www.etsy.com/shop/Xcraftsman?ref=items-pagination&page=2&sort_order=custom",  // page URL   "currentPage": 2,                        // current page number parsed from URL, defaults 1
  • Network accessline 55
    "url": "https://www.etsy.com/shop/Xcraftsman?ref=items-pagination&page=2&sort_order=custom",  // page URL
  • Network accessline 56
    "currentPage": 2,                        // current page number parsed from URL, defaults 1   "count": 44,                             // number of unique listings on the page   "nextPageUrl": "https://www.etsy.com/shop/Xcraftsman?ref=items
  • Network accessline 57
    "count": 44,                             // number of unique listings on the page   "nextPageUrl": "https://www.etsy.com/shop/Xcraftsman?ref=items-pagination&page=3&sort_order=custom",  // URL of next page, null on last page   "listings": [
  • Network accessline 58
    "nextPageUrl": "https://www.etsy.com/shop/Xcraftsman?ref=items-pagination&page=3&sort_order=custom",  // URL of next page, null on last page
  • Network accessline 62
    "shopId": "13350861",                // Etsy shop id (same across the whole shop)       "title": "Handmade Leather Bifold Wallet",  // product title       "url": "https://www.etsy.com/listing/4332558944/…",  // canonical listing URL, tracki
  • Network accessline 63
    "title": "Handmade Leather Bifold Wallet",  // product title       "url": "https://www.etsy.com/listing/4332558944/…",  // canonical listing URL, tracking params stripped       "image": "https://i.etsystatic.com/…/il_794xN.….jpg",  // prima
  • Network accessline 64
    "url": "https://www.etsy.com/listing/4332558944/…",  // canonical listing URL, tracking params stripped
  • Network accessline 65
    "image": "https://i.etsystatic.com/…/il_794xN.….jpg",  // primary product image
  • Network accessline 87
    **URL Pagination**: URL pattern `https://www.etsy.com/shop/{shop-name}?ref=items-pagination&page={N}&sort_order=custom` where `{N}` starts at 1. Follow the returned `nextPageUrl` verbatim to preserve `sort_order` and other shop-tab params. 

solutions/ecommerce/etsy-shop-catalog/scripts/extract-listings.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/goofish-item-detail/SKILL.md

  • Network accessline 20
    - Browser with an active Goofish session (login required — item detail pages require authenticated access) - Target item URL format: `https://www.goofish.com/item?id={item_id}&categoryId={category_id}`
  • Network accessline 21
    - Target item URL format: `https://www.goofish.com/item?id={item_id}&categoryId={category_id}`
  • Network accessline 35
    Otherwise: open `https://www.goofish.com/` and observe the page:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed on the page. JS code is encapsulated in Python files under the `scripts/` directory, invoked via `eval "$(python scri
  • Network accessline 49
    1. `navigate https://www.goofish.com/item?id={item_id}&categoryId={category_id}`
  • Dangerous shell operationline 64
    `eval "$(python scripts/extract-item-detail.py)"`
  • Network accessline 68
    {   "item_id": "1054899470781",   "item_url": "https://www.goofish.com/item?id=1054899470781&categoryId=126862528",
  • Network accessline 69
    "item_id": "1054899470781",   "item_url": "https://www.goofish.com/item?id=1054899470781&categoryId=126862528",   "title": "出一台iPhone 15 128G,电池健康度高,成色九新以上...",
  • Network accessline 70
    "item_url": "https://www.goofish.com/item?id=1054899470781&categoryId=126862528",
  • Network accessline 73
    "original_price": "899.00",   "seller_name": "小王数码严选",   "seller_avatar": "https://img.alicdn.com/bao/uploaded/...",
  • Network accessline 74
    "seller_name": "小王数码严选",   "seller_avatar": "https://img.alicdn.com/bao/uploaded/...",   "seller_labels": ["成都", "刚刚擦亮", "来闲鱼5年", "卖出204件宝贝", "好评率100%"],
  • Network accessline 75
    "seller_avatar": "https://img.alicdn.com/bao/uploaded/...",
  • Network accessline 77
    "description": "出一台iPhone 15 128G,电池健康度高,成色九新以上...",   "images": [     "https://img.alicdn.com/bao/uploaded/i4/...",
  • Network accessline 78
    "images": [     "https://img.alicdn.com/bao/uploaded/i4/...",     "https://img.alicdn.com/bao/uploaded/i2/..."
  • Network accessline 79
    "https://img.alicdn.com/bao/uploaded/i4/...",
  • Network accessline 80
    "https://img.alicdn.com/bao/uploaded/i2/..."

solutions/ecommerce/goofish-item-detail/scripts/extract-item-detail.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/goofish-search-list/SKILL.md

  • Network accessline 20
    - Browser with an active Goofish session (logged-in account recommended for full results) - Target page is already open or will be opened: `https://www.goofish.com/search?q={keyword}`
  • Network accessline 21
    - Target page is already open or will be opened: `https://www.goofish.com/search?q={keyword}`
  • Network accessline 35
    Otherwise: open `https://www.goofish.com/` and observe the page:
  • Dangerous shell operationline 41
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page. JS code is encapsulated in Python files under the `scripts/` directory, invoked via `eval "$
  • Network accessline 47
    1. `navigate https://www.goofish.com/search?q={keyword}`
  • Dangerous shell operationline 57
    `eval "$(python scripts/extract-search-items.py)"`
  • Network accessline 64
    "item_id": "1054668718340",        // unique item ID       "category_id": "126862528",        // category ID       "item_url": "https://www.goofish.com/item?id=1054668718340&categoryId=126862528",
  • Network accessline 65
    "category_id": "126862528",        // category ID       "item_url": "https://www.goofish.com/item?id=1054668718340&categoryId=126862528",       "title": "美版iPhone 14 国行256G 纯原 原版原漆",  // full title text
  • Network accessline 66
    "item_url": "https://www.goofish.com/item?id=1054668718340&categoryId=126862528",
  • Network accessline 67
    "title": "美版iPhone 14 国行256G 纯原 原版原漆",  // full title text       "image_url": "https://img.alicdn.com/bao/uploaded/...",  // thumbnail URL       "price": "1810",                   // numeric string, CNY, no ¥ sign
  • Network accessline 68
    "image_url": "https://img.alicdn.com/bao/uploaded/...",  // thumbnail URL
  • Dangerous shell operationline 83
    `eval "$(python scripts/apply-search-filters.py --sort {sort} --publish-days {days} --price-min {min} --price-max {max})"`
  • Dangerous shell operationline 104
    `eval "$(python scripts/goto-page.py {page_number})"`

solutions/ecommerce/goofish-search-list/scripts/apply-search-filters.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/goofish-search-list/scripts/extract-search-items.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/goofish-search-list/scripts/goto-page.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/taobao-keyword-search/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://s.taobao.com/search`
  • Network accessline 35
    Otherwise: open `https://www.taobao.com` and observe the page header:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Network accessline 49
    1. `navigate "https://s.taobao.com/search?q={keyword}&page={page}&ie=utf8"`
  • Dangerous shell operationline 51
    3. `eval "$(python scripts/search-products.py '{keyword}' --page {page} --sort '{sort}' --tab '{tab}' --start-price {startPrice} --end-price {endPrice})"`
  • Network accessline 63
    {     "itemId": "694593508978",     "itemUrl": "https://item.taobao.com/item.htm?id=694593508978",
  • Network accessline 64
    "itemId": "694593508978",     "itemUrl": "https://item.taobao.com/item.htm?id=694593508978",     "title": "蓝牙耳机2025新款官方",
  • Network accessline 65
    "itemUrl": "https://item.taobao.com/item.htm?id=694593508978",
  • Network accessline 68
    "priceYuan": 79.9,     "priceDesc": "券后价",     "imageUrl": "https://img.alicdn.com/imgextra/...",
  • Network accessline 69
    "priceDesc": "券后价",     "imageUrl": "https://img.alicdn.com/imgextra/...",     "salesCount": "40万+人付款",
  • Network accessline 70
    "imageUrl": "https://img.alicdn.com/imgextra/...",
  • Network accessline 92
    **URL Pagination**: URL pattern `https://s.taobao.com/search?q={keyword}&page={N}&ie=utf8`, increment `page` from 1. Each page returns ~47 items. Termination: when `result count < 10` or returned items duplicate previous page.

solutions/ecommerce/taobao-keyword-search/scripts/search-products.py

  • Executable scriptline 1
    Executable file
  • Network accessline 24
    var href = a ? a.href : '';           var url;           try {{ url = new URL(href || 'https://taobao.com'); }} catch(e) {{ url = new URL('https://taobao.com'); }}
  • Network accessline 25
    var url;           try {{ url = new URL(href || 'https://taobao.com'); }} catch(e) {{ url = new URL('https://taobao.com'); }}           var img = card.querySelector('img[class*="mainImg"]') || card.querySelector('img');
  • Network accessline 26
    try {{ url = new URL(href || 'https://taobao.com'); }} catch(e) {{ url = new URL('https://taobao.com'); }}

solutions/ecommerce/taobao-product-detail/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://item.taobao.com/item.htm?id={itemId}`
  • Network accessline 35
    Otherwise: open `https://www.taobao.com` and observe the page header:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Network accessline 49
    1. `navigate "https://item.taobao.com/item.htm?id={itemId}"`
  • Dangerous shell operationline 52
    4. `eval "$(python scripts/extract-product.py '{itemId}')"`
  • Network accessline 56
    {   "itemId": "744983869996",   "itemUrl": "https://detail.tmall.com/item.htm?id=744983869996",
  • Network accessline 57
    "itemId": "744983869996",   "itemUrl": "https://detail.tmall.com/item.htm?id=744983869996",   "isTmall": true,
  • Network accessline 58
    "itemUrl": "https://detail.tmall.com/item.htm?id=744983869996",
  • Network accessline 63
    "originalPrice": null,   "shopName": "绿联数码旗舰店",   "shopUrl": "https://shop67095450.taobao.com/category.htm",
  • Network accessline 64
    "shopName": "绿联数码旗舰店",   "shopUrl": "https://shop67095450.taobao.com/category.htm",   "shopId": "67095450",
  • Network accessline 65
    "shopUrl": "https://shop67095450.taobao.com/category.htm",
  • Network accessline 66
    "shopId": "67095450",   "images": [     "https://img.alicdn.com/imgextra/i3/713464357/O1CN01fQN7GG1i3YdCfBjzF_!!0-item_pic.jpg"
  • Network accessline 67
    "images": [     "https://img.alicdn.com/imgextra/i3/713464357/O1CN01fQN7GG1i3YdCfBjzF_!!0-item_pic.jpg"   ],
  • Network accessline 68
    "https://img.alicdn.com/imgextra/i3/713464357/O1CN01fQN7GG1i3YdCfBjzF_!!0-item_pic.jpg"

solutions/ecommerce/taobao-product-detail/scripts/extract-product.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/taobao-product-reviews/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://item.taobao.com/item.htm?id={itemId}`
  • Network accessline 35
    Otherwise: open `https://www.taobao.com` and observe the page header:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Network accessline 49
    1. `navigate "https://item.taobao.com/item.htm?id={itemId}"`
  • Dangerous shell operationline 57
    6. `eval "$(python scripts/extract-reviews.py '{itemId}')"`
  • Network accessline 66
    "content": "商品非常好,造工很用心!,还会再回购!",     "photos": [       "https://gw.alicdn.com/bao/uploaded/i1/O1CN015Cyg4b2FPR2YNq3PD_!!4611686018427383816-0-rate.jpg"
  • Network accessline 67
    "photos": [       "https://gw.alicdn.com/bao/uploaded/i1/O1CN015Cyg4b2FPR2YNq3PD_!!4611686018427383816-0-rate.jpg"     ],
  • Network accessline 68
    "https://gw.alicdn.com/bao/uploaded/i1/O1CN015Cyg4b2FPR2YNq3PD_!!4611686018427383816-0-rate.jpg"
  • Dangerous shell operationline 88
    1. `eval "$(python scripts/next-review-page.py)"`
  • Dangerous shell operationline 92
    4. Re-run `eval "$(python scripts/extract-reviews.py '{itemId}')"`

solutions/ecommerce/taobao-product-reviews/scripts/extract-reviews.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/taobao-product-reviews/scripts/next-review-page.py

  • Executable scriptline 1
    Executable file

solutions/ecommerce/taobao-shop-catalog/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://shop{shopId}.taobao.com/category.htm`
  • Network accessline 35
    Otherwise: open `https://www.taobao.com` and observe the page header:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Network accessline 49
    1. `navigate "https://shop{shopId}.taobao.com/category.htm?search=y&pageNo={page}"`
  • Network accessline 50
    - Note: Tmall shops redirect to `https://{shopName}.tmall.com/category.htm?search=y&pageNo={page}`
  • Dangerous shell operationline 53
    3. `eval "$(python scripts/extract-catalog.py '{shopId}' --page {page})"`
  • Network accessline 63
    "itemId": "1041516493508",     "title": "绿联T8梯形排插插座转换器插线板大间距宿舍桌面充电多孔位插排",     "imageUrl": "https://img.alicdn.com/imgextra/...",
  • Network accessline 64
    "title": "绿联T8梯形排插插座转换器插线板大间距宿舍桌面充电多孔位插排",     "imageUrl": "https://img.alicdn.com/imgextra/...",     "itemUrl": "https://detail.tmall.com/item.htm?id=1041516493508"
  • Network accessline 65
    "imageUrl": "https://img.alicdn.com/imgextra/...",
  • Network accessline 66
    "itemUrl": "https://detail.tmall.com/item.htm?id=1041516493508"
  • Network accessline 79
    **URL Pagination**: URL pattern `https://shop{shopId}.taobao.com/category.htm?search=y&pageNo={N}` (or `https://{shopName}.tmall.com/category.htm?search=y&pageNo={N}` after redirect), increment `pageNo` from 1. Each page returns up to 60 it

solutions/ecommerce/taobao-shop-catalog/scripts/extract-catalog.py

  • Executable scriptline 1
    Executable file
  • Network accessline 37
    title: title,             imageUrl: imgUrl,             itemUrl: 'https://item.taobao.com/item.htm?id=' + itemId
  • Network accessline 38
    imageUrl: imgUrl,             itemUrl: 'https://item.taobao.com/item.htm?id=' + itemId           }};
  • Network accessline 39
    itemUrl: 'https://item.taobao.com/item.htm?id=' + itemId

solutions/ecommerce/walmart-category-listing/SKILL.md

  • Network accessline 20
    - Target category page is open in the browser: `https://www.walmart.com/browse/{category-slug}/{category-ids}?page={page}`
  • Dangerous shell operationline 32
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Dangerous shell operationline 42
    3. `eval "$(python scripts/extract-listing.py)"`
  • Network accessline 44
    URL format examples: - `https://www.walmart.com/browse/home/?page=1`
  • Network accessline 45
    - `https://www.walmart.com/browse/home/?page=1`
  • Network accessline 46
    - `https://www.walmart.com/browse/auto-tires/brake-pads/91083_1074765_9038935_4582920?page=1`
  • Network accessline 47
    - `https://www.walmart.com/cp/1149374?page=2` (category ID URL)
  • Network accessline 48
    - With filters: `https://www.walmart.com/browse/electronics/laptops?minPrice=500&maxPrice=1000&page=1`
  • Network accessline 60
    {       "itemId": "2830965432",       "url": "https://www.walmart.com/ip/Product-Name/2830965432",
  • Network accessline 61
    "itemId": "2830965432",       "url": "https://www.walmart.com/ip/Product-Name/2830965432",       "title": "Product title here",
  • Network accessline 62
    "url": "https://www.walmart.com/ip/Product-Name/2830965432",
  • Network accessline 63
    "title": "Product title here",       "brand": "Brand Name",       "image": "https://i5.walmartimages.com/seo/product.jpeg",
  • Network accessline 64
    "brand": "Brand Name",       "image": "https://i5.walmartimages.com/seo/product.jpeg",       "price": 19.99,
  • Network accessline 65
    "image": "https://i5.walmartimages.com/seo/product.jpeg",
  • Network accessline 94
    `itemCount >= 1` AND `items[0].itemId` is non-null AND `items[0].url` starts with `https://www.walmart.com/ip/`

solutions/ecommerce/walmart-category-listing/scripts/extract-listing.py

  • Executable scriptline 1
    Executable file
  • Network accessline 25
    seen[item.usItemId] = true;         var canonUrl = item.canonicalUrl || null;         var cleanUrl = canonUrl ? 'https://www.walmart.com' + canonUrl.split('?')[0] : null;
  • Network accessline 26
    var canonUrl = item.canonicalUrl || null;         var cleanUrl = canonUrl ? 'https://www.walmart.com' + canonUrl.split('?')[0] : null;         var price = item.price || (item.priceInfo && item.priceInfo.currentPrice && item.priceInfo.curren
  • Network accessline 27
    var cleanUrl = canonUrl ? 'https://www.walmart.com' + canonUrl.split('?')[0] : null;

solutions/ecommerce/walmart-keyword-search/SKILL.md

  • Network accessline 20
    - Target search page is open in the browser: `https://www.walmart.com/search?q={keyword}&page={page}`
  • Dangerous shell operationline 32
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 40
    1. `navigate "https://www.walmart.com/search?q={keyword}&page={page}&sort={sort}"`
  • Dangerous shell operationline 42
    3. `eval "$(python scripts/extract-listing.py)"`
  • Network accessline 59
    {       "itemId": "18656507313",       "url": "https://www.walmart.com/ip/HP-14-N150-4-128-Blue/18656507313",
  • Network accessline 60
    "itemId": "18656507313",       "url": "https://www.walmart.com/ip/HP-14-N150-4-128-Blue/18656507313",       "title": "HP 14 inch HD Windows Laptop Intel Processor N150 4GB 128GB UFS Waterfall Blue",
  • Network accessline 61
    "url": "https://www.walmart.com/ip/HP-14-N150-4-128-Blue/18656507313",
  • Network accessline 62
    "title": "HP 14 inch HD Windows Laptop Intel Processor N150 4GB 128GB UFS Waterfall Blue",       "brand": null,       "image": "https://i5.walmartimages.com/seo/HP-14.jpeg",
  • Network accessline 63
    "brand": null,       "image": "https://i5.walmartimages.com/seo/HP-14.jpeg",       "price": 229,
  • Network accessline 64
    "image": "https://i5.walmartimages.com/seo/HP-14.jpeg",
  • Network accessline 93
    **URL Pagination**: URL pattern `https://www.walmart.com/search?q={keyword}&page={N}&sort={sort}`. Increment `page` by 1 each iteration. Termination: `page > maxPage` (from response `maxPage` field) OR `itemCount === 0`. Note: Walmart caps 
  • Network accessline 97
    `itemCount >= 1` AND `items[0].itemId` is non-null AND `items[0].url` starts with `https://www.walmart.com/ip/`

solutions/ecommerce/walmart-keyword-search/scripts/extract-listing.py

  • Executable scriptline 1
    Executable file
  • Network accessline 25
    seen[item.usItemId] = true;         var canonUrl = item.canonicalUrl || null;         var cleanUrl = canonUrl ? 'https://www.walmart.com' + canonUrl.split('?')[0] : null;
  • Network accessline 26
    var canonUrl = item.canonicalUrl || null;         var cleanUrl = canonUrl ? 'https://www.walmart.com' + canonUrl.split('?')[0] : null;         var price = item.price || (item.priceInfo && item.priceInfo.currentPrice && item.priceInfo.curren
  • Network accessline 27
    var cleanUrl = canonUrl ? 'https://www.walmart.com' + canonUrl.split('?')[0] : null;

solutions/ecommerce/walmart-product-detail/SKILL.md

  • Network accessline 20
    - Target product page is open in the browser: `https://www.walmart.com/ip/{product-slug}/{item-id}`
  • Dangerous shell operationline 32
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 40
    1. `navigate "https://www.walmart.com/ip/{product-slug}/{item-id}"`
  • Dangerous shell operationline 42
    3. `eval "$(python scripts/extract-product-detail.py)"`
  • Network accessline 48
    {   "itemId": "18656507313",   "url": "https://www.walmart.com/ip/HP-14-N150-4-128-Blue/18656507313",
  • Network accessline 49
    "itemId": "18656507313",   "url": "https://www.walmart.com/ip/HP-14-N150-4-128-Blue/18656507313",   "title": "HP 14 inch HD Windows Laptop Intel Processor N150 4GB 128GB UFS Waterfall Blue",
  • Network accessline 50
    "url": "https://www.walmart.com/ip/HP-14-N150-4-128-Blue/18656507313",
  • Network accessline 51
    "title": "HP 14 inch HD Windows Laptop Intel Processor N150 4GB 128GB UFS Waterfall Blue",   "brand": "HP",   "brandUrl": "https://www.walmart.com/search?q=HP&facet=brand:HP",
  • Network accessline 52
    "brand": "HP",   "brandUrl": "https://www.walmart.com/search?q=HP&facet=brand:HP",   "model": "14-ep2112wm",
  • Network accessline 53
    "brandUrl": "https://www.walmart.com/search?q=HP&facet=brand:HP",
  • Network accessline 62
    "availability": "IN_STOCK",   "category": [     {"name": "Electronics", "url": "https://www.walmart.com/cp/electronics/3944"},
  • Network accessline 63
    "category": [     {"name": "Electronics", "url": "https://www.walmart.com/cp/electronics/3944"},     {"name": "Laptops", "url": "https://www.walmart.com/cp/laptops/3951"}
  • Network accessline 64
    {"name": "Electronics", "url": "https://www.walmart.com/cp/electronics/3944"},
  • Network accessline 65
    {"name": "Laptops", "url": "https://www.walmart.com/cp/laptops/3951"}
  • Network accessline 73
    "averageRating": 4.4,   "numberOfReviews": 63,   "thumbnail": "https://i5.walmartimages.com/seo/HP-14.jpeg",
  • Network accessline 74
    "numberOfReviews": 63,   "thumbnail": "https://i5.walmartimages.com/seo/HP-14.jpeg",   "images": ["https://i5.walmartimages.com/seo/image1.jpeg", "https://i5.walmartimages.com/asr/image2.jpeg"],
  • Network accessline 75
    "thumbnail": "https://i5.walmartimages.com/seo/HP-14.jpeg",
  • Network accessline 76
    "images": ["https://i5.walmartimages.com/seo/image1.jpeg", "https://i5.walmartimages.com/asr/image2.jpeg"],

solutions/ecommerce/walmart-product-detail/scripts/extract-product-detail.py

  • Executable scriptline 1
    Executable file
  • Network accessline 63
    for (var ci = 0; ci < pd.category.path.length; ci++) {         var c = pd.category.path[ci];         category.push({name: c.name, url: c.url ? 'https://www.walmart.com' + c.url : null});
  • Network accessline 64
    var c = pd.category.path[ci];         category.push({name: c.name, url: c.url ? 'https://www.walmart.com' + c.url : null});       }
  • Network accessline 65
    category.push({name: c.name, url: c.url ? 'https://www.walmart.com' + c.url : null});
  • Network accessline 104
    var canonUrl = pd.canonicalUrl || null;     var cleanUrl = canonUrl ? 'https://www.walmart.com' + canonUrl.split('?')[0] : null;
  • Network accessline 105
    var cleanUrl = canonUrl ? 'https://www.walmart.com' + canonUrl.split('?')[0] : null;
  • Network accessline 114
    title: pd.name,       brand: pd.brand || null,       brandUrl: pd.brandUrl ? 'https://www.walmart.com' + pd.brandUrl : null,
  • Network accessline 115
    brand: pd.brand || null,       brandUrl: pd.brandUrl ? 'https://www.walmart.com' + pd.brandUrl : null,       model: pd.model || null,
  • Network accessline 116
    brandUrl: pd.brandUrl ? 'https://www.walmart.com' + pd.brandUrl : null,

solutions/ecommerce/walmart-product-reviews/SKILL.md

  • Network accessline 20
    - Target reviews page is open in the browser: `https://www.walmart.com/reviews/product/{item-id}?page={page}`
  • Dangerous shell operationline 32
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 40
    1. `navigate "https://www.walmart.com/reviews/product/{item-id}?page={page}"`
  • Dangerous shell operationline 42
    3. `eval "$(python scripts/extract-reviews.py)"`
  • Network accessline 92
    **URL Pagination**: URL pattern `https://www.walmart.com/reviews/product/{item-id}?page={N}`. Start at page 1. Increment page by 1 each iteration. Termination: `reviewsOnPage === 0` OR `page > ceil(totalReviews / 10)`. Each page returns 10 

solutions/ecommerce/walmart-product-reviews/scripts/extract-reviews.py

  • Executable scriptline 1
    Executable file

solutions/lead-generation/business-contact-social-links-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key yet, please visit the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."
  • Network accessline 29
    - **Type**: `string`    - **Description**: The name of the company to search for, or the direct website URL to scrape social links from.    - **Example**: `OpenAI` or `https://www.rotorooter.com/`
  • Network accessline 31
    - **Example**: `OpenAI` or `https://www.rotorooter.com/`
  • Network accessline 40
    # Scrape by website URL python -u ./scripts/business_contact_social_links.py "https://www.rotorooter.com/"
  • Network accessline 41
    python -u ./scripts/business_contact_social_links.py "https://www.rotorooter.com/"
  • Network accessline 68
    - If the output **contains** `"concurrent"` or `"too many running tasks"`, it means the concurrent task limit has been reached. **Do not retry**; guide the user to upgrade their plan.      **Agent must inform the user**:      > "The current
  • Network accessline 69
    **Agent must inform the user**:      > "The current task cannot be executed because your BrowserAct account has reached the concurrent task limit. Please visit the [BrowserAct Plan Upgrade Page](https://www.browseract.com/reception/recharge
  • Network accessline 70
    > "The current task cannot be executed because your BrowserAct account has reached the concurrent task limit. Please visit the [BrowserAct Plan Upgrade Page](https://www.browseract.com/reception/recharge) to upgrade your plan."

solutions/lead-generation/business-contact-social-links-skill/scripts/business_contact_social_links.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID_COMPANY = "89720224238575367" TEMPLATE_ID_URL = "64208669348207286" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 16
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]
  • Network accessline 49
    try:         res = requests.post(
  • Network accessline 50
    res = requests.post(
  • Network accessline 61
    print("Error: Invalid authorization. Please check your BrowserAct API Key.", flush=True)         elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. P
  • Network accessline 62
    elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)         el
  • Network accessline 63
    print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)
  • Network accessline 75
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(
  • Network accessline 76
    try:             status_res = requests.get(                 f"{API_BASE_URL}/get-task-status?task_id={task_id}",
  • Network accessline 77
    status_res = requests.get(
  • Network accessline 104
    try:         task_info = requests.get(
  • Network accessline 105
    task_info = requests.get(
  • Access to secretsline 122
    [Credential-related source omitted]
  • Network accessline 124
    if len(sys.argv) < 2:         print("Usage: python business_contact_social_links.py <target>", flush=True)         print("target can be a Company Name (e.g., 'OpenAI') or a Website URL (e.g., 'https://www.rotorooter.com/')", flush=True)
  • Network accessline 125
    print("Usage: python business_contact_social_links.py <target>", flush=True)         print("target can be a Company Name (e.g., 'OpenAI') or a Website URL (e.g., 'https://www.rotorooter.com/')", flush=True)         sys.exit(1)
  • Network accessline 126
    print("target can be a Company Name (e.g., 'OpenAI') or a Website URL (e.g., 'https://www.rotorooter.com/')", flush=True)
  • Access to secretsline 129
    [Credential-related source omitted]
  • Network accessline 130
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 131
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 132
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 134
    [Credential-related source omitted]
  • Access to secretsline 139
    [Credential-related source omitted]

solutions/lead-generation/github-project-contributor-finder-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key yet, please visit the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."
  • Network accessline 98
    - If the output **contains** `"concurrent"` or `"too many running tasks"`, it means the concurrent task limit has been reached. **Do not retry**; guide the user to upgrade their plan.      **Agent must inform the user**:      > "The current
  • Network accessline 99
    **Agent must inform the user**:      > "The current task cannot be executed because your BrowserAct account has reached the concurrent task limit. Please visit the [BrowserAct Plan Upgrade Page](https://www.browseract.com/reception/recharge
  • Network accessline 100
    > "The current task cannot be executed because your BrowserAct account has reached the concurrent task limit. Please visit the [BrowserAct Plan Upgrade Page](https://www.browseract.com/reception/recharge) to upgrade your plan."

solutions/lead-generation/github-project-contributor-finder-api-skill/scripts/github_project_contributor_finder_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "90284769428414983" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Network accessline 36
    print(f"Start Task", flush=True)     try:         res = requests.post(
  • Network accessline 37
    try:         res = requests.post(             f"{API_BASE_URL}/run-task-by-template",
  • Network accessline 38
    res = requests.post(
  • Network accessline 49
    print("Error: Invalid authorization. Please check your BrowserAct API Key.", flush=True)         elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. P
  • Network accessline 50
    elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)         el
  • Network accessline 51
    print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)
  • Network accessline 63
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(
  • Network accessline 64
    try:             status_res = requests.get(                 f"{API_BASE_URL}/get-task-status?task_id={task_id}",
  • Network accessline 65
    status_res = requests.get(
  • Network accessline 92
    try:         task_info = requests.get(
  • Network accessline 93
    task_info = requests.get(
  • Access to secretsline 115
    [Credential-related source omitted]
  • Access to secretsline 116
    [Credential-related source omitted]
  • Network accessline 117
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 118
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 119
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 121
    [Credential-related source omitted]
  • Access to secretsline 130
    [Credential-related source omitted]

solutions/lead-generation/google-maps-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key, please visit the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."

solutions/lead-generation/google-maps-api-skill/scripts/google_maps_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "77577579210625331" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 29
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 30
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 31
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 50
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 51
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 52
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 73
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 74
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 90
    [Credential-related source omitted]
  • Access to secretsline 96
    [Credential-related source omitted]
  • Network accessline 97
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 98
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 99
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 108
    [Credential-related source omitted]

solutions/lead-generation/google-maps-contact-extract/SKILL.md

  • Network accessline 20
    - For search: navigate to `https://www.google.com/maps/search/{keyword}/@{lat},{lng},{zoom}z` — the search results sidebar (feed) must be visible
  • Network accessline 21
    - For place detail: navigate to the individual place URL `https://www.google.com/maps/place/?q=place_id:{place_id}` — the place sidebar with name, address, phone must be visible
  • Dangerous shell operationline 35
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Network accessline 42
    navigate https://www.google.com/maps/search/{keyword}/@{lat},{lng},{zoom}z
  • Dangerous shell operationline 44
    eval "$(python scripts/search-places.py '{keyword}' --max {max_count})"
  • Network accessline 68
    "lat": 40.7368708,       "lng": -73.9909297,       "maps_url": "https://www.google.com/maps/place/Blue+Dove+Coffee/data=..."
  • Network accessline 69
    "lng": -73.9909297,       "maps_url": "https://www.google.com/maps/place/Blue+Dove+Coffee/data=..."     }
  • Network accessline 70
    "maps_url": "https://www.google.com/maps/place/Blue+Dove+Coffee/data=..."
  • Dangerous shell operationline 81
    eval "$(python scripts/search-places.py '{keyword}' --max {total_count})"
  • Network accessline 89
    navigate https://www.google.com/maps/place/?q=place_id:{place_id}
  • Dangerous shell operationline 92
    eval "$(python scripts/place-detail.py)"
  • Network accessline 106
    "located_in": null,   "phone": "(646) 939-0937",   "website": "https://www.bluedovecoffee.com/",
  • Network accessline 107
    "phone": "(646) 939-0937",   "website": "https://www.bluedovecoffee.com/",   "menu_url": "https://order.dripos.com/Blue-Dove-Coffee",
  • Network accessline 108
    "website": "https://www.bluedovecoffee.com/",
  • Network accessline 109
    "menu_url": "https://order.dripos.com/Blue-Dove-Coffee",
  • Network accessline 121
    "service_options": ["Serves dine-in", "Offers takeout", "Offers delivery"],   "amenities": ["Has wheelchair accessible entrance", "Accepts credit cards", "Accepts NFC mobile payments"],   "maps_url": "https://www.google.com/maps/place/..."
  • Network accessline 122
    "amenities": ["Has wheelchair accessible entrance", "Accepts credit cards", "Accepts NFC mobile payments"],   "maps_url": "https://www.google.com/maps/place/..." }
  • Network accessline 123
    "maps_url": "https://www.google.com/maps/place/..."
  • Dangerous shell operationline 134
    eval "$(python scripts/extract-contacts.py --depth shallow)"
  • Dangerous shell operationline 142
    eval "$(python scripts/extract-contacts.py --depth shallow)"
  • Network accessline 150
    {   "source_url": "https://www.bluedovecoffee.com/",
  • Network accessline 151
    "source_url": "https://www.bluedovecoffee.com/",
  • Network accessline 153
    "phone_numbers": [],   "social_media": {     "facebook": ["https://www.facebook.com/people/Blue-Dove-Coffee/100094867009022"],
  • Network accessline 154
    "social_media": {     "facebook": ["https://www.facebook.com/people/Blue-Dove-Coffee/100094867009022"],     "instagram": ["https://www.instagram.com/bluedovecoffee"],
  • Network accessline 155
    "facebook": ["https://www.facebook.com/people/Blue-Dove-Coffee/100094867009022"],
  • Network accessline 156
    "instagram": ["https://www.instagram.com/bluedovecoffee"],
  • Network accessline 157
    "tiktok": ["https://www.tiktok.com/@bluedovecoffee"]
  • Network accessline 169
    navigate https://www.google.com/maps/search/{keyword}/@{lat},{lng},{zoom}z
  • Dangerous shell operationline 171
    eval "$(python scripts/search-places.py '{keyword}' --max {max_count})"
  • Dangerous shell operationline 180
    eval "$(python scripts/place-detail.py)"
  • Dangerous shell operationline 188
    eval "$(python scripts/extract-contacts.py --depth deep)"
  • Network accessline 196
    "address": "33 Union Square W, New York, NY 10003",      "phone": "(646) 939-0937",      "website": "https://www.bluedovecoffee.com/",
  • Network accessline 197
    "phone": "(646) 939-0937",      "website": "https://www.bluedovecoffee.com/",      "rating": 4.8,
  • Network accessline 198
    "website": "https://www.bluedovecoffee.com/",
  • Network accessline 205
    "emails": ["support@bluedovecoffee.com"],      "social_media": {        "instagram": ["https://www.instagram.com/bluedovecoffee"],
  • Network accessline 206
    "social_media": {        "instagram": ["https://www.instagram.com/bluedovecoffee"],        "tiktok": ["https://www.tiktok.com/@bluedovecoffee"]
  • Network accessline 207
    "instagram": ["https://www.instagram.com/bluedovecoffee"],
  • Network accessline 208
    "tiktok": ["https://www.tiktok.com/@bluedovecoffee"]
  • Dangerous shell operationline 219
    eval "$(python scripts/search-places.py '{keyword}' --max {total_count})"
  • Dangerous shell operationline 244
    browser-act --session gmaps-s1 eval "$(python scripts/place-detail.py)"

solutions/lead-generation/google-maps-contact-extract/scripts/extract-contacts.py

  • Executable scriptline 1
    Executable file

solutions/lead-generation/google-maps-contact-extract/scripts/place-detail.py

  • Executable scriptline 1
    Executable file

solutions/lead-generation/google-maps-contact-extract/scripts/search-places.py

  • Executable scriptline 1
    Executable file

solutions/lead-generation/google-maps-reviews-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key, please visit the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."

solutions/lead-generation/google-maps-reviews-api-skill/scripts/google_maps_reviews_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "77806855016940604" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 29
    print(f"Start Task", flush=True)     try:         response = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30)
  • Network accessline 30
    try:         response = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30)         if response.status_code == 401:
  • Network accessline 31
    response = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30)
  • Network accessline 54
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 55
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 56
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 77
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 78
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 93
    [Credential-related source omitted]
  • Access to secretsline 99
    [Credential-related source omitted]
  • Network accessline 100
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 101
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 102
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 104
    [Credential-related source omitted]
  • Access to secretsline 111
    [Credential-related source omitted]

solutions/lead-generation/google-maps-search-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key, please visit the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."

solutions/lead-generation/google-maps-search-api-skill/scripts/google_maps_search_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "77805072070738748" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 30
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 31
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 32
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 51
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 52
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 53
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 74
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 75
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 90
    [Credential-related source omitted]
  • Access to secretsline 96
    [Credential-related source omitted]
  • Network accessline 97
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 98
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 99
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 109
    [Credential-related source omitted]

solutions/lead-generation/google-social-media-finder/SKILL.md

  • Dangerous shell operationline 32
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 43
    navigate https://www.google.com/search?q={name}+social+media
  • Dangerous shell operationline 57
    eval "$(python scripts/extract-social-profiles.py)"
  • Network accessline 67
    "platform": "Instagram",      // social media platform name       "username": "taylorswift",    // handle or page name shown alongside platform       "url": "https://www.instagram.com/taylorswift/",  // direct profile URL
  • Network accessline 68
    "username": "taylorswift",    // handle or page name shown alongside platform       "url": "https://www.instagram.com/taylorswift/",  // direct profile URL       "title": "Taylor Swift (@taylorswift) • Instagram photos and videos",  // page
  • Network accessline 69
    "url": "https://www.instagram.com/taylorswift/",  // direct profile URL
  • Network accessline 82
    **URL Pagination**: URL pattern `https://www.google.com/search?q={name}+social+media&start={offset}`, where `offset = (page - 1) * 10` (page 1 → `start=0` or omit, page 2 → `start=10`, page 3 → `start=20`). Next page link: `a#pnnext`. Termi

solutions/lead-generation/google-social-media-finder/scripts/extract-social-profiles.py

  • Executable scriptline 1
    Executable file

solutions/lead-generation/indeed-job-search/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://www.indeed.com/jobs?q={keyword}&l={location}`
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Dangerous shell operationline 49
    `eval "$(python scripts/search-jobs.py --max-items {max_items})"`
  • Network accessline 54
    Prerequisites: Browser must be on an Indeed search results page (`indeed.com/jobs?q=...`). Navigate first: 1. `navigate https://www.indeed.com/jobs?q={keyword}&l={location}` (add `&start={offset}` for pagination)
  • Network accessline 55
    1. `navigate https://www.indeed.com/jobs?q={keyword}&l={location}` (add `&start={offset}` for pagination)
  • Network accessline 77
    "rating": 4.3,       "reviewsCount": 15000,       "companyLogo": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/...",
  • Network accessline 78
    "reviewsCount": 15000,       "companyLogo": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/...",       "snippet": "<ul>...<b>software</b>...</ul>",
  • Network accessline 79
    "companyLogo": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/...",
  • Network accessline 82
    "expired": false,       "newJob": true,       "url": "https://www.indeed.com/viewjob?jk=8c06afbaf73fc880",
  • Network accessline 83
    "newJob": true,       "url": "https://www.indeed.com/viewjob?jk=8c06afbaf73fc880",       "externalApplyLink": null
  • Network accessline 84
    "url": "https://www.indeed.com/viewjob?jk=8c06afbaf73fc880",
  • Dangerous shell operationline 93
    `eval "$(python scripts/fetch-job-detail.py '{jobkey}')"`
  • Network accessline 107
    "rating": 4,   "reviewsCount": 709,   "companyLogo": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/...",
  • Network accessline 108
    "reviewsCount": 709,   "companyLogo": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/...",   "salary": "$101,300 - $190,000 a year",
  • Network accessline 109
    "companyLogo": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/...",
  • Network accessline 117
    "benefits": ["Health insurance", "401(k)", "Dental insurance"],   "postedAt": "13 days ago",   "isExpired": false, "url": "https://www.indeed.com/viewjob?jk=a39828c8395d5dfe"
  • Network accessline 118
    "postedAt": "13 days ago",   "isExpired": false, "url": "https://www.indeed.com/viewjob?jk=a39828c8395d5dfe" }
  • Network accessline 119
    "isExpired": false, "url": "https://www.indeed.com/viewjob?jk=a39828c8395d5dfe"
  • Network accessline 127
    1. `navigate https://www.indeed.com/jobs?q={keyword}&l={location}` → `wait stable`
  • Dangerous shell operationline 129
    3. `eval "$(python scripts/search-jobs.py)"` → get job list with IDs
  • Dangerous shell operationline 131
    - `eval "$(python scripts/fetch-job-detail.py '{id}')"` → get full description
  • Network accessline 142
    [API] country — supported country codes for Indeed search (append to URL as domain variant `https://{country-domain}/jobs?q=...`):
  • Network accessline 186
    - Pagination beyond page 1 requires Indeed login (unauthenticated access limited to first page, ~24 results) - Indeed may trigger captcha/security check on first visit; `solve-captcha` resolves this - Job detail fetch (`fetch-job-detail.py`
  • Network accessline 187
    - Indeed may trigger captcha/security check on first visit; `solve-captcha` resolves this - Job detail fetch (`fetch-job-detail.py`) must execute from within the search results page context (same-origin requirement) - Indeed's anti-bot dete
  • Network accessline 188
    - Job detail fetch (`fetch-job-detail.py`) must execute from within the search results page context (same-origin requirement)

solutions/lead-generation/indeed-job-search/scripts/fetch-job-detail.py

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    const jk = '{jobkey}';     const url = '/viewjob?jk=' + jk + '&viewtype=embedded&spa=1';     const resp = await fetch(url);
  • Network accessline 16
    const url = '/viewjob?jk=' + jk + '&viewtype=embedded&spa=1';     const resp = await fetch(url);     if (!resp.ok) return JSON.stringify({{error: true, message: "HTTP " + resp.status}});
  • Network accessline 17
    const resp = await fetch(url);
  • Network accessline 45
    postedAt: hiring ? hiring.age : null,       isExpired: body.isJobExpired || false,       url: "https://www.indeed.com/viewjob?jk=" + jk
  • Network accessline 46
    isExpired: body.isJobExpired || false,       url: "https://www.indeed.com/viewjob?jk=" + jk     }};
  • Network accessline 47
    url: "https://www.indeed.com/viewjob?jk=" + jk

solutions/lead-generation/indeed-job-search/scripts/search-jobs.py

  • Executable scriptline 1
    Executable file
  • Network accessline 43
    expired: !!r.expired,       newJob: !!r.newJob,       url: r.jobkey ? "https://www.indeed.com/viewjob?jk=" + r.jobkey : null,
  • Network accessline 44
    newJob: !!r.newJob,       url: r.jobkey ? "https://www.indeed.com/viewjob?jk=" + r.jobkey : null,       externalApplyLink: r.thirdPartyApplyUrl || null
  • Network accessline 45
    url: r.jobkey ? "https://www.indeed.com/viewjob?jk=" + r.jobkey : null,

solutions/lead-generation/industry-key-contact-radar-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."
  • Network accessline 81
    - If the output **contains** `"concurrent"` or `"too many running tasks"` or similar concurrency limit messages, it means the concurrent task limit for the current subscription plan has been reached. **Do not retry**; guide the user to upgr
  • Network accessline 82
    **Agent must inform the user**:      > "The current task cannot be executed because your BrowserAct account has reached the limit of concurrent tasks. Please go to the [BrowserAct Plan Upgrade Page](https://www.browseract.com/reception/rech
  • Network accessline 83
    > "The current task cannot be executed because your BrowserAct account has reached the limit of concurrent tasks. Please go to the [BrowserAct Plan Upgrade Page](https://www.browseract.com/reception/recharge) to upgrade your subscription pl

solutions/lead-generation/industry-key-contact-radar-api-skill/scripts/industry_key_contact_radar_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "88313898888855812" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Network accessline 40
    print(f"Starting task via BrowserAct API...", flush=True)     try:         response = requests.post(
  • Network accessline 41
    try:         response = requests.post(             f"{API_BASE_URL}/run-task-by-template",
  • Network accessline 42
    response = requests.post(
  • Network accessline 54
    print("Error: Invalid authorization. Please check your BrowserAct API Key.", flush=True)         elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. P
  • Network accessline 55
    elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)         el
  • Network accessline 56
    print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)
  • Network accessline 70
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(
  • Network accessline 71
    try:             status_res = requests.get(                 f"{API_BASE_URL}/get-task-status?task_id={task_id}",
  • Network accessline 72
    status_res = requests.get(
  • Network accessline 99
    print(f"Retrieving results...", flush=True)     try:         task_info_response = requests.get(
  • Network accessline 100
    try:         task_info_response = requests.get(             f"{API_BASE_URL}/get-task?task_id={task_id}",
  • Network accessline 101
    task_info_response = requests.get(
  • Access to secretsline 120
    [Credential-related source omitted]
  • Access to secretsline 127
    [Credential-related source omitted]
  • Network accessline 128
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 129
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 130
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 132
    [Credential-related source omitted]
  • Access to secretsline 140
    [Credential-related source omitted]

solutions/lead-generation/linkedin-jobs-search/SKILL.md

  • Network accessline 20
    - The browser is open and the LinkedIn session is active (logged in). A LinkedIn jobs search page such as `https://www.linkedin.com/jobs/search/` must have been visited at least once so the CSRF token cookie is set.
  • Network accessline 34
    Otherwise: open `https://www.linkedin.com` and observe the page:
  • Dangerous shell operationline 42
    > This Skill's operational boundary = what the user can manually do in their browser. It accesses LinkedIn through the user's logged-in browser, only reading data already available to the user. JS code is encapsulated in Python files under 
  • Dangerous shell operationline 46
    `eval "$(python scripts/search-jobs.py '{keywords}' '{location}' --count {count} --start {start} --work-type {work_type} --job-type {job_type} --experience {experience} --time-posted {time_posted} --company-ids {company_ids})"`
  • Network accessline 70
    "location": "Boca Raton, FL",       "workType": "Remote",       "jobUrl": "https://www.linkedin.com/jobs/view/4416832078",
  • Network accessline 71
    "workType": "Remote",       "jobUrl": "https://www.linkedin.com/jobs/view/4416832078",       "companyUrl": "https://www.linkedin.com/company/rowsone"
  • Network accessline 72
    "jobUrl": "https://www.linkedin.com/jobs/view/4416832078",
  • Network accessline 73
    "companyUrl": "https://www.linkedin.com/company/rowsone"
  • Network accessline 79
    Error handling: If `{"error": true}` is returned, check that the browser is still logged in to LinkedIn and navigate to `https://www.linkedin.com/jobs/search/` to refresh the session, then retry once.
  • Dangerous shell operationline 83
    `eval "$(python scripts/job-detail.py '{job_id}')"`
  • Network accessline 92
    "title": "Lead Frontend Software Engineer",   "company": "RowsOne",   "companyUrl": "https://www.linkedin.com/company/rowsone",
  • Network accessline 93
    "company": "RowsOne",   "companyUrl": "https://www.linkedin.com/company/rowsone",   "location": "Boca Raton, FL",
  • Network accessline 94
    "companyUrl": "https://www.linkedin.com/company/rowsone",
  • Network accessline 101
    "description": "Lead Frontend Engineer (React / Next.js)...",   "salary": null,   "jobUrl": "https://www.linkedin.com/jobs/view/4416832078"
  • Network accessline 102
    "salary": null,   "jobUrl": "https://www.linkedin.com/jobs/view/4416832078" }
  • Network accessline 103
    "jobUrl": "https://www.linkedin.com/jobs/view/4416832078"
  • Dangerous shell operationline 133
    result=$(browser-act --session $SESSION eval "$(python scripts/search-jobs.py "$KEYWORDS" "$LOCATION" --count $batch_count --start $offset)")
  • Dangerous shell operationline 143
    detail=$(browser-act --session $SESSION eval "$(python scripts/job-detail.py $job_id)")

solutions/lead-generation/linkedin-jobs-search/scripts/job-detail.py

  • Executable scriptline 1
    Executable file
  • Network accessline 18
    }};         const url = '/voyager/api/jobs/jobPostings/{args.job_id}?decorationId=com.linkedin.voyager.deco.jobs.web.shared.WebFullJobPosting-65';         const res = await fetch(url, {{headers}});
  • Network accessline 19
    const url = '/voyager/api/jobs/jobPostings/{args.job_id}?decorationId=com.linkedin.voyager.deco.jobs.web.shared.WebFullJobPosting-65';         const res = await fetch(url, {{headers}});         if (!res.ok) return JSON.stringify({{error: tr
  • Network accessline 20
    const res = await fetch(url, {{headers}});
  • Network accessline 36
    const companyName = company?.name || null;         const companyUrl = company?.universalName           ? 'https://www.linkedin.com/company/' + company.universalName
  • Network accessline 37
    const companyUrl = company?.universalName           ? 'https://www.linkedin.com/company/' + company.universalName           : null;
  • Network accessline 38
    ? 'https://www.linkedin.com/company/' + company.universalName
  • Network accessline 54
    description: d.description?.text || null,           salary,           jobUrl: 'https://www.linkedin.com/jobs/view/{args.job_id}'
  • Network accessline 55
    salary,           jobUrl: 'https://www.linkedin.com/jobs/view/{args.job_id}'         }});
  • Network accessline 56
    jobUrl: 'https://www.linkedin.com/jobs/view/{args.job_id}'

solutions/lead-generation/linkedin-jobs-search/scripts/search-jobs.py

  • Executable scriptline 1
    Executable file
  • Network accessline 44
    const query = `(origin:JOB_SEARCH_PAGE_KEYWORD_HISTORY,keywords:${{keywords}},locationUnion:(seoLocation:(location:${{location}})),{selected_filters}spellCorrectionEnabled:true)`;         const url = `/voyager/api/voyagerJobsDashJobCards?de
  • Network accessline 45
    const url = `/voyager/api/voyagerJobsDashJobCards?decorationId=com.linkedin.voyager.dash.deco.jobs.search.JobSearchCardsCollectionLite-88&count={args.count}&q=jobSearch&query=${{query}}&servedEventEnabled=false&start={args.start}`;         
  • Network accessline 46
    const res = await fetch(url, {{headers}});
  • Network accessline 62
    location: locRaw.replace(/\\s*\\([^)]+\\)$/, '').trim() || null,             workType: workTypeMatch ? workTypeMatch[1] : null,             jobUrl: id ? 'https://www.linkedin.com/jobs/view/' + id : null,
  • Network accessline 63
    workType: workTypeMatch ? workTypeMatch[1] : null,             jobUrl: id ? 'https://www.linkedin.com/jobs/view/' + id : null,             companyUrl: c.logo?.actionTarget ? c.logo.actionTarget.replace('/life', '') : null
  • Network accessline 64
    jobUrl: id ? 'https://www.linkedin.com/jobs/view/' + id : null,

solutions/lead-generation/producthunt-launches/SKILL.md

  • Dangerous shell operationline 41
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Dangerous shell operationline 47
    `eval "$(python scripts/extract-leaderboard.py)"`
  • Network accessline 49
    URL patterns (navigate to the appropriate one before extraction): - Daily: `https://www.producthunt.com/leaderboard/daily/{YYYY}/{M}/{DD}/all`
  • Network accessline 50
    - Daily: `https://www.producthunt.com/leaderboard/daily/{YYYY}/{M}/{DD}/all`
  • Network accessline 51
    - Weekly: `https://www.producthunt.com/leaderboard/weekly/{YYYY}/{week-number}/all`
  • Network accessline 52
    - Monthly: `https://www.producthunt.com/leaderboard/monthly/{YYYY}/{M}/all`
  • Network accessline 53
    - Yearly: `https://www.producthunt.com/leaderboard/yearly/{YYYY}/all`
  • Network accessline 63
    "tagline": "Short product description",     "categories": ["Productivity", "AI"],     "thumbnail": "https://ph-files.imgix.net/...",
  • Network accessline 64
    "categories": ["Productivity", "AI"],     "thumbnail": "https://ph-files.imgix.net/...",     "upvotes": 135,
  • Network accessline 65
    "thumbnail": "https://ph-files.imgix.net/...",
  • Network accessline 66
    "upvotes": 135,     "comments": 42,     "url": "https://www.producthunt.com/products/product-slug",
  • Network accessline 67
    "comments": 42,     "url": "https://www.producthunt.com/products/product-slug",     "slug": "product-slug"
  • Network accessline 68
    "url": "https://www.producthunt.com/products/product-slug",
  • Network accessline 76
    Navigate to the launch page URL first (`https://www.producthunt.com/products/{slug}/launches/{launch-slug}`), then extract:
  • Dangerous shell operationline 78
    `eval "$(python scripts/extract-launch-detail.py)"`
  • Network accessline 80
    To find the launch URL from a product page: navigate to `https://www.producthunt.com/products/{slug}` and look for links matching `/products/{slug}/launches/{launch-slug}`.
  • Network accessline 87
    "description": "Full product description from OG meta",   "categories": ["Productivity", "Social Media"],   "images": ["https://ph-files.imgix.net/gallery1.png", "https://ph-files.imgix.net/gallery2.png"],
  • Network accessline 88
    "categories": ["Productivity", "Social Media"],   "images": ["https://ph-files.imgix.net/gallery1.png", "https://ph-files.imgix.net/gallery2.png"],   "websiteUrl": "https://product-website.com/?ref=producthunt",
  • Network accessline 89
    "images": ["https://ph-files.imgix.net/gallery1.png", "https://ph-files.imgix.net/gallery2.png"],
  • Network accessline 90
    "websiteUrl": "https://product-website.com/?ref=producthunt",
  • Network accessline 92
    "launchDate": "2025-05-27T07:26:33-07:00",   "makers": [{"href": "/@username", "name": "Maker Name"}],   "ogImage": "https://ph-files.imgix.net/og-image.png"
  • Network accessline 93
    "makers": [{"href": "/@username", "name": "Maker Name"}],   "ogImage": "https://ph-files.imgix.net/og-image.png" }
  • Network accessline 94
    "ogImage": "https://ph-files.imgix.net/og-image.png"
  • Network accessline 100
    Navigate to maker profile URL (`https://www.producthunt.com/@{username}`), then extract:
  • Dangerous shell operationline 102
    `eval "$(python scripts/extract-maker-profile.py)"`
  • Network accessline 109
    "headline": "Creating SaaS Products",   "aboutText": "Bio text about the maker",   "links": ["https://twitter.com/username", "https://linkedin.com/in/username"],
  • Network accessline 110
    "aboutText": "Bio text about the maker",   "links": ["https://twitter.com/username", "https://linkedin.com/in/username"],   "followers": 22,
  • Network accessline 111
    "links": ["https://twitter.com/username", "https://linkedin.com/in/username"],
  • Network accessline 112
    "followers": 22,   "url": "https://www.producthunt.com/@username" }
  • Network accessline 113
    "url": "https://www.producthunt.com/@username"
  • Dangerous shell operationline 121
    `eval "$(python scripts/extract-website-content.py)"`
  • Network accessline 128
    {   "title": "Product Website Title",   "url": "https://product-website.com",
  • Network accessline 129
    "title": "Product Website Title",   "url": "https://product-website.com",   "email": "contact@product-website.com",
  • Network accessline 130
    "url": "https://product-website.com",
  • Dangerous shell operationline 141
    1. Navigate to leaderboard page → `wait stable` → `eval "$(python scripts/extract-leaderboard.py)"`
  • Network accessline 141
    1. Navigate to leaderboard page → `wait stable` → `eval "$(python scripts/extract-leaderboard.py)"` 2. For each product from step 1:    a. Navigate to `https://www.producthunt.com/products/{slug}` → find launch link → navigate to launch pag
  • Network accessline 142
    2. For each product from step 1:    a. Navigate to `https://www.producthunt.com/products/{slug}` → find launch link → navigate to launch page    b. `wait stable` → `eval "$(python scripts/extract-launch-detail.py)"` → get full details + mak
  • Network accessline 143
    a. Navigate to `https://www.producthunt.com/products/{slug}` → find launch link → navigate to launch page
  • Dangerous shell operationline 144
    b. `wait stable` → `eval "$(python scripts/extract-launch-detail.py)"` → get full details + maker links + website URL
  • Network accessline 144
    b. `wait stable` → `eval "$(python scripts/extract-launch-detail.py)"` → get full details + maker links + website URL 3. (Optional, if `scrapeMakers` is enabled) For each unique maker from step 2:    a. Navigate to `https://www.producthunt.
  • Network accessline 145
    3. (Optional, if `scrapeMakers` is enabled) For each unique maker from step 2:    a. Navigate to `https://www.producthunt.com/{maker.href}` → `wait stable` → `eval "$(python scripts/extract-maker-profile.py)"` 4. (Optional, if `scrapeWebsit
  • Dangerous shell operationline 146
    a. Navigate to `https://www.producthunt.com/{maker.href}` → `wait stable` → `eval "$(python scripts/extract-maker-profile.py)"`
  • Network accessline 146
    a. Navigate to `https://www.producthunt.com/{maker.href}` → `wait stable` → `eval "$(python scripts/extract-maker-profile.py)"`
  • Dangerous shell operationline 148
    a. Navigate to website URL → `wait stable` → `eval "$(python scripts/extract-website-content.py)"`
  • Network accessline 154
    "date": "2026-06-10T00:00:00Z",   "launchDate": "2026-06-10T07:01:04Z",   "url": "https://www.producthunt.com/products/product-slug",
  • Network accessline 155
    "launchDate": "2026-06-10T07:01:04Z",   "url": "https://www.producthunt.com/products/product-slug",   "name": "Product Name",
  • Network accessline 156
    "url": "https://www.producthunt.com/products/product-slug",
  • Network accessline 160
    "categories": ["Productivity", "AI"],   "maker": {     "makerHref": "https://www.producthunt.com/@username",
  • Network accessline 161
    "maker": {     "makerHref": "https://www.producthunt.com/@username",     "name": "Maker Name",
  • Network accessline 162
    "makerHref": "https://www.producthunt.com/@username",
  • Network accessline 163
    "name": "Maker Name",     "slug": "@username",     "url": "https://www.producthunt.com/@username",
  • Network accessline 164
    "slug": "@username",     "url": "https://www.producthunt.com/@username",     "links": ["https://twitter.com/maker", "https://linkedin.com/in/maker"],
  • Network accessline 165
    "url": "https://www.producthunt.com/@username",
  • Network accessline 166
    "links": ["https://twitter.com/maker", "https://linkedin.com/in/maker"],
  • Network accessline 167
    "aboutText": "Maker bio text"   },   "websiteUrl": "https://product-website.com",
  • Network accessline 168
    },   "websiteUrl": "https://product-website.com",   "images": ["https://ph-files.imgix.net/image1.png"],
  • Network accessline 169
    "websiteUrl": "https://product-website.com",
  • Network accessline 170
    "images": ["https://ph-files.imgix.net/image1.png"],
  • Network accessline 172
    "website": {     "title": "Product Website",     "url": "https://product-website.com",
  • Network accessline 173
    "title": "Product Website",     "url": "https://product-website.com",     "email": "hello@product-website.com",
  • Network accessline 174
    "url": "https://product-website.com",

solutions/lead-generation/producthunt-launches/scripts/extract-launch-detail.py

  • Executable scriptline 1
    Executable file

solutions/lead-generation/producthunt-launches/scripts/extract-leaderboard.py

  • Executable scriptline 1
    Executable file
  • Network accessline 35
    const comments = buttons[1] ? parseInt(buttons[1].textContent.trim()) || 0 : 0;           const href = link.getAttribute('href');           return { rank, name, tagline, categories, thumbnail, upvotes, comments, url: 'https://www.producthun
  • Network accessline 36
    const href = link.getAttribute('href');           return { rank, name, tagline, categories, thumbnail, upvotes, comments, url: 'https://www.producthunt.com' + href, slug: href.replace('/products/', '') };         }).filter(Boolean);
  • Network accessline 37
    return { rank, name, tagline, categories, thumbnail, upvotes, comments, url: 'https://www.producthunt.com' + href, slug: href.replace('/products/', '') };

solutions/lead-generation/producthunt-launches/scripts/extract-maker-profile.py

  • Executable scriptline 1
    Executable file

solutions/lead-generation/producthunt-launches/scripts/extract-website-content.py

  • Executable scriptline 1
    Executable file

solutions/lead-generation/social-media-finder-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key yet, please visit the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."
  • Network accessline 62
    - If the output **contains** `"concurrent"` or `"too many running tasks"`, it means the concurrent task limit has been reached. **Do not retry**; guide the user to upgrade their plan.      **Agent must inform the user**:      > "The current
  • Network accessline 63
    **Agent must inform the user**:      > "The current task cannot be executed because your BrowserAct account has reached the concurrent task limit. Please visit the [BrowserAct Plan Upgrade Page](https://www.browseract.com/reception/recharge
  • Network accessline 64
    > "The current task cannot be executed because your BrowserAct account has reached the concurrent task limit. Please visit the [BrowserAct Plan Upgrade Page](https://www.browseract.com/reception/recharge) to upgrade your plan."

solutions/lead-generation/social-media-finder-skill/scripts/social_media_finder.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "72676867414427158" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Network accessline 32
    print(f"Start Task", flush=True)     try:         res = requests.post(
  • Network accessline 33
    try:         res = requests.post(             f"{API_BASE_URL}/run-task-by-template",
  • Network accessline 34
    res = requests.post(
  • Network accessline 45
    print("Error: Invalid authorization. Please check your BrowserAct API Key.", flush=True)         elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. P
  • Network accessline 46
    elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)         el
  • Network accessline 47
    print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)
  • Network accessline 59
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(
  • Network accessline 60
    try:             status_res = requests.get(                 f"{API_BASE_URL}/get-task-status?task_id={task_id}",
  • Network accessline 61
    status_res = requests.get(
  • Network accessline 88
    try:         task_info = requests.get(
  • Network accessline 89
    task_info = requests.get(
  • Access to secretsline 107
    [Credential-related source omitted]
  • Access to secretsline 113
    [Credential-related source omitted]
  • Network accessline 114
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 115
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 116
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 118
    [Credential-related source omitted]
  • Access to secretsline 123
    [Credential-related source omitted]

solutions/lead-generation/trustpilot-company-info/SKILL.md

  • Network accessline 20
    - Target page is reachable on the public web: `https://www.trustpilot.com/review/{domain}`
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Network accessline 39
    Steps: 1. `navigate https://www.trustpilot.com/review/{domain}` (replace `{domain}` with the company domain, e.g. `apple.com`, `shopwagandtail.com`)
  • Network accessline 40
    1. `navigate https://www.trustpilot.com/review/{domain}` (replace `{domain}` with the company domain, e.g. `apple.com`, `shopwagandtail.com`)
  • Dangerous shell operationline 42
    3. `eval "$(python scripts/extract-company-info.py)"` — basic profile
  • Dangerous shell operationline 43
    4. `eval "$(python scripts/extract-company-info.py --include-response-metrics)"` — also include reply behavior + AI response flag
  • Network accessline 71
    "categoryId": "pet_store",   "allCategories": [{ "id": "pet_store", "name": "Pet Store", "isPrimary": true }],   "websiteUrl": "https://shopwagandtail.com",
  • Network accessline 72
    "allCategories": [{ "id": "pet_store", "name": "Pet Store", "isPrimary": true }],   "websiteUrl": "https://shopwagandtail.com",   "websiteTitle": "shopwagandtail.com",
  • Network accessline 73
    "websiteUrl": "https://shopwagandtail.com",
  • Network accessline 81
    "contactZipCode": null,   "locationsCount": 0,   "companyPageUrl": "https://www.trustpilot.com/review/shopwagandtail.com",
  • Network accessline 82
    "locationsCount": 0,   "companyPageUrl": "https://www.trustpilot.com/review/shopwagandtail.com",   "scrapedDateTime": "2026-06-26T04:12:17.272Z",
  • Network accessline 83
    "companyPageUrl": "https://www.trustpilot.com/review/shopwagandtail.com",
  • Network accessline 98
    {   "isCompanyFound": false,   "companyPageUrl": "https://www.trustpilot.com/review/nonexistent-xyz-9999.com",
  • Network accessline 99
    "isCompanyFound": false,   "companyPageUrl": "https://www.trustpilot.com/review/nonexistent-xyz-9999.com",   "searchedDomain": "nonexistent-xyz-9999.com",
  • Network accessline 100
    "companyPageUrl": "https://www.trustpilot.com/review/nonexistent-xyz-9999.com",

solutions/lead-generation/trustpilot-company-info/scripts/extract-company-info.py

  • Executable scriptline 1
    Executable file

solutions/lead-generation/youtube-channel-business-email/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://www.youtube.com/{@handle|channel/UCxxx}/about`
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 39
    Parameters: - `{channel-input}`: a channel id (`UCxxxxxxxxxxxxxxxxxxxxxx`, 24 chars starting with `UC`), a handle (`@name`), a bare handle (`name`), or any channel URL (`https://www.youtube.com/@name`, `https://www.youtube.com/channel/UCxxx
  • Network accessline 40
    - `{channel-input}`: a channel id (`UCxxxxxxxxxxxxxxxxxxxxxx`, 24 chars starting with `UC`), a handle (`@name`), a bare handle (`name`), or any channel URL (`https://www.youtube.com/@name`, `https://www.youtube.com/channel/UCxxx`, `https://
  • Network accessline 44
    {   "about_url": "https://www.youtube.com/@example/about",   // canonical URL to navigate to before extraction
  • Network accessline 45
    "about_url": "https://www.youtube.com/@example/about",   // canonical URL to navigate to before extraction
  • Dangerous shell operationline 57
    Extract: `browser-act --session <session-name> eval "$(python scripts/extract-channel-about.py)"`
  • Network accessline 62
    "channel_id": "UCxxxxxxxxxxxxxxxxxxxxxx",                // YouTube channel id (UCxxx)   "channel_name": "Channel Display Name",                  // display name from channel metadata   "canonical_channel_url": "http://www.youtube.com/@exam
  • Network accessline 63
    "channel_name": "Channel Display Name",                  // display name from channel metadata   "canonical_channel_url": "http://www.youtube.com/@example", // canonical channel URL reported by YouTube   "description": "Short bio line ...\n
  • Network accessline 64
    "canonical_channel_url": "http://www.youtube.com/@example", // canonical channel URL reported by YouTube
  • Network accessline 73
    "emails_in_description": ["business@example.com"],       // emails matched in the description text; empty array when none   "links": [                                               // outbound links with YouTube /redirect wrappers unwrapped
  • Network accessline 74
    "links": [                                               // outbound links with YouTube /redirect wrappers unwrapped     {"title": "Twitter", "display": "twitter.com/example", "url": "http://twitter.com/example"}   ]
  • Network accessline 75
    {"title": "Twitter", "display": "twitter.com/example", "url": "http://twitter.com/example"}
  • Network accessline 95
    "kind": "personal_or_business",          // social | link_aggregator | personal_or_business | invalid     "domain": "example.com",     "url": "https://example.com/"
  • Network accessline 96
    "domain": "example.com",     "url": "https://example.com/"   },
  • Network accessline 97
    "url": "https://example.com/"
  • Dangerous shell operationline 116
    `browser-act --session <session-name> eval "$(python scripts/extract-channel-about.py)"`
  • Network accessline 132
    "channel_id": "UCxxxxxxxxxxxxxxxxxxxxxx",                  // resolved YouTube channel id (UCxxx)   "channel_name": "Channel Display Name",                    // display name from channel metadata   "channel_url": "https://www.youtube.com/@
  • Network accessline 133
    "channel_name": "Channel Display Name",                    // display name from channel metadata   "channel_url": "https://www.youtube.com/@example",         // canonical channel URL   "business_email": "business@example.com",              
  • Network accessline 134
    "channel_url": "https://www.youtube.com/@example",         // canonical channel URL
  • Network accessline 142
    "has_business_email_reveal_button": true,                  // whether the "View email address" gate is offered on the channel   "links": [                                                 // outbound links with classification appended     {"
  • Network accessline 143
    "links": [                                                 // outbound links with classification appended     {"title": "Instagram", "display": "instagram.com/example", "url": "http://instagram.com/example", "kind": "social", "domain": "ins
  • Network accessline 144
    {"title": "Instagram", "display": "instagram.com/example", "url": "http://instagram.com/example", "kind": "social", "domain": "instagram.com"}

solutions/lead-generation/youtube-channel-business-email/scripts/extract-channel-about.py

  • Executable scriptline 1
    Executable file
  • Network accessline 47
    if (!href) return null;       try {         var u = new URL(href, "https://www.youtube.com/");
  • Network accessline 48
    try {         var u = new URL(href, "https://www.youtube.com/");         if (u.hostname.indexOf("youtube.com") !== -1 && u.pathname === "/redirect") {
  • Network accessline 49
    var u = new URL(href, "https://www.youtube.com/");

solutions/lead-generation/youtube-channel-business-email/scripts/extract-emails-from-text.py

  • Executable scriptline 1
    Executable file

solutions/lead-generation/youtube-channel-business-email/scripts/normalize-channel-input.py

  • Executable scriptline 1
    Executable file
  • Network accessline 16
    if channel_id_match:         cid = channel_id_match.group(1)         return {"about_url": f"https://www.youtube.com/channel/{cid}/about",
  • Network accessline 17
    cid = channel_id_match.group(1)         return {"about_url": f"https://www.youtube.com/channel/{cid}/about",                 "input_type": "channel_id", "value": cid}
  • Network accessline 18
    return {"about_url": f"https://www.youtube.com/channel/{cid}/about",
  • Network accessline 21
    if handle_match:         handle = handle_match.group(1)         return {"about_url": f"https://www.youtube.com/@{handle}/about",
  • Network accessline 22
    handle = handle_match.group(1)         return {"about_url": f"https://www.youtube.com/@{handle}/about",                 "input_type": "handle", "value": "@" + handle}
  • Network accessline 23
    return {"about_url": f"https://www.youtube.com/@{handle}/about",
  • Network accessline 30
    if cid_in_url:             cid = cid_in_url.group(1)             return {"about_url": f"https://www.youtube.com/channel/{cid}/about",
  • Network accessline 31
    cid = cid_in_url.group(1)             return {"about_url": f"https://www.youtube.com/channel/{cid}/about",                     "input_type": "channel_url", "value": cid}
  • Network accessline 32
    return {"about_url": f"https://www.youtube.com/channel/{cid}/about",
  • Network accessline 34
    if handle_in_url:             handle = handle_in_url.group(1)             return {"about_url": f"https://www.youtube.com/@{handle}/about",
  • Network accessline 35
    handle = handle_in_url.group(1)             return {"about_url": f"https://www.youtube.com/@{handle}/about",                     "input_type": "channel_url", "value": "@" + handle}
  • Network accessline 36
    return {"about_url": f"https://www.youtube.com/@{handle}/about",
  • Network accessline 39
    if custom_url_match:             slug = custom_url_match.group(2)             return {"about_url": f"https://www.youtube.com/{custom_url_match.group(1)}/{slug}/about",
  • Network accessline 40
    slug = custom_url_match.group(2)             return {"about_url": f"https://www.youtube.com/{custom_url_match.group(1)}/{slug}/about",                     "input_type": "legacy_custom_url", "value": slug}
  • Network accessline 41
    return {"about_url": f"https://www.youtube.com/{custom_url_match.group(1)}/{slug}/about",
  • Network accessline 48
    if bare_handle:         handle = bare_handle.group(1)         return {"about_url": f"https://www.youtube.com/@{handle}/about",
  • Network accessline 49
    handle = bare_handle.group(1)         return {"about_url": f"https://www.youtube.com/@{handle}/about",                 "input_type": "bare_handle", "value": "@" + handle}
  • Network accessline 50
    return {"about_url": f"https://www.youtube.com/@{handle}/about",

solutions/search-research/google-image-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key first."

solutions/search-research/google-image-api-skill/scripts/google_image_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "82307120300629613" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 31
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 32
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 33
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 48
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 49
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 50
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 71
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 72
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 89
    [Credential-related source omitted]
  • Access to secretsline 95
    [Credential-related source omitted]
  • Network accessline 96
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 97
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 98
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 100
    [Credential-related source omitted]
  • Access to secretsline 109
    [Credential-related source omitted]

solutions/search-research/google-news-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key, please visit the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."

solutions/search-research/google-news-api-skill/scripts/google_news_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    TEMPLATE_ID = "77638424152140851" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 16
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Network accessline 39
    print(f"Starting task via BrowserAct API...", flush=True)     try:         response = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30)
  • Network accessline 40
    try:         response = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30)         res = response.json()
  • Network accessline 41
    response = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30)
  • Network accessline 62
    while time.time() - poll_start < max_poll_time:         try:             status_response = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30)
  • Network accessline 63
    try:             status_response = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30)             status_res = status_response.json()
  • Network accessline 64
    status_response = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30)
  • Network accessline 86
    print(f"Retrieving results...", flush=True)     try:         task_info_response = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30)
  • Network accessline 87
    try:         task_info_response = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30)         task_info = task_info_response.json()
  • Network accessline 88
    task_info_response = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30)
  • Access to secretsline 105
    [Credential-related source omitted]
  • Access to secretsline 112
    [Credential-related source omitted]
  • Network accessline 113
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 114
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 115
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 117
    [Credential-related source omitted]
  • Access to secretsline 124
    [Credential-related source omitted]

solutions/search-research/google-search-serp/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://www.google.com/search?q={query}`
  • Dangerous shell operationline 32
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 40
    1. `navigate https://www.google.com/search?q={query}&num={num}&hl={lang}&gl={country}&start={start}`
  • Dangerous shell operationline 42
    3. `eval "$(python scripts/serp-extract.py)"`
  • Network accessline 56
    "searchQuery": {     "term": "machine learning",     "url": "https://www.google.com/search?q=machine+learning",
  • Network accessline 57
    "term": "machine learning",     "url": "https://www.google.com/search?q=machine+learning",     "device": "DESKTOP",
  • Network accessline 58
    "url": "https://www.google.com/search?q=machine+learning",
  • Network accessline 70
    "type": "organic",       "title": "Machine learning - Wikipedia",       "url": "https://en.wikipedia.org/wiki/Machine_learning",
  • Network accessline 71
    "title": "Machine learning - Wikipedia",       "url": "https://en.wikipedia.org/wiki/Machine_learning",       "displayedUrl": "en.wikipedia.org › wiki › Machine_learning",
  • Network accessline 72
    "url": "https://en.wikipedia.org/wiki/Machine_learning",
  • Network accessline 75
    "emphasizedKeywords": ["machine learning", "ML"],       "siteLinks": [         {"title": "Supervised learning", "url": "https://en.wikipedia.org/wiki/Supervised_learning"}
  • Network accessline 76
    "siteLinks": [         {"title": "Supervised learning", "url": "https://en.wikipedia.org/wiki/Supervised_learning"}       ]
  • Network accessline 77
    {"title": "Supervised learning", "url": "https://en.wikipedia.org/wiki/Supervised_learning"}
  • Network accessline 84
    "type": "paid",       "title": "Learn Machine Learning Online",       "url": "https://example.com/ml-course",
  • Network accessline 85
    "title": "Learn Machine Learning Online",       "url": "https://example.com/ml-course",       "displayedUrl": "example.com",
  • Network accessline 86
    "url": "https://example.com/ml-course",
  • Network accessline 91
    ],   "relatedQueries": [     {"title": "machine learning examples", "url": "https://www.google.com/search?q=machine+learning+examples"}
  • Network accessline 92
    "relatedQueries": [     {"title": "machine learning examples", "url": "https://www.google.com/search?q=machine+learning+examples"}   ],
  • Network accessline 93
    {"title": "machine learning examples", "url": "https://www.google.com/search?q=machine+learning+examples"}
  • Network accessline 111
    **URL Pagination**: URL pattern `https://www.google.com/search?q={query}&num={num}&start={(page-1)*num}`. Increment `start` by `num` for each subsequent page. Termination: `organicResults` array is empty, or `start` exceeds the desired page

solutions/search-research/google-search-serp/scripts/serp-extract.py

  • Executable scriptline 1
    Executable file

solutions/search-research/web-research-assistant/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Access to secretsline 43
    [Credential-related source omitted]
  • Network accessline 45
    **Required Message**: > "Please provide your BrowserAct API Key from [BrowserAct Console](https://www.browseract.com/reception/integrations) to enable web research capabilities."
  • Network accessline 46
    > "Please provide your BrowserAct API Key from [BrowserAct Console](https://www.browseract.com/reception/integrations) to enable web research capabilities."

solutions/search-research/web-research-assistant/scripts/research.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 18
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 19
    [Credential-related source omitted]
  • Network accessline 20
    MCP_SERVER_URL = "https://mcp.browseract.com/"
  • Network accessline 52
    response = requests.post(
  • Network accessline 184
    [Credential-related source omitted]
  • Network accessline 185
    print("Error: BROWSERACT_MCP_TOKEN environment variable not set")         print("Get your token from: https://www.browseract.com/reception/integrations")         return 1
  • Network accessline 186
    print("Get your token from: https://www.browseract.com/reception/integrations")

solutions/search-research/web-search-scraper-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you have not configured the BrowserAct API Key, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) first to get your Key."
  • Network accessline 28
    - **Type**: `string`    - **Description**: The website URL to extract content from. Supports any HTTP/HTTPS URL.    - **Example**: `https://www.browseract.com`
  • Network accessline 30
    - **Example**: `https://www.browseract.com`

solutions/search-research/web-search-scraper-api-skill/scripts/web_search_scraper_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "85961818557645714" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 27
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 28
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 29
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 44
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 45
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 46
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 68
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 69
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 86
    [Credential-related source omitted]
  • Access to secretsline 92
    [Credential-related source omitted]
  • Network accessline 93
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 94
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 95
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 97
    [Credential-related source omitted]
  • Access to secretsline 102
    [Credential-related source omitted]

solutions/search-research/webcrawler-deep-crawl/SKILL.md

  • Dangerous shell operationline 44
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Dangerous shell operationline 52
    `eval "$(python scripts/discover-llms-txt.py 'https://example.com')"`
  • Network accessline 52
    `eval "$(python scripts/discover-llms-txt.py 'https://example.com')"`
  • Network accessline 54
    Parameters: - positional `origin`: the site origin (scheme + host), e.g. `https://docs.example.com`
  • Network accessline 55
    - positional `origin`: the site origin (scheme + host), e.g. `https://docs.example.com`
  • Network accessline 61
    "source": "llms.txt",   "count": 88,   "urls": ["https://docs.example.com/intro", "https://docs.example.com/install"]
  • Network accessline 62
    "count": 88,   "urls": ["https://docs.example.com/intro", "https://docs.example.com/install"] }
  • Network accessline 63
    "urls": ["https://docs.example.com/intro", "https://docs.example.com/install"]
  • Dangerous shell operationline 73
    `eval "$(python scripts/discover-sitemap.py 'https://example.com' --max-urls 5000)"`
  • Network accessline 73
    `eval "$(python scripts/discover-sitemap.py 'https://example.com' --max-urls 5000)"`
  • Network accessline 83
    "source": "sitemap.xml",   "count": 86,   "urls": ["https://example.com/page-a", "https://example.com/page-b"]
  • Network accessline 84
    "count": 86,   "urls": ["https://example.com/page-a", "https://example.com/page-b"] }
  • Network accessline 85
    "urls": ["https://example.com/page-a", "https://example.com/page-b"]
  • Dangerous shell operationline 95
    `eval "$(python scripts/discover-links.py 'https://example.com/docs/' --include-globs '[]' --exclude-globs '["**/changelog/**"]')"`
  • Network accessline 95
    `eval "$(python scripts/discover-links.py 'https://example.com/docs/' --include-globs '[]' --exclude-globs '["**/changelog/**"]')"`
  • Network accessline 102
    Glob semantics: `**` matches any characters (including `/`), `*` matches any except `/`, `?` matches one character. Example: `https://example.com/{docs,api}/**`.
  • Network accessline 107
    "error": false,   "source": "dom",   "page": "https://example.com/docs/intro",
  • Network accessline 108
    "source": "dom",   "page": "https://example.com/docs/intro",   "scope_base": "https://example.com/docs/",
  • Network accessline 109
    "page": "https://example.com/docs/intro",
  • Network accessline 110
    "scope_base": "https://example.com/docs/",
  • Network accessline 111
    "count": 12,   "links": ["https://example.com/docs/intro", "https://example.com/docs/install"] }
  • Network accessline 112
    "links": ["https://example.com/docs/intro", "https://example.com/docs/install"]
  • Dangerous shell operationline 120
    `eval "$(python scripts/extract-page-content.py 'https://example.com/docs/' --output-format markdown --remove-selectors '.cookie-banner,#chat-widget' --include-globs '[]' --exclude-globs '[]')"`
  • Network accessline 120
    `eval "$(python scripts/extract-page-content.py 'https://example.com/docs/' --output-format markdown --remove-selectors '.cookie-banner,#chat-widget' --include-globs '[]' --exclude-globs '[]')"`
  • Network accessline 135
    {   "error": false,   "url": "https://example.com/docs/intro",
  • Network accessline 136
    "error": false,   "url": "https://example.com/docs/intro",   "crawl": {
  • Network accessline 137
    "url": "https://example.com/docs/intro",
  • Network accessline 138
    "crawl": {     "loadedUrl": "https://example.com/docs/intro",     "loadedTime": "2026-06-25T04:37:23.643Z",
  • Network accessline 139
    "loadedUrl": "https://example.com/docs/intro",
  • Network accessline 142
    },   "metadata": {     "canonicalUrl": "https://example.com/docs/intro",
  • Network accessline 143
    "metadata": {     "canonicalUrl": "https://example.com/docs/intro",     "title": "Introduction — Example Docs",
  • Network accessline 144
    "canonicalUrl": "https://example.com/docs/intro",
  • Network accessline 150
    "publishedAt": null,     "modifiedAt": null,     "ogImage": "https://example.com/og.png",
  • Network accessline 151
    "modifiedAt": null,     "ogImage": "https://example.com/og.png",     "ogType": "website"
  • Network accessline 152
    "ogImage": "https://example.com/og.png",
  • Network accessline 156
    "markdown": "# Introduction\n\nGet started with Example…",   "outboundLinks": [     "https://example.com/docs/install",
  • Network accessline 157
    "outboundLinks": [     "https://example.com/docs/install",     "https://example.com/docs/quick-start"
  • Network accessline 158
    "https://example.com/docs/install",
  • Network accessline 159
    "https://example.com/docs/quick-start"
  • Dangerous shell operationline 174
    a. `eval "$(python scripts/discover-llms-txt.py '{origin}')"` — instant full list when available.
  • Dangerous shell operationline 175
    b. `eval "$(python scripts/discover-sitemap.py '{origin}' --max-urls {cap})"` — broad coverage.
  • Dangerous shell operationline 176
    c. If both fail or return zero in-scope URLs: navigate to the start URL, `wait stable`, then `eval "$(python scripts/discover-links.py '{start_url}' --include-globs '{globs}' --exclude-globs '{globs}')"`.
  • Dangerous shell operationline 193
    d. `eval "$(python scripts/extract-page-content.py '{start_url}' --output-format {format} --remove-selectors '{selectors}' --include-globs '{globs}' --exclude-globs '{globs}')"`.
  • Network accessline 217
    {   "url": "https://example.com/docs/intro",
  • Network accessline 218
    "url": "https://example.com/docs/intro",

solutions/search-research/webcrawler-deep-crawl/scripts/discover-links.py

  • Executable scriptline 1
    Executable file

solutions/search-research/webcrawler-deep-crawl/scripts/discover-llms-txt.py

  • Executable scriptline 1
    Executable file
  • Network accessline 6
    sys.stdout.reconfigure(encoding='utf-8', newline='\n')     parser = argparse.ArgumentParser(description="Discover URLs from /llms.txt (LLM-friendly site index)")     parser.add_argument('origin', help="Site origin, e.g. https://example.com"
  • Network accessline 7
    parser = argparse.ArgumentParser(description="Discover URLs from /llms.txt (LLM-friendly site index)")     parser.add_argument('origin', help="Site origin, e.g. https://example.com")     args = parser.parse_args()
  • Network accessline 8
    parser.add_argument('origin', help="Site origin, e.g. https://example.com")
  • Network accessline 14
    const origin = {args.origin!r}.replace(/\\/+$/, '');         const url = origin + '/llms.txt';         const resp = await fetch(url, {{ credentials: 'include' }});
  • Network accessline 15
    const url = origin + '/llms.txt';         const resp = await fetch(url, {{ credentials: 'include' }});         if (!resp.ok) {{
  • Network accessline 16
    const resp = await fetch(url, {{ credentials: 'include' }});

solutions/search-research/webcrawler-deep-crawl/scripts/discover-sitemap.py

  • Executable scriptline 1
    Executable file
  • Network accessline 6
    sys.stdout.reconfigure(encoding='utf-8', newline='\n')     parser = argparse.ArgumentParser(description="Discover URLs from /sitemap.xml (recursively expanding sitemap indexes)")     parser.add_argument('origin', help="Site origin, e.g. htt
  • Network accessline 7
    parser = argparse.ArgumentParser(description="Discover URLs from /sitemap.xml (recursively expanding sitemap indexes)")     parser.add_argument('origin', help="Site origin, e.g. https://example.com")     parser.add_argument('--max-urls', ty
  • Network accessline 8
    parser.add_argument('origin', help="Site origin, e.g. https://example.com")
  • Network accessline 22
    async function fetchXml(u) {{           try {{             const r = await fetch(u, {{ credentials: 'include' }});
  • Network accessline 23
    try {{             const r = await fetch(u, {{ credentials: 'include' }});             if (!r.ok) return null;
  • Network accessline 24
    const r = await fetch(u, {{ credentials: 'include' }});

solutions/search-research/webcrawler-deep-crawl/scripts/extract-page-content.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/facebook-ads-library-search/SKILL.md

  • Network accessline 20
    - Browser is open on any Facebook page: `https://www.facebook.com/`
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Dangerous shell operationline 39
    `eval "$(python scripts/search-ads.py --query '{keyword}' --country {country} --first {count})"`
  • Network accessline 62
    "page_id": "15087023444",              // advertiser's Facebook page ID       "page_name": "Nike",                   // advertiser's page name       "page_profile_uri": "https://facebook.com/nike",
  • Network accessline 63
    "page_name": "Nike",                   // advertiser's page name       "page_profile_uri": "https://facebook.com/nike",       "page_profile_picture_url": "https://scontent.xx.fbcdn.net/...",
  • Network accessline 64
    "page_profile_uri": "https://facebook.com/nike",
  • Network accessline 65
    "page_profile_picture_url": "https://scontent.xx.fbcdn.net/...",
  • Network accessline 79
    "cta_text": "Shop Now",               // CTA button text       "cta_type": "SHOP_NOW",               // CTA button type       "link_url": "https://www.nike.com/...",// destination URL
  • Network accessline 80
    "cta_type": "SHOP_NOW",               // CTA button type       "link_url": "https://www.nike.com/...",// destination URL       "display_format": "carousel",          // ad format
  • Network accessline 81
    "link_url": "https://www.nike.com/...",// destination URL
  • Dangerous shell operationline 93
    `eval "$(python scripts/search-ads.py --page-id '{page_id}' --country {country} --first {count})"`

solutions/social-listening/facebook-ads-library-search/scripts/search-ads.py

  • Executable scriptline 1
    Executable file
  • Network accessline 75
    "&variables=" + encodeURIComponent(JSON.stringify(vars)) +       "&doc_id=27201872659451053";     var r = await fetch("https://www.facebook.com/api/graphql/", {{
  • Network accessline 76
    "&doc_id=27201872659451053";     var r = await fetch("https://www.facebook.com/api/graphql/", {{       method: "POST",
  • Network accessline 77
    var r = await fetch("https://www.facebook.com/api/graphql/", {{

solutions/social-listening/facebook-groups-scrape-posts/SKILL.md

  • Network accessline 20
    - Target group page is already open in the browser: `https://www.facebook.com/groups/{group_slug_or_id}`
  • Network accessline 35
    Otherwise, navigate to `https://www.facebook.com/` and verify login status programmatically:
  • Network accessline 38
    browser-act navigate 'https://www.facebook.com/'
  • Dangerous shell operationline 40
    browser-act eval "JSON.stringify({user_id: document.cookie.match(/c_user=(\d+)/)?.[1] || '0', USER_ID: (()=>{try{return require('CurrentUserInitialData').USER_ID;}catch(e){return '0';}})()})"
  • Network accessline 43
    Verdict: - `user_id` is a non-empty numeric string (e.g., `"61560817072276"`), or `USER_ID !== "0"` → logged in, continue - `user_id === null` or `USER_ID === "0"` → not logged in; assist user: run `browser-act browser open {browser_id} htt
  • Network accessline 45
    - `user_id === null` or `USER_ID === "0"` → not logged in; assist user: run `browser-act browser open {browser_id} https://www.facebook.com/login --headed` to open a headed window so the user can sign in manually (Stealth `normal` mode pers
  • Dangerous shell operationline 53
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the authenticated user, never bypassing authentication or access controls — equivalent to copy-pasting on the user
  • Network accessline 60
    browser-act navigate 'https://www.facebook.com/groups/{group_slug_or_id}'
  • Dangerous shell operationline 62
    browser-act eval "$(python scripts/scrape-posts.py --sort CHRONOLOGICAL --count 20)"
  • Network accessline 82
    "cache_id": "6790541484885792441",       "id": "UzpfSTEwMDA4ODY4MzIx...",       "permalink_url": "https://www.facebook.com/groups/programmerhumor/posts/4052937798184070/",
  • Network accessline 83
    "id": "UzpfSTEwMDA4ODY4MzIx...",       "permalink_url": "https://www.facebook.com/groups/programmerhumor/posts/4052937798184070/",       "creation_time": 1772941518,
  • Network accessline 84
    "permalink_url": "https://www.facebook.com/groups/programmerhumor/posts/4052937798184070/",
  • Network accessline 89
    "name": "Jeff Bramlett",         "profile_picture": null,         "url": "https://www.facebook.com/JeffieB56"
  • Network accessline 90
    "profile_picture": null,         "url": "https://www.facebook.com/JeffieB56"       },
  • Network accessline 91
    "url": "https://www.facebook.com/JeffieB56"
  • Network accessline 94
    "id": "2580640642080467",         "name": "Programmer Humor",         "url": "https://www.facebook.com/groups/programmerhumor/"
  • Network accessline 95
    "name": "Programmer Humor",         "url": "https://www.facebook.com/groups/programmerhumor/"       },
  • Network accessline 96
    "url": "https://www.facebook.com/groups/programmerhumor/"
  • Network accessline 110
    "__typename": "Photo",           "id": "938454962453936",           "photo_image": "https://scontent-...fbcdn.net/v/t39...jpg"
  • Network accessline 111
    "id": "938454962453936",           "photo_image": "https://scontent-...fbcdn.net/v/t39...jpg"         }
  • Network accessline 112
    "photo_image": "https://scontent-...fbcdn.net/v/t39...jpg"

solutions/social-listening/facebook-groups-scrape-posts/scripts/scrape-posts.py

  • Executable scriptline 1
    Executable file
  • Network accessline 104
    b.set('server_timestamps', 'true');       b.set('doc_id', DOC_ID);       const r = await fetch('/api/graphql/', {{
  • Network accessline 105
    b.set('doc_id', DOC_ID);       const r = await fetch('/api/graphql/', {{         method: 'POST',
  • Network accessline 106
    const r = await fetch('/api/graphql/', {{

solutions/social-listening/facebook-page-posts/SKILL.md

  • Network accessline 20
    - The target Facebook page is open in the browser (e.g., `https://www.facebook.com/cern`)
  • Network accessline 35
    Otherwise: navigate to `https://www.facebook.com` and check:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Dangerous shell operationline 47
    `eval "$(python scripts/get-page-id.py '{page_url}')"`
  • Network accessline 49
    Parameters: - `page_url`: Full Facebook page URL, e.g. `https://www.facebook.com/cern`
  • Network accessline 50
    - `page_url`: Full Facebook page URL, e.g. `https://www.facebook.com/cern`
  • Access to secretsline 52
    [Credential-related source omitted]
  • Network accessline 56
    {   "pageId": "100064792144187",   // Numeric page ID used in all subsequent API calls   "pageUrl": "https://www.facebook.com/cern"
  • Network accessline 57
    "pageId": "100064792144187",   // Numeric page ID used in all subsequent API calls   "pageUrl": "https://www.facebook.com/cern" }
  • Network accessline 58
    "pageUrl": "https://www.facebook.com/cern"
  • Dangerous shell operationline 64
    `eval "$(python scripts/get-page-posts.py '{page_id}' --cursor '{cursor}' --after-time {after_time} --before-time {before_time} --count {count})"`
  • Network accessline 77
    {       "postId": "1417704873732571",                        // Numeric post ID       "url": "https://www.facebook.com/cern/posts/pfbid…", // Post permalink
  • Network accessline 78
    "postId": "1417704873732571",                        // Numeric post ID       "url": "https://www.facebook.com/cern/posts/pfbid…", // Post permalink       "text": "CERN Council updates European Strategy…",   // Full post text
  • Network accessline 79
    "url": "https://www.facebook.com/cern/posts/pfbid…", // Post permalink
  • Network accessline 82
    {           "type": "ExternalUrl",                           // "ExternalUrl" or "Hashtag"           "url": "https://home.cern/...",                  // Clean URL (not l.facebook.com redirect)
  • Network accessline 83
    "type": "ExternalUrl",                           // "ExternalUrl" or "Hashtag"           "url": "https://home.cern/...",                  // Clean URL (not l.facebook.com redirect)           "offset": 731,                                   
  • Network accessline 84
    "url": "https://home.cern/...",                  // Clean URL (not l.facebook.com redirect)
  • Network accessline 88
    {           "type": "Hashtag",           "url": "https://www.facebook.com/hashtag/espp",
  • Network accessline 89
    "type": "Hashtag",           "url": "https://www.facebook.com/hashtag/espp",           "offset": 296,
  • Network accessline 90
    "url": "https://www.facebook.com/hashtag/espp",
  • Network accessline 97
    "id": "100064792144187",                           // Page numeric ID         "name": "CERN",                                    // Page display name         "profileUrl": "https://www.facebook.com/cern"     // Page URL
  • Network accessline 98
    "name": "CERN",                                    // Page display name         "profileUrl": "https://www.facebook.com/cern"     // Page URL       },
  • Network accessline 99
    "profileUrl": "https://www.facebook.com/cern"     // Page URL

solutions/social-listening/facebook-page-posts/scripts/get-page-id.py

  • Executable scriptline 1
    Executable file
  • Network accessline 5
    sys.stdout.reconfigure(encoding='utf-8', newline='\n')     parser = argparse.ArgumentParser()     parser.add_argument('page_url')  # Facebook page URL, e.g. https://www.facebook.com/cern
  • Network accessline 6
    parser = argparse.ArgumentParser()     parser.add_argument('page_url')  # Facebook page URL, e.g. https://www.facebook.com/cern     args = parser.parse_args()
  • Network accessline 7
    parser.add_argument('page_url')  # Facebook page URL, e.g. https://www.facebook.com/cern
  • Network accessline 12
    try {{         const pageUrl = {repr(args.page_url)};         const r = await fetch(pageUrl);
  • Network accessline 13
    const pageUrl = {repr(args.page_url)};         const r = await fetch(pageUrl);         const html = await r.text();
  • Network accessline 14
    const r = await fetch(pageUrl);

solutions/social-listening/facebook-page-posts/scripts/get-page-posts.py

  • Executable scriptline 1
    Executable file
  • Network accessline 80
    const resp = await fetch('https://www.facebook.com/api/graphql/', {{

solutions/social-listening/facebook-page-profile-posts/SKILL.md

  • Network accessline 20
    - The target Facebook page or profile is open in the browser (e.g., `https://www.facebook.com/cern`)
  • Network accessline 35
    Otherwise: navigate to `https://www.facebook.com` and check:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Dangerous shell operationline 47
    `eval "$(python scripts/get-page-id.py '{page_url}')"`
  • Network accessline 49
    Parameters: - `page_url`: Full Facebook page or profile URL, e.g. `https://www.facebook.com/cern`
  • Network accessline 50
    - `page_url`: Full Facebook page or profile URL, e.g. `https://www.facebook.com/cern`
  • Access to secretsline 52
    [Credential-related source omitted]
  • Network accessline 56
    {   "pageId": "100064792144187",   "pageUrl": "https://www.facebook.com/cern"
  • Network accessline 57
    "pageId": "100064792144187",   "pageUrl": "https://www.facebook.com/cern" }
  • Network accessline 58
    "pageUrl": "https://www.facebook.com/cern"
  • Dangerous shell operationline 66
    `eval "$(python scripts/get-page-posts.py '{page_id}' --page-url '{page_url}' --cursor '{cursor}' --after-time {after_time} --before-time {before_time} --count {count})"`
  • Network accessline 79
    "posts": [     {       "facebookUrl": "https://www.facebook.com/cern",
  • Network accessline 80
    {       "facebookUrl": "https://www.facebook.com/cern",       "postId": "1417704873732571",
  • Network accessline 81
    "facebookUrl": "https://www.facebook.com/cern",
  • Network accessline 82
    "postId": "1417704873732571",       "pageName": "cern",       "url": "https://www.facebook.com/cern/posts/pfbid0n87...",
  • Network accessline 83
    "pageName": "cern",       "url": "https://www.facebook.com/cern/posts/pfbid0n87...",       "time": "2026-05-22T14:30:18.000Z",
  • Network accessline 84
    "url": "https://www.facebook.com/cern/posts/pfbid0n87...",
  • Network accessline 88
    "id": "100064792144187",         "name": "CERN",         "profileUrl": "https://www.facebook.com/cern",
  • Network accessline 89
    "name": "CERN",         "profileUrl": "https://www.facebook.com/cern",         "profilePic": "https://scontent-lax3-1.xx.fbcdn.net/v/t39.30808-1/..."
  • Network accessline 90
    "profileUrl": "https://www.facebook.com/cern",
  • Network accessline 91
    "profilePic": "https://scontent-lax3-1.xx.fbcdn.net/v/t39.30808-1/..."
  • Network accessline 94
    "text": "Post text content here...",       "textReferences": [         { "type": "ExternalUrl", "url": "https://home.cern/...", "offset": 731, "length": 96 },
  • Network accessline 95
    "textReferences": [         { "type": "ExternalUrl", "url": "https://home.cern/...", "offset": 731, "length": 96 },         { "type": "Hashtag", "url": "https://www.facebook.com/hashtag/espp", "offset": 296, "length": 5 }
  • Network accessline 96
    { "type": "ExternalUrl", "url": "https://home.cern/...", "offset": 731, "length": 96 },
  • Network accessline 97
    { "type": "Hashtag", "url": "https://www.facebook.com/hashtag/espp", "offset": 296, "length": 5 }
  • Network accessline 98
    ],       "link": "https://home.cern/...",       "likes": 1285,
  • Network accessline 99
    "link": "https://home.cern/...",
  • Network accessline 122
    "__typename": "Photo",           "id": "1417649567071435",           "thumbnail": "https://scontent-lax3-1.xx.fbcdn.net/v/t39.30808-6/...",
  • Network accessline 123
    "id": "1417649567071435",           "thumbnail": "https://scontent-lax3-1.xx.fbcdn.net/v/t39.30808-6/...",           "photo_image": { "uri": "https://scontent-lax3-1.xx.fbcdn.net/...", "width": 960, "height": 540 },
  • Network accessline 124
    "thumbnail": "https://scontent-lax3-1.xx.fbcdn.net/v/t39.30808-6/...",
  • Network accessline 125
    "photo_image": { "uri": "https://scontent-lax3-1.xx.fbcdn.net/...", "width": 960, "height": 540 },
  • Network accessline 126
    "url": "https://www.facebook.com/photo.php?fbid=1417649567071435&...",
  • Network accessline 131
    "feedbackId": "ZmVlZGJhY2s6MTQxNzcwNDg3...",       "facebookId": "100064792144187",       "topLevelUrl": "https://www.facebook.com/100064792144187/posts/1417704873732571",
  • Network accessline 132
    "facebookId": "100064792144187",       "topLevelUrl": "https://www.facebook.com/100064792144187/posts/1417704873732571",       "pageAdLibrary": {
  • Network accessline 133
    "topLevelUrl": "https://www.facebook.com/100064792144187/posts/1417704873732571",
  • Network accessline 136
    "id": "169005736520113"       },       "inputUrl": "https://www.facebook.com/cern"
  • Network accessline 137
    },       "inputUrl": "https://www.facebook.com/cern"     }
  • Network accessline 138
    "inputUrl": "https://www.facebook.com/cern"
  • Network accessline 151
    "__typename": "Video",   "id": "1540366350780488",   "thumbnail": "https://scontent-lax3-1.xx.fbcdn.net/v/t15.5256-10/...",
  • Network accessline 152
    "id": "1540366350780488",   "thumbnail": "https://scontent-lax3-1.xx.fbcdn.net/v/t15.5256-10/...",   "url": "https://www.facebook.com/reel/2188342222016401/",
  • Network accessline 153
    "thumbnail": "https://scontent-lax3-1.xx.fbcdn.net/v/t15.5256-10/...",
  • Network accessline 154
    "url": "https://www.facebook.com/reel/2188342222016401/",
  • Network accessline 155
    "playableUrlSd": "https://video.xx.fbcdn.net/...",
  • Network accessline 156
    "playableUrlHd": "https://video.xx.fbcdn.net/...",
  • Network accessline 180
    4. Find the request with `X-FB-Friendly-Name: ProfileCometTimelineFeedRefetchQuery`   5. Extract `doc_id` from the POST body and update the value in `scripts/get-page-posts.py` - `pageName` is derived from the URL path and may be incorrect 
  • Network accessline 181
    5. Extract `doc_id` from the POST body and update the value in `scripts/get-page-posts.py` - `pageName` is derived from the URL path and may be incorrect for profile pages with numeric IDs (e.g., `https://www.facebook.com/100012345` → pageN
  • Network accessline 182
    - `pageName` is derived from the URL path and may be incorrect for profile pages with numeric IDs (e.g., `https://www.facebook.com/100012345` → pageName = `100012345`)

solutions/social-listening/facebook-page-profile-posts/scripts/get-page-id.py

  • Executable scriptline 1
    Executable file
  • Network accessline 5
    sys.stdout.reconfigure(encoding='utf-8', newline='\n')     parser = argparse.ArgumentParser()     parser.add_argument('page_url')  # Facebook page URL, e.g. https://www.facebook.com/cern
  • Network accessline 6
    parser = argparse.ArgumentParser()     parser.add_argument('page_url')  # Facebook page URL, e.g. https://www.facebook.com/cern     args = parser.parse_args()
  • Network accessline 7
    parser.add_argument('page_url')  # Facebook page URL, e.g. https://www.facebook.com/cern
  • Network accessline 12
    try {{         const pageUrl = {repr(args.page_url)};         const r = await fetch(pageUrl);
  • Network accessline 13
    const pageUrl = {repr(args.page_url)};         const r = await fetch(pageUrl);         const html = await r.text();
  • Network accessline 14
    const r = await fetch(pageUrl);

solutions/social-listening/facebook-page-profile-posts/scripts/get-page-posts.py

  • Executable scriptline 1
    Executable file
  • Network accessline 85
    const resp = await fetch('https://www.facebook.com/api/graphql/', {{
  • Network accessline 220
    const facebookId   = actor0?.id || null;       const topLevelUrl  = facebookId && node.post_id         ? `https://www.facebook.com/${{facebookId}}/posts/${{node.post_id}}`
  • Network accessline 221
    const topLevelUrl  = facebookId && node.post_id         ? `https://www.facebook.com/${{facebookId}}/posts/${{node.post_id}}`         : null;
  • Network accessline 222
    ? `https://www.facebook.com/${{facebookId}}/posts/${{node.post_id}}`

solutions/social-listening/instagram-hashtag-posts/SKILL.md

  • Network accessline 20
    - Browser is open on any Instagram page: `https://www.instagram.com/`
  • Network accessline 35
    Otherwise: open `https://www.instagram.com/` and observe the page login status:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 51
    1. `navigate https://www.instagram.com/explore/search/keyword/?q=%23{hashtag}` (e.g., `%23travel` for `#travel`) 2. `wait stable` 3. `eval "$(python scripts/fetch-hashtag-posts.py '{hashtag}')"`
  • Dangerous shell operationline 53
    3. `eval "$(python scripts/fetch-hashtag-posts.py '{hashtag}')"`
  • Access to secretsline 55
    [Credential-related source omitted]
  • Network accessline 69
    "comment_count": 312,       "caption": "Beautiful sunset #travel",       "thumbnail_url": "https://scontent.cdninstagram.com/...",
  • Network accessline 70
    "caption": "Beautiful sunset #travel",       "thumbnail_url": "https://scontent.cdninstagram.com/...",       "video_url": null,
  • Network accessline 71
    "thumbnail_url": "https://scontent.cdninstagram.com/...",

solutions/social-listening/instagram-hashtag-posts/scripts/fetch-hashtag-posts.py

  • Executable scriptline 1
    Executable file
  • Network accessline 52
    var r = await fetch('https://www.instagram.com/graphql/query', {{
  • Network accessline 58
    'X-FB-Friendly-Name': 'PolarisKeywordSearchExplorePageRelayQuery',             'X-Requested-With': 'XMLHttpRequest',             'Referer': 'https://www.instagram.com/explore/search/keyword/?q=%23{quote(args.hashtag)}'
  • Network accessline 59
    'X-Requested-With': 'XMLHttpRequest',             'Referer': 'https://www.instagram.com/explore/search/keyword/?q=%23{quote(args.hashtag)}'           }},
  • Network accessline 60
    'Referer': 'https://www.instagram.com/explore/search/keyword/?q=%23{quote(args.hashtag)}'

solutions/social-listening/instagram-hashtag-posts/scripts/parse-hashtag-response.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/instagram-place-posts/SKILL.md

  • Network accessline 20
    - Browser is open on any Instagram page: `https://www.instagram.com/`
  • Network accessline 35
    Otherwise: open `https://www.instagram.com/` and observe the page login status:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Dangerous shell operationline 49
    `eval "$(python scripts/search-location.py '{keyword}')"`
  • Dangerous shell operationline 71
    `eval "$(python scripts/get-place-posts.py '{location_id}' --tab ranked --max-id '{cursor}' --session-id '{session_id}')"`
  • Network accessline 89
    "comment_count": 48,       "caption": "NYC skyline at sunset 🌆",       "thumbnail_url": "https://scontent.cdninstagram.com/...",
  • Network accessline 90
    "caption": "NYC skyline at sunset 🌆",       "thumbnail_url": "https://scontent.cdninstagram.com/...",       "video_url": "https://scontent.cdninstagram.com/...",
  • Network accessline 91
    "thumbnail_url": "https://scontent.cdninstagram.com/...",
  • Network accessline 92
    "video_url": "https://scontent.cdninstagram.com/...",
  • Network accessline 105
    1. `navigate https://www.instagram.com/` → `wait stable`
  • Dangerous shell operationline 106
    2. `eval "$(python scripts/search-location.py '{location_name}')"` → select the best-matching venue, extract its `id` as `location_id`
  • Dangerous shell operationline 107
    3. `eval "$(python scripts/get-place-posts.py '{location_id}' --session-id 'session-001')"` → collect `items`, note `more_available` and `next_max_id`
  • Dangerous shell operationline 109
    a. `eval "$(python scripts/get-place-posts.py '{location_id}' --max-id '{next_max_id}' --session-id 'session-001')"` → accumulate `items`

solutions/social-listening/instagram-place-posts/scripts/get-place-posts.py

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    if (!token) return JSON.stringify({{ error: true, message: 'CSRF token not found; navigate to instagram.com first' }});         var body = 'max_id={max_id_val}&tab={args.tab}&session_id={args.session_id}';         var r = await fetch('https
  • Network accessline 21
    var body = 'max_id={max_id_val}&tab={args.tab}&session_id={args.session_id}';         var r = await fetch('https://www.instagram.com/api/v1/locations/{args.location_id}/sections/', {{           method: 'POST',
  • Network accessline 22
    var r = await fetch('https://www.instagram.com/api/v1/locations/{args.location_id}/sections/', {{

solutions/social-listening/instagram-place-posts/scripts/search-location.py

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    (async function() {{       try {{         var r = await fetch('https://www.instagram.com/api/v1/location_search/?search_query={encoded}', {{
  • Network accessline 16
    try {{         var r = await fetch('https://www.instagram.com/api/v1/location_search/?search_query={encoded}', {{           headers: {{
  • Network accessline 17
    var r = await fetch('https://www.instagram.com/api/v1/location_search/?search_query={encoded}', {{

solutions/social-listening/instagram-post-comments/SKILL.md

  • Network accessline 20
    - Browser is open on any Instagram page: `https://www.instagram.com/`
  • Network accessline 35
    Otherwise: open `https://www.instagram.com/` and observe the page login status:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Dangerous shell operationline 49
    `eval "$(python scripts/get-media-id.py '{shortcode}')"`
  • Dangerous shell operationline 67
    `eval "$(python scripts/get-post-comments.py '{media_id}' --min-id '{cursor}')"`
  • Network accessline 94
    1. `navigate https://www.instagram.com/` → `wait stable`
  • Dangerous shell operationline 95
    2. If only shortcode is available: `eval "$(python scripts/get-media-id.py '{shortcode}')"` → extract `media_id`
  • Dangerous shell operationline 96
    3. `eval "$(python scripts/get-post-comments.py '{media_id}')"` → collect `comments`, note `has_more_comments` and `next_min_id`
  • Dangerous shell operationline 98
    a. `eval "$(python scripts/get-post-comments.py '{media_id}' --min-id '{next_min_id}')"` → accumulate `comments`

solutions/social-listening/instagram-post-comments/scripts/get-media-id.py

  • Executable scriptline 1
    Executable file
  • Network accessline 11
    (async function() {{       try {{         var r = await fetch('https://www.instagram.com/api/v1/media/shortcode/{args.shortcode}/', {{
  • Network accessline 12
    try {{         var r = await fetch('https://www.instagram.com/api/v1/media/shortcode/{args.shortcode}/', {{           headers: {{
  • Network accessline 13
    var r = await fetch('https://www.instagram.com/api/v1/media/shortcode/{args.shortcode}/', {{

solutions/social-listening/instagram-post-comments/scripts/get-post-comments.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    (async function() {{       try {{         var url = 'https://www.instagram.com/api/v1/media/{args.media_id}/comments/?can_support_threading=true&permalink_enabled=false{min_id_param}';
  • Network accessline 15
    try {{         var url = 'https://www.instagram.com/api/v1/media/{args.media_id}/comments/?can_support_threading=true&permalink_enabled=false{min_id_param}';         var r = await fetch(url, {{
  • Network accessline 16
    var url = 'https://www.instagram.com/api/v1/media/{args.media_id}/comments/?can_support_threading=true&permalink_enabled=false{min_id_param}';         var r = await fetch(url, {{           headers: {{
  • Network accessline 17
    var r = await fetch(url, {{

solutions/social-listening/instagram-profile-meta/SKILL.md

  • Network accessline 20
    - Browser is open on any Instagram page: `https://www.instagram.com/`
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Dangerous shell operationline 39
    `eval "$(python scripts/get-profile-meta.py '{username}')"`
  • Network accessline 54
    "is_verified": true,   "is_business_account": true,   "profile_pic_url": "https://scontent.cdninstagram.com/...",
  • Network accessline 55
    "is_business_account": true,   "profile_pic_url": "https://scontent.cdninstagram.com/...",   "external_url": "https://www.nationalgeographic.com",
  • Network accessline 56
    "profile_pic_url": "https://scontent.cdninstagram.com/...",
  • Network accessline 57
    "external_url": "https://www.nationalgeographic.com",

solutions/social-listening/instagram-profile-meta/scripts/get-profile-meta.py

  • Executable scriptline 1
    Executable file
  • Network accessline 11
    (async function() {{       try {{         var r = await fetch('https://www.instagram.com/api/v1/users/web_profile_info/?username={args.username}', {{
  • Network accessline 12
    try {{         var r = await fetch('https://www.instagram.com/api/v1/users/web_profile_info/?username={args.username}', {{           headers: {{
  • Network accessline 13
    var r = await fetch('https://www.instagram.com/api/v1/users/web_profile_info/?username={args.username}', {{

solutions/social-listening/instagram-profile-posts/SKILL.md

  • Network accessline 20
    - Browser is open on any Instagram page: `https://www.instagram.com/`
  • Network accessline 35
    Otherwise: open `https://www.instagram.com/` and observe the page login status:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Dangerous shell operationline 49
    `eval "$(python scripts/get-user-id.py '{username}')"`
  • Dangerous shell operationline 65
    `eval "$(python scripts/get-profile-posts.py '{user_id}' --count 12 --max-id '{cursor}')"`
  • Network accessline 82
    "comment_count": 312,       "caption": "Caption text here...",       "thumbnail_url": "https://scontent.cdninstagram.com/...",
  • Network accessline 83
    "caption": "Caption text here...",       "thumbnail_url": "https://scontent.cdninstagram.com/...",       "video_url": null,
  • Network accessline 84
    "thumbnail_url": "https://scontent.cdninstagram.com/...",
  • Network accessline 100
    1. `navigate https://www.instagram.com/` → `wait stable`
  • Dangerous shell operationline 101
    2. `eval "$(python scripts/get-user-id.py '{username}')"` → extract `id` as `user_id`
  • Dangerous shell operationline 102
    3. `eval "$(python scripts/get-profile-posts.py '{user_id}' --count 12)"` → collect `items`, note `more_available` and `next_max_id`
  • Dangerous shell operationline 104
    a. `eval "$(python scripts/get-profile-posts.py '{user_id}' --count 12 --max-id '{next_max_id}')"` → accumulate `items`

solutions/social-listening/instagram-profile-posts/scripts/get-profile-posts.py

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    (async function() {{       try {{         var url = 'https://www.instagram.com/api/v1/feed/user/{args.user_id}/?count={args.count}{max_id_param}';
  • Network accessline 16
    try {{         var url = 'https://www.instagram.com/api/v1/feed/user/{args.user_id}/?count={args.count}{max_id_param}';         var r = await fetch(url, {{
  • Network accessline 17
    var url = 'https://www.instagram.com/api/v1/feed/user/{args.user_id}/?count={args.count}{max_id_param}';         var r = await fetch(url, {{           headers: {{
  • Network accessline 18
    var r = await fetch(url, {{

solutions/social-listening/instagram-profile-posts/scripts/get-user-id.py

  • Executable scriptline 1
    Executable file
  • Network accessline 11
    (async function() {{       try {{         var r = await fetch('https://www.instagram.com/api/v1/users/web_profile_info/?username={args.username}', {{
  • Network accessline 12
    try {{         var r = await fetch('https://www.instagram.com/api/v1/users/web_profile_info/?username={args.username}', {{           headers: {{
  • Network accessline 13
    var r = await fetch('https://www.instagram.com/api/v1/users/web_profile_info/?username={args.username}', {{

solutions/social-listening/reddit-competitor-analysis-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you have not configured the BrowserAct API Key, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key first."

solutions/social-listening/reddit-competitor-analysis-api-skill/scripts/reddit_competitor_analysis_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "85401899001481609" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 31
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 32
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 33
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 48
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 49
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 50
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 72
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 73
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 90
    [Credential-related source omitted]
  • Access to secretsline 96
    [Credential-related source omitted]
  • Network accessline 97
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 98
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 99
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 110
    [Credential-related source omitted]

solutions/social-listening/threads-keyword-search/SKILL.md

  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page. JS code is encapsulated in Python files under the `scripts/` directory, invoked via `eval "$
  • Network accessline 39
    1. `navigate https://www.threads.com/search/?q={keyword}&serp_type={filter}`
  • Dangerous shell operationline 43
    3. `eval "$(python scripts/extract-search-results.py '{keyword}' --filter {filter})"`
  • Network accessline 52
    "id": "3936653356768062022",          // post internal ID (pk)       "code": "DZyvcdEl-W1",               // post short code for URL       "url": "https://www.threads.com/@flower_popy/post/DZyvcdEl-W1",
  • Network accessline 53
    "code": "DZyvcdEl-W1",               // post short code for URL       "url": "https://www.threads.com/@flower_popy/post/DZyvcdEl-W1",       "text": "AI is changing everything...", // post text content, null if no caption
  • Network accessline 54
    "url": "https://www.threads.com/@flower_popy/post/DZyvcdEl-W1",
  • Network accessline 88
    1. `navigate https://www.threads.com/search/?q=%23{hashtag}&serp_type={filter}`
  • Dangerous shell operationline 91
    3. `eval "$(python scripts/extract-search-results.py '#AI' --filter top)"`

solutions/social-listening/threads-keyword-search/scripts/extract-search-results.py

  • Executable scriptline 1
    Executable file
  • Network accessline 22
    const srIdx = html.indexOf('"searchResults":{{"inform_module"');         if (srIdx < 0) {{           return JSON.stringify({{error: true, message: 'searchResults not found in SSR HTML — navigate to the search page first: https://www.threads
  • Network accessline 23
    if (srIdx < 0) {{           return JSON.stringify({{error: true, message: 'searchResults not found in SSR HTML — navigate to the search page first: https://www.threads.com/search/?q=' + encodeURIComponent(expectedKw) + '&serp_type={serp_fil
  • Network accessline 24
    return JSON.stringify({{error: true, message: 'searchResults not found in SSR HTML — navigate to the search page first: https://www.threads.com/search/?q=' + encodeURIComponent(expectedKw) + '&serp_type={serp_filter}'}});
  • Network accessline 54
    id: post.pk || null,             code: post.code || null,             url: u.username && post.code ? 'https://www.threads.com/@' + u.username + '/post/' + post.code : null,
  • Network accessline 55
    code: post.code || null,             url: u.username && post.code ? 'https://www.threads.com/@' + u.username + '/post/' + post.code : null,             text: (post.caption && post.caption.text) || null,
  • Network accessline 56
    url: u.username && post.code ? 'https://www.threads.com/@' + u.username + '/post/' + post.code : null,

solutions/social-listening/threads-profile-search/SKILL.md

  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page. JS code is encapsulated in Python files under the `scripts/` directory, invoked via `eval "$
  • Network accessline 39
    1. `navigate https://www.threads.com/search/?q={keyword}&type=profiles`
  • Dangerous shell operationline 41
    3. `eval "$(python scripts/extract-profile-search.py '{keyword}')"`
  • Network accessline 52
    "is_verified": false,                // blue checkmark verification status       "is_private": false,                 // true if account is private       "profile_pic_url": "https://...",    // profile picture URL
  • Network accessline 53
    "is_private": false,                 // true if account is private       "profile_pic_url": "https://...",    // profile picture URL       "profile_url": "https://www.threads.com/@ceozuck162"
  • Network accessline 54
    "profile_pic_url": "https://...",    // profile picture URL
  • Network accessline 55
    "profile_url": "https://www.threads.com/@ceozuck162"
  • Dangerous shell operationline 74
    `eval "$(python scripts/get-profile-details.py '{username}')"`
  • Network accessline 88
    "is_verified": true,   "is_private": false,   "profile_pic_url": "https://...",
  • Network accessline 89
    "is_private": false,   "profile_pic_url": "https://...",   "profile_url": "https://www.threads.com/@zuck",
  • Network accessline 90
    "profile_pic_url": "https://...",
  • Network accessline 91
    "profile_url": "https://www.threads.com/@zuck",
  • Network accessline 102
    1. `navigate https://www.threads.com/search/?q={keyword}&type=profiles` → `wait stable`
  • Dangerous shell operationline 103
    2. `eval "$(python scripts/extract-profile-search.py '{keyword}')"` → collect profiles list
  • Dangerous shell operationline 105
    a. `eval "$(python scripts/get-profile-details.py '{username}')"` → merge biography, follower_count, following_count, external_url into profile record
  • Network accessline 130
    - **Batch orchestration**: Run `extract-profile-search.py` once per keyword, then loop through the returned usernames for enrichment. Do not call `get-profile-details.py` in parallel within the same session — rate limit applies. - **Test be
  • Network accessline 131
    - **Test before batch execution**: Test with 1-2 keywords first before running full enrichment batch. - **Reduce redundant pre-operations**: After the search page load, all subsequent `get-profile-details.py` calls use `fetch()` in the curr
  • Network accessline 132
    - **Reduce redundant pre-operations**: After the search page load, all subsequent `get-profile-details.py` calls use `fetch()` in the current browser context — no additional navigation needed.

solutions/social-listening/threads-profile-search/scripts/extract-profile-search.py

  • Executable scriptline 1
    Executable file
  • Network accessline 17
    const srIdx = html.indexOf('"searchResults":{{"inform_module"');         if (srIdx < 0) {{           return JSON.stringify({{error: true, message: 'searchResults not found — navigate to profile search: https://www.threads.com/search/?q=' + 
  • Network accessline 18
    if (srIdx < 0) {{           return JSON.stringify({{error: true, message: 'searchResults not found — navigate to profile search: https://www.threads.com/search/?q=' + encodeURIComponent('{keyword}') + '&type=profiles'}});         }}
  • Network accessline 19
    return JSON.stringify({{error: true, message: 'searchResults not found — navigate to profile search: https://www.threads.com/search/?q=' + encodeURIComponent('{keyword}') + '&type=profiles'}});
  • Network accessline 56
    is_private: u.text_post_app_is_private || false,             profile_pic_url: u.profile_pic_url || null,             profile_url: 'https://www.threads.com/@' + u.username
  • Network accessline 57
    profile_pic_url: u.profile_pic_url || null,             profile_url: 'https://www.threads.com/@' + u.username           }});
  • Network accessline 58
    profile_url: 'https://www.threads.com/@' + u.username

solutions/social-listening/threads-profile-search/scripts/get-profile-details.py

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    try {{         const username = '{username}';         const res = await fetch(
  • Network accessline 16
    const username = '{username}';         const res = await fetch(           'https://www.threads.com/api/v1/users/web_profile_info/?username=' + encodeURIComponent(username),
  • Network accessline 17
    const res = await fetch(
  • Network accessline 18
    'https://www.threads.com/api/v1/users/web_profile_info/?username=' + encodeURIComponent(username),
  • Network accessline 37
    is_private: user.is_private || false,           profile_pic_url: user.profile_pic_url || null,           profile_url: 'https://www.threads.com/@' + (user.username || username),
  • Network accessline 38
    profile_pic_url: user.profile_pic_url || null,           profile_url: 'https://www.threads.com/@' + (user.username || username),           external_url: user.external_url || null
  • Network accessline 39
    profile_url: 'https://www.threads.com/@' + (user.username || username),

solutions/social-listening/threads-user-posts/SKILL.md

  • Network accessline 35
    Otherwise: `navigate https://www.threads.com` and check page state:
  • Network accessline 39
    If not logged in and user cannot log in → the capability may still work on some proxy/IP configurations; attempt `navigate https://www.threads.com/@{username}` and check if profile content loads. If the page redirects to `/login/`, terminat
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page. JS code is encapsulated in Python files under the `scripts/` directory, invoked via `eval "$
  • Network accessline 49
    1. `navigate https://www.threads.com/@{username}`
  • Dangerous shell operationline 51
    3. `eval "$(python scripts/extract-posts.py)"`
  • Network accessline 58
    "id": "3936653356768062022",          // post internal ID (pk)       "code": "DKmzN8wJzFG",               // post short code for URL       "url": "https://www.threads.com/@zuck/post/DKmzN8wJzFG",  // direct post link
  • Network accessline 59
    "code": "DKmzN8wJzFG",               // post short code for URL       "url": "https://www.threads.com/@zuck/post/DKmzN8wJzFG",  // direct post link       "text": "Excited to share...",        // post text content, null if no caption
  • Network accessline 60
    "url": "https://www.threads.com/@zuck/post/DKmzN8wJzFG",  // direct post link
  • Dangerous shell operationline 95
    `eval "$(python scripts/scroll-load-more.py)"`
  • Network accessline 101
    Find the `POST https://www.threads.com/graphql/query` request(s) that appeared after the scroll. Read the response:
  • Network accessline 113
    1. `navigate https://www.threads.com/@{username}` → `wait stable`
  • Dangerous shell operationline 114
    2. `eval "$(python scripts/extract-posts.py)"` → collect initial posts, note `page_info`
  • Dangerous shell operationline 116
    a. `eval "$(python scripts/scroll-load-more.py)"`
  • Dangerous shell operationline 125
    **DOM Pagination**: Scroll `#scrollview` via `eval "$(python scripts/scroll-load-more.py)"`, then `wait stable` and read new `POST /graphql/query` response from network traffic. Termination: `page_info.has_next_page == false` in the GraphQL

solutions/social-listening/threads-user-posts/scripts/extract-posts.py

  • Executable scriptline 1
    Executable file
  • Network accessline 44
    id: post.pk || null,             code: post.code || null,             url: u.username && post.code ? 'https://www.threads.com/@' + u.username + '/post/' + post.code : null,
  • Network accessline 45
    code: post.code || null,             url: u.username && post.code ? 'https://www.threads.com/@' + u.username + '/post/' + post.code : null,             text: (post.caption && post.caption.text) || null,
  • Network accessline 46
    url: u.username && post.code ? 'https://www.threads.com/@' + u.username + '/post/' + post.code : null,

solutions/social-listening/threads-user-posts/scripts/scroll-load-more.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/trustpilot-company-info/SKILL.md

  • Network accessline 20
    - Target page is reachable on the public web: `https://www.trustpilot.com/review/{domain}`
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Network accessline 39
    Steps: 1. `navigate https://www.trustpilot.com/review/{domain}` (replace `{domain}` with the company domain, e.g. `apple.com`, `shopwagandtail.com`)
  • Network accessline 40
    1. `navigate https://www.trustpilot.com/review/{domain}` (replace `{domain}` with the company domain, e.g. `apple.com`, `shopwagandtail.com`)
  • Dangerous shell operationline 42
    3. `eval "$(python scripts/extract-company-info.py)"` — basic profile
  • Dangerous shell operationline 43
    4. `eval "$(python scripts/extract-company-info.py --include-response-metrics)"` — also include reply behavior + AI response flag
  • Network accessline 71
    "categoryId": "pet_store",   "allCategories": [{ "id": "pet_store", "name": "Pet Store", "isPrimary": true }],   "websiteUrl": "https://shopwagandtail.com",
  • Network accessline 72
    "allCategories": [{ "id": "pet_store", "name": "Pet Store", "isPrimary": true }],   "websiteUrl": "https://shopwagandtail.com",   "websiteTitle": "shopwagandtail.com",
  • Network accessline 73
    "websiteUrl": "https://shopwagandtail.com",
  • Network accessline 81
    "contactZipCode": null,   "locationsCount": 0,   "companyPageUrl": "https://www.trustpilot.com/review/shopwagandtail.com",
  • Network accessline 82
    "locationsCount": 0,   "companyPageUrl": "https://www.trustpilot.com/review/shopwagandtail.com",   "scrapedDateTime": "2026-06-26T04:12:17.272Z",
  • Network accessline 83
    "companyPageUrl": "https://www.trustpilot.com/review/shopwagandtail.com",
  • Network accessline 98
    {   "isCompanyFound": false,   "companyPageUrl": "https://www.trustpilot.com/review/nonexistent-xyz-9999.com",
  • Network accessline 99
    "isCompanyFound": false,   "companyPageUrl": "https://www.trustpilot.com/review/nonexistent-xyz-9999.com",   "searchedDomain": "nonexistent-xyz-9999.com",
  • Network accessline 100
    "companyPageUrl": "https://www.trustpilot.com/review/nonexistent-xyz-9999.com",

solutions/social-listening/trustpilot-company-info/scripts/extract-company-info.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/trustpilot-reviews/SKILL.md

  • Network accessline 20
    - Target page is reachable on the public web: `https://www.trustpilot.com/review/{domain}`
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Network accessline 40
    https://www.trustpilot.com/review/{domain}?page={page}&languages={lang}&sort=recency&stars={stars}&verified={true|false}&replies={true|false}&date={period}&search={keyword}
  • Dangerous shell operationline 63
    4. `eval "$(python scripts/extract-reviews.py [options])"`
  • Network accessline 77
    {       "companyName": "Wag + Tail",       "companyPageUrl": "https://www.trustpilot.com/review/shopwagandtail.com?page=1&languages=en",
  • Network accessline 78
    "companyName": "Wag + Tail",       "companyPageUrl": "https://www.trustpilot.com/review/shopwagandtail.com?page=1&languages=en",       "businessUnitId": "624c24851220e2743a4d7916",         // Trustpilot internal company ID
  • Network accessline 79
    "companyPageUrl": "https://www.trustpilot.com/review/shopwagandtail.com?page=1&languages=en",
  • Network accessline 80
    "businessUnitId": "624c24851220e2743a4d7916",         // Trustpilot internal company ID       "reviewId": "65fd6a055de8c560404349e1",       "reviewUrl": "https://www.trustpilot.com/reviews/65fd6a055de8c560404349e1",
  • Network accessline 81
    "reviewId": "65fd6a055de8c560404349e1",       "reviewUrl": "https://www.trustpilot.com/reviews/65fd6a055de8c560404349e1",       "reviewTitle": "Great product looks so cute on my girl",
  • Network accessline 82
    "reviewUrl": "https://www.trustpilot.com/reviews/65fd6a055de8c560404349e1",
  • Network accessline 139
    {   "isCompanyFound": false,   "companyPageUrl": "https://www.trustpilot.com/review/nonexistent-xyz-9999.com",
  • Network accessline 140
    "isCompanyFound": false,   "companyPageUrl": "https://www.trustpilot.com/review/nonexistent-xyz-9999.com",   "searchedDomain": "nonexistent-xyz-9999.com",
  • Network accessline 141
    "companyPageUrl": "https://www.trustpilot.com/review/nonexistent-xyz-9999.com",
  • Dangerous shell operationline 155
    eval "(() => { const s=document.querySelector('script#__NEXT_DATA__'); const d=JSON.parse(s.textContent); const langs=d.props.pageProps.filters.reviewStatistics.reviewLanguages; return JSON.stringify(langs.map(l => ({ code: l.isoCode, name:
  • Network accessline 171
    **URL Pagination**: URL pattern `https://www.trustpilot.com/review/{domain}?page={N}&{otherFilters}`. Next page = increment `page` by 1. Termination conditions: (a) `pagination.currentPage >= pagination.totalPages`, OR (b) `reviews.length =
  • Network accessline 176
    END=0   # 0 means "until totalPages" while : ; do   URL="https://www.trustpilot.com/review/${DOMAIN}?page=${PAGE}&languages=en&sort=recency"
  • Network accessline 177
    while : ; do   URL="https://www.trustpilot.com/review/${DOMAIN}?page=${PAGE}&languages=en&sort=recency"   browser-act --session {S} navigate "$URL"
  • Network accessline 178
    URL="https://www.trustpilot.com/review/${DOMAIN}?page=${PAGE}&languages=en&sort=recency"
  • Dangerous shell operationline 181
    RESP=$(browser-act --session {S} eval "$(python scripts/extract-reviews.py --include-extended-metadata)")

solutions/social-listening/trustpilot-reviews/scripts/extract-reviews.py

  • Executable scriptline 1
    Executable file
  • Network accessline 86
    businessUnitId: bu.id || null,             reviewId: r.id || null,             reviewUrl: r.id ? ('https://www.trustpilot.com/reviews/' + r.id) : null,
  • Network accessline 87
    reviewId: r.id || null,             reviewUrl: r.id ? ('https://www.trustpilot.com/reviews/' + r.id) : null,             reviewTitle: r.title || null,
  • Network accessline 88
    reviewUrl: r.id ? ('https://www.trustpilot.com/reviews/' + r.id) : null,

solutions/social-listening/wechat-article-search-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you have not configured the BrowserAct API Key, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."

solutions/social-listening/wechat-article-search-api-skill/scripts/wechat_article_search_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "84396171023358338" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 29
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 30
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 31
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 46
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 47
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 48
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 70
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 71
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 88
    [Credential-related source omitted]
  • Access to secretsline 94
    [Credential-related source omitted]
  • Network accessline 95
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 96
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 97
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 106
    [Credential-related source omitted]

solutions/social-listening/x-dm-auto-chat/SKILL.md

  • Network accessline 37
    browser-act --session <name> navigate https://x.com/i/chat
  • Dangerous shell operationline 39
    browser-act --session <name> eval "$(python scripts/check-page-state.py)"
  • Network accessline 44
    {   "url": "https://x.com/i/chat/pin/recovery?from=%2Fi%2Fchat",
  • Network accessline 45
    "url": "https://x.com/i/chat/pin/recovery?from=%2Fi%2Fchat",
  • Dangerous shell operationline 84
    browser-act --session <name> eval "$(python scripts/scan-inbox-merged.py)"
  • Network accessline 96
    a. **Open conversation**:       ```       browser-act --session <name> navigate https://x.com<conversation_url>
  • Network accessline 97
    ```       browser-act --session <name> navigate https://x.com<conversation_url>       browser-act --session <name> wait stable --timeout 15000
  • Network accessline 98
    browser-act --session <name> navigate https://x.com<conversation_url>
  • Dangerous shell operationline 106
    browser-act --session <name> eval "$(python scripts/read-conversation.py)"
  • Dangerous shell operationline 112
    browser-act --session <name> eval "$(python scripts/scroll-load-history.py)"
  • Dangerous shell operationline 123
    1. `browser-act --session <name> eval "$(python scripts/check-composer.py)"` → record `last_message_id`
  • Dangerous shell operationline 127
    5. `browser-act --session <name> eval "document.querySelector('[data-testid=\"dm-composer-send-button\"]').click(); 'clicked'"`
  • Dangerous shell operationline 129
    7. Verify: `browser-act --session <name> eval "$(python scripts/verify-sent.py '<reply_text>' --prev-last-id <last_message_id from step f1>)"`
  • Dangerous shell operationline 145
    browser-act --session <name> eval "$(python scripts/search-users.py '<search_query>')"
  • Dangerous shell operationline 158
    browser-act --session <name> eval "$(python scripts/open-conversation-by-user.py '<user_id>')"
  • Network accessline 162
    b. **Navigate to conversation**:       ```       browser-act --session <name> navigate https://x.com<conversation_url>
  • Network accessline 163
    ```       browser-act --session <name> navigate https://x.com<conversation_url>       browser-act --session <name> wait stable --timeout 15000
  • Network accessline 164
    browser-act --session <name> navigate https://x.com<conversation_url>
  • Dangerous shell operationline 172
    browser-act --session <name> eval "$(python scripts/check-composer.py)"
  • Dangerous shell operationline 193
    `browser-act --session <name> eval "$(python scripts/scan-inbox-merged.py)"`
  • Dangerous shell operationline 197
    `browser-act --session <name> eval "$(python scripts/fetch-inbox-api.py --cursor-id {cursor_id} --graph-snapshot-id {snap} --limit {N})"`
  • Dangerous shell operationline 200
    `browser-act --session <name> eval "$(python scripts/read-conversation.py)"`
  • Dangerous shell operationline 203
    `browser-act --session <name> eval "$(python scripts/scroll-load-history.py)"`
  • Dangerous shell operationline 206
    `browser-act --session <name> eval "$(python scripts/check-composer.py)"`
  • Dangerous shell operationline 209
    `browser-act --session <name> eval "$(python scripts/verify-sent.py '<expected_text>' --prev-last-id <last_id>)"`
  • Dangerous shell operationline 212
    `browser-act --session <name> eval "$(python scripts/search-users.py '<query>')"`
  • Dangerous shell operationline 215
    `browser-act --session <name> eval "$(python scripts/open-conversation-by-user.py '<user_id>')"`
  • Dangerous shell operationline 218
    `browser-act --session <name> eval "$(python scripts/check-page-state.py)"`

solutions/social-listening/x-dm-auto-chat/scripts/check-composer.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/x-dm-auto-chat/scripts/check-page-state.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/x-dm-auto-chat/scripts/fetch-inbox-api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 28
    let url;         if (cursorId && graphSnap) {{           url = 'https://api.x.com/graphql/udvEZwRtFbZht-atludZcw/GetInboxPageRequestQuery?variables=' +
  • Network accessline 29
    if (cursorId && graphSnap) {{           url = 'https://api.x.com/graphql/udvEZwRtFbZht-atludZcw/GetInboxPageRequestQuery?variables=' +             encodeURIComponent(JSON.stringify({{
  • Network accessline 30
    url = 'https://api.x.com/graphql/udvEZwRtFbZht-atludZcw/GetInboxPageRequestQuery?variables=' +
  • Network accessline 34
    }}));         }} else {{           url = 'https://api.x.com/graphql/eovtSNDuKOzRLKXV4yWcow/GetInitialXChatPageQuery?variables=' +
  • Network accessline 35
    }} else {{           url = 'https://api.x.com/graphql/eovtSNDuKOzRLKXV4yWcow/GetInitialXChatPageQuery?variables=' +             encodeURIComponent(JSON.stringify({{
  • Network accessline 36
    url = 'https://api.x.com/graphql/eovtSNDuKOzRLKXV4yWcow/GetInitialXChatPageQuery?variables=' +
  • Network accessline 44
    const r = await fetch(url, {{ credentials: 'include', headers }});

solutions/social-listening/x-dm-auto-chat/scripts/open-conversation-by-user.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/x-dm-auto-chat/scripts/read-conversation.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/x-dm-auto-chat/scripts/scan-inbox-merged.py

  • Executable scriptline 1
    Executable file
  • Network accessline 27
    const apiUrl = 'https://api.x.com/graphql/eovtSNDuKOzRLKXV4yWcow/GetInitialXChatPageQuery?variables=' +
  • Network accessline 31
    message_pull_version: null           }));         const r = await fetch(apiUrl, { credentials: 'include', headers });
  • Network accessline 32
    }));         const r = await fetch(apiUrl, { credentials: 'include', headers });         if (!r.ok) return JSON.stringify({ error: true, message: 'inbox API HTTP ' + r.status });
  • Network accessline 33
    const r = await fetch(apiUrl, { credentials: 'include', headers });

solutions/social-listening/x-dm-auto-chat/scripts/scroll-load-history.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/x-dm-auto-chat/scripts/search-users.py

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    const url = 'https://api.x.com/graphql/mYbJ7Qq9UAtG-68VAiBpYA/TypeaheadXChatQuery?variables=' +
  • Network accessline 28
    const r = await fetch(url, {{

solutions/social-listening/x-dm-auto-chat/scripts/verify-sent.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/x-keyword-comment/SKILL.md

  • Network accessline 69
    browser-act --session {SESSION} browser open {BROWSER_ID} https://x.com/ --headed
  • Dangerous shell operationline 92
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the logged-in user, never bypassing authentication or access controls. JS code is encapsulated in Python files und
  • Network accessline 105
    browser-act --session {SESSION} navigate "https://x.com/notifications"
  • Network accessline 107
    browser-act --session {SESSION} get markdown sleep $((RANDOM % 31 + 60))   # 60–90 s browser-act --session {SESSION} navigate "https://x.com/messages"
  • Network accessline 108
    sleep $((RANDOM % 31 + 60))   # 60–90 s browser-act --session {SESSION} navigate "https://x.com/messages" browser-act --session {SESSION} wait stable
  • Network accessline 109
    browser-act --session {SESSION} navigate "https://x.com/messages"
  • Network accessline 118
    browser-act --session {SESSION} navigate "https://x.com/home"
  • Network accessline 132
    browser-act --session {SESSION} wait stable sleep $((RANDOM % 8 + 8))     # 8–15 s browser-act --session {SESSION} navigate "https://x.com/home"
  • Network accessline 133
    sleep $((RANDOM % 8 + 8))     # 8–15 s browser-act --session {SESSION} navigate "https://x.com/home" sleep $((RANDOM % 16 + 10))   # 10–25 s
  • Network accessline 134
    browser-act --session {SESSION} navigate "https://x.com/home"
  • Network accessline 143
    browser-act --session {SESSION} navigate "https://x.com/search?q={KEYWORD_ENCODED}&f=live"
  • Network accessline 162
    1. Navigate: `browser-act --session {SESSION} navigate "https://x.com/search?q={KEYWORD_ENCODED}&src=typed_query&f=live"`
  • Dangerous shell operationline 167
    4. Scan: `browser-act --session {SESSION} eval "$(python scripts/scan-search-tweets.py --limit {N})"`
  • Network accessline 179
    "tweetSnippet": "Breaking: Alibaba just killed the browser automation stack...",       "authorHandle": "@AIGuideHQ",       "authorUrl": "https://x.com/AIGuideHQ",
  • Network accessline 180
    "authorHandle": "@AIGuideHQ",       "authorUrl": "https://x.com/AIGuideHQ",       "tweetUrl": "https://x.com/AIGuideHQ/status/2051969984847286536",
  • Network accessline 181
    "authorUrl": "https://x.com/AIGuideHQ",
  • Network accessline 182
    "tweetUrl": "https://x.com/AIGuideHQ/status/2051969984847286536",
  • Dangerous shell operationline 195
    `browser-act --session {SESSION} eval "$(python scripts/click-reply.py {replyBtnIdx})"`
  • Network accessline 254
    1. `browser-act --session {SESSION} navigate "https://x.com/search?q={KEYWORD_ENCODED}&src=typed_query&f=live"` → `browser-act --session {SESSION} wait stable --timeout 30000`
  • Dangerous shell operationline 255
    2. Initial scan: `browser-act --session {SESSION} eval "$(python scripts/scan-search-tweets.py --limit {N})"` → candidate tweet list
  • Dangerous shell operationline 260
    - b. `browser-act --session {SESSION} eval "$(python scripts/click-reply.py {replyBtnIdx})"` → open reply box
  • Network accessline 271
    {   "authorUrl": "https://x.com/AIGuideHQ",
  • Network accessline 272
    "authorUrl": "https://x.com/AIGuideHQ",
  • Network accessline 273
    "tweetUrl": "https://x.com/AIGuideHQ/status/2051969984847286536",

solutions/social-listening/x-keyword-comment/scripts/click-reply.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/x-keyword-comment/scripts/scan-search-tweets.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/x-tweet-by-conversation/SKILL.md

  • Network accessline 35
    Otherwise: open `https://x.com` and observe the left sidebar:
  • Network accessline 51
    Parameters: - `conversation_id` (positional): the X conversation id, which equals the root tweet id (the same number you would see in `https://x.com/i/status/<conversation_id>`).
  • Network accessline 52
    - `conversation_id` (positional): the X conversation id, which equals the root tweet id (the same number you would see in `https://x.com/i/status/<conversation_id>`).
  • Network accessline 91
    "type": "tweet",       "id": "2069990565530214798",       "url": "https://x.com/Rothmus/status/2069990565530214798",
  • Network accessline 92
    "id": "2069990565530214798",       "url": "https://x.com/Rothmus/status/2069990565530214798",       "twitter_url": "https://twitter.com/Rothmus/status/2069990565530214798",
  • Network accessline 93
    "url": "https://x.com/Rothmus/status/2069990565530214798",
  • Network accessline 94
    "twitter_url": "https://twitter.com/Rothmus/status/2069990565530214798",
  • Network accessline 122
    "user_name": "Rothmus",         "name": "Rothmus",         "url": "https://x.com/Rothmus",
  • Network accessline 123
    "name": "Rothmus",         "url": "https://x.com/Rothmus",         "is_verified": false,
  • Network accessline 124
    "url": "https://x.com/Rothmus",
  • Network accessline 126
    "is_blue_verified": true,         "verified_type": null,         "profile_picture": "https://pbs.twimg.com/profile_images/.../photo.jpg",
  • Network accessline 127
    "verified_type": null,         "profile_picture": "https://pbs.twimg.com/profile_images/.../photo.jpg",         "description": "Singapore observer ...",
  • Network accessline 128
    "profile_picture": "https://pbs.twimg.com/profile_images/.../photo.jpg",
  • Network accessline 137
    "type": "tweet",       "id": "2070027327409655973",       "url": "https://x.com/DinoLeadingNews/status/2070027327409655973",
  • Network accessline 138
    "id": "2070027327409655973",       "url": "https://x.com/DinoLeadingNews/status/2070027327409655973",       "text": "@Rothmus @elonmusk Singapore proves that identity ...",
  • Network accessline 139
    "url": "https://x.com/DinoLeadingNews/status/2070027327409655973",

solutions/social-listening/x-tweet-by-conversation/scripts/build-conversation-url.py

  • Executable scriptline 1
    Executable file
  • Network accessline 16
    handle = args.handle.lstrip('@').strip() or 'i'     print(f'https://x.com/{handle}/status/{args.conversation_id}')
  • Network accessline 17
    print(f'https://x.com/{handle}/status/{args.conversation_id}')

solutions/social-listening/x-tweet-by-conversation/scripts/parse-tweets.py

  • Executable scriptline 1
    Executable file
  • Network accessline 214
    "type": "tweet",         "id": tweet_id,         "url": f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 215
    "id": tweet_id,         "url": f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,         "twitter_url": f"https://twitter.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 216
    "url": f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 217
    "twitter_url": f"https://twitter.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 245
    "user_name": screen_name,             "name": name,             "url": f"https://x.com/{screen_name}" if screen_name else None,
  • Network accessline 246
    "name": name,             "url": f"https://x.com/{screen_name}" if screen_name else None,             "is_verified": u_ver.get('verified', u_legacy.get('verified')),
  • Network accessline 247
    "url": f"https://x.com/{screen_name}" if screen_name else None,

solutions/social-listening/x-tweet-by-handle/SKILL.md

  • Network accessline 35
    Otherwise: open `https://x.com` and observe the left sidebar:
  • Network accessline 94
    "type": "tweet",       "id": "2068333045510291908",       "url": "https://x.com/NASA/status/2068333045510291908",
  • Network accessline 95
    "id": "2068333045510291908",       "url": "https://x.com/NASA/status/2068333045510291908",       "twitter_url": "https://twitter.com/NASA/status/2068333045510291908",
  • Network accessline 96
    "url": "https://x.com/NASA/status/2068333045510291908",
  • Network accessline 97
    "twitter_url": "https://twitter.com/NASA/status/2068333045510291908",
  • Network accessline 119
    "urls": [],       "media": [         {"type": "photo", "url": "https://pbs.twimg.com/media/abcd.jpg", "expanded_url": "https://x.com/NASA/status/2068333045510291908/photo/1", "alt_text": null}
  • Network accessline 120
    "media": [         {"type": "photo", "url": "https://pbs.twimg.com/media/abcd.jpg", "expanded_url": "https://x.com/NASA/status/2068333045510291908/photo/1", "alt_text": null}       ],
  • Network accessline 121
    {"type": "photo", "url": "https://pbs.twimg.com/media/abcd.jpg", "expanded_url": "https://x.com/NASA/status/2068333045510291908/photo/1", "alt_text": null}
  • Network accessline 127
    "user_name": "NASA",         "name": "NASA",         "url": "https://x.com/NASA",
  • Network accessline 128
    "name": "NASA",         "url": "https://x.com/NASA",         "is_verified": false,
  • Network accessline 129
    "url": "https://x.com/NASA",
  • Network accessline 131
    "is_blue_verified": true,         "verified_type": "Government",         "profile_picture": "https://pbs.twimg.com/profile_images/.../photo.jpg",
  • Network accessline 132
    "verified_type": "Government",         "profile_picture": "https://pbs.twimg.com/profile_images/.../photo.jpg",         "description": "Explore the universe ...",
  • Network accessline 133
    "profile_picture": "https://pbs.twimg.com/profile_images/.../photo.jpg",

solutions/social-listening/x-tweet-by-handle/scripts/build-profile-url.py

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    h = args.handle.lstrip('@').strip()     base = f'https://x.com/{h}'
  • Network accessline 16
    base = f'https://x.com/{h}'

solutions/social-listening/x-tweet-by-handle/scripts/parse-tweets.py

  • Executable scriptline 1
    Executable file
  • Network accessline 214
    "type": "tweet",         "id": tweet_id,         "url": f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 215
    "id": tweet_id,         "url": f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,         "twitter_url": f"https://twitter.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 216
    "url": f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 217
    "twitter_url": f"https://twitter.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 245
    "user_name": screen_name,             "name": name,             "url": f"https://x.com/{screen_name}" if screen_name else None,
  • Network accessline 246
    "name": name,             "url": f"https://x.com/{screen_name}" if screen_name else None,             "is_verified": u_ver.get('verified', u_legacy.get('verified')),
  • Network accessline 247
    "url": f"https://x.com/{screen_name}" if screen_name else None,

solutions/social-listening/x-tweet-by-url/SKILL.md

  • Network accessline 35
    Otherwise: open `https://x.com` and observe the left sidebar:
  • Network accessline 92
    "type": "tweet",       "id": "2068333045510291908",       "url": "https://x.com/NASA/status/2068333045510291908",
  • Network accessline 93
    "id": "2068333045510291908",       "url": "https://x.com/NASA/status/2068333045510291908",       "twitter_url": "https://twitter.com/NASA/status/2068333045510291908",
  • Network accessline 94
    "url": "https://x.com/NASA/status/2068333045510291908",
  • Network accessline 95
    "twitter_url": "https://twitter.com/NASA/status/2068333045510291908",
  • Network accessline 117
    "urls": [],       "media": [         {"type": "photo", "url": "https://pbs.twimg.com/media/abcd.jpg", "expanded_url": "https://x.com/NASA/status/2068333045510291908/photo/1", "alt_text": null}
  • Network accessline 118
    "media": [         {"type": "photo", "url": "https://pbs.twimg.com/media/abcd.jpg", "expanded_url": "https://x.com/NASA/status/2068333045510291908/photo/1", "alt_text": null}       ],
  • Network accessline 119
    {"type": "photo", "url": "https://pbs.twimg.com/media/abcd.jpg", "expanded_url": "https://x.com/NASA/status/2068333045510291908/photo/1", "alt_text": null}
  • Network accessline 125
    "user_name": "NASA",         "name": "NASA",         "url": "https://x.com/NASA",
  • Network accessline 126
    "name": "NASA",         "url": "https://x.com/NASA",         "is_verified": false,
  • Network accessline 127
    "url": "https://x.com/NASA",
  • Network accessline 129
    "is_blue_verified": true,         "verified_type": "Government",         "profile_picture": "https://pbs.twimg.com/profile_images/.../photo.jpg",
  • Network accessline 130
    "verified_type": "Government",         "profile_picture": "https://pbs.twimg.com/profile_images/.../photo.jpg",         "description": "Explore the universe ...",
  • Network accessline 131
    "profile_picture": "https://pbs.twimg.com/profile_images/.../photo.jpg",
  • Network accessline 156
    - Only X resources whose URLs match `https://x.com/search`, `https://x.com/{handle}`, `https://x.com/{handle}/with_replies`, `https://x.com/{handle}/media`, `https://x.com/{handle}/status/{id}`, or `https://x.com/i/lists/{id}` are supported

solutions/social-listening/x-tweet-by-url/scripts/classify-url.py

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    u = args.url.strip()     u = re.sub(r'^https?://(www\.)?twitter\.com', 'https://x.com', u)
  • Network accessline 16
    u = re.sub(r'^https?://(www\.)?twitter\.com', 'https://x.com', u)
  • Network accessline 22
    m = re.match(r'https://x\.com/search\b', u)
  • Network accessline 26
    m = re.match(r'https://x\.com/i/lists/(\d+)', u)
  • Network accessline 31
    m = re.match(r'https://x\.com/([^/]+)/status/(\d+)', u)
  • Network accessline 36
    m = re.match(r'https://x\.com/([^/]+)/with_replies/?$', u)
  • Network accessline 41
    m = re.match(r'https://x\.com/([^/]+)/media/?$', u)
  • Network accessline 46
    m = re.match(r'https://x\.com/([^/]+)/?$', u)

solutions/social-listening/x-tweet-by-url/scripts/parse-tweets.py

  • Executable scriptline 1
    Executable file
  • Network accessline 214
    "type": "tweet",         "id": tweet_id,         "url": f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 215
    "id": tweet_id,         "url": f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,         "twitter_url": f"https://twitter.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 216
    "url": f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 217
    "twitter_url": f"https://twitter.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 245
    "user_name": screen_name,             "name": name,             "url": f"https://x.com/{screen_name}" if screen_name else None,
  • Network accessline 246
    "name": name,             "url": f"https://x.com/{screen_name}" if screen_name else None,             "is_verified": u_ver.get('verified', u_legacy.get('verified')),
  • Network accessline 247
    "url": f"https://x.com/{screen_name}" if screen_name else None,

solutions/social-listening/x-tweet-search-by-query/SKILL.md

  • Network accessline 35
    Otherwise: open `https://x.com` and observe the left sidebar:
  • Network accessline 100
    "type": "tweet",       "id": "2068333045510291908",       "url": "https://x.com/NASA/status/2068333045510291908",
  • Network accessline 101
    "id": "2068333045510291908",       "url": "https://x.com/NASA/status/2068333045510291908",       "twitter_url": "https://twitter.com/NASA/status/2068333045510291908",
  • Network accessline 102
    "url": "https://x.com/NASA/status/2068333045510291908",
  • Network accessline 103
    "twitter_url": "https://twitter.com/NASA/status/2068333045510291908",
  • Network accessline 127
    {           "type": "photo",           "url": "https://pbs.twimg.com/media/abcd.jpg",
  • Network accessline 128
    "type": "photo",           "url": "https://pbs.twimg.com/media/abcd.jpg",           "expanded_url": "https://x.com/NASA/status/2068333045510291908/photo/1",
  • Network accessline 129
    "url": "https://pbs.twimg.com/media/abcd.jpg",
  • Network accessline 130
    "expanded_url": "https://x.com/NASA/status/2068333045510291908/photo/1",
  • Network accessline 138
    "user_name": "NASA",         "name": "NASA",         "url": "https://x.com/NASA",
  • Network accessline 139
    "name": "NASA",         "url": "https://x.com/NASA",         "is_verified": false,
  • Network accessline 140
    "url": "https://x.com/NASA",
  • Network accessline 142
    "is_blue_verified": true,         "verified_type": "Government",         "profile_picture": "https://pbs.twimg.com/profile_images/.../photo.jpg",
  • Network accessline 143
    "verified_type": "Government",         "profile_picture": "https://pbs.twimg.com/profile_images/.../photo.jpg",         "description": "Explore the universe ...",
  • Network accessline 144
    "profile_picture": "https://pbs.twimg.com/profile_images/.../photo.jpg",

solutions/social-listening/x-tweet-search-by-query/scripts/build-search-url.py

  • Executable scriptline 1
    Executable file
  • Network accessline 80
    f_param = 'live' if args.sort == 'Latest' else 'top'     encoded_q = urllib.parse.quote(q, safe='')     url = f'https://x.com/search?q={encoded_q}&src=typed_query&f={f_param}'
  • Network accessline 81
    encoded_q = urllib.parse.quote(q, safe='')     url = f'https://x.com/search?q={encoded_q}&src=typed_query&f={f_param}'     print(url)
  • Network accessline 82
    url = f'https://x.com/search?q={encoded_q}&src=typed_query&f={f_param}'

solutions/social-listening/x-tweet-search-by-query/scripts/parse-tweets.py

  • Executable scriptline 1
    Executable file
  • Network accessline 214
    "type": "tweet",         "id": tweet_id,         "url": f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 215
    "id": tweet_id,         "url": f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,         "twitter_url": f"https://twitter.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 216
    "url": f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 217
    "twitter_url": f"https://twitter.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else None,
  • Network accessline 245
    "user_name": screen_name,             "name": name,             "url": f"https://x.com/{screen_name}" if screen_name else None,
  • Network accessline 246
    "name": name,             "url": f"https://x.com/{screen_name}" if screen_name else None,             "is_verified": u_ver.get('verified', u_legacy.get('verified')),
  • Network accessline 247
    "url": f"https://x.com/{screen_name}" if screen_name else None,

solutions/social-listening/x-tweet-search/SKILL.md

  • Network accessline 20
    - Target page is already open in the browser: `https://x.com/search?q=...` or `https://x.com/{handle}` or a direct tweet/list URL
  • Network accessline 35
    Otherwise: open `https://x.com` and observe the left sidebar:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It reads tweet data already rendered in the X DOM, never bypassing authentication. JS is encapsulated in `scripts/` files, invoked via `eval "$(python scr
  • Dangerous shell operationline 54
    Extract: `eval "$(python scripts/extract-tweets.py)"`
  • Network accessline 60
    {     "id": "2059255862548738182",          // tweet ID     "url": "https://x.com/NASA/status/2059255862548738182",  // direct link
  • Network accessline 61
    "id": "2059255862548738182",          // tweet ID     "url": "https://x.com/NASA/status/2059255862548738182",  // direct link     "text": "Full tweet text including hashtags and URLs",   // full_text field
  • Network accessline 62
    "url": "https://x.com/NASA/status/2059255862548738182",  // direct link
  • Network accessline 67
    "author_name": "NASA",                // display name     "author_screen_name": "NASA",         // @handle (without @)     "author_profile_image": "https://pbs.twimg.com/profile_images/.../photo.jpg",
  • Network accessline 68
    "author_screen_name": "NASA",         // @handle (without @)     "author_profile_image": "https://pbs.twimg.com/profile_images/.../photo.jpg",     "author_followers": 92080161,         // follower count
  • Network accessline 69
    "author_profile_image": "https://pbs.twimg.com/profile_images/.../photo.jpg",
  • Network accessline 87
    "conversation_id": "2059255862548738182",     "hashtags": ["AI", "Space"],          // without #     "urls": ["https://example.com/article"],  // expanded URLs from entities
  • Network accessline 88
    "hashtags": ["AI", "Space"],          // without #     "urls": ["https://example.com/article"],  // expanded URLs from entities     "mentions": ["SpaceX", "ESA"],        // @handles without @
  • Network accessline 89
    "urls": ["https://example.com/article"],  // expanded URLs from entities
  • Network accessline 92
    {         "type": "video",                  // "photo", "video", "animated_gif"         "url": "https://pbs.twimg.com/amplify_video_thumb/.../img/thumb.jpg",
  • Network accessline 93
    "type": "video",                  // "photo", "video", "animated_gif"         "url": "https://pbs.twimg.com/amplify_video_thumb/.../img/thumb.jpg",         "alt_text": null,
  • Network accessline 94
    "url": "https://pbs.twimg.com/amplify_video_thumb/.../img/thumb.jpg",
  • Network accessline 95
    "alt_text": null,         "video_variants": [           {"bitrate": 2176000, "url": "https://video.twimg.com/.../1280x720/video.mp4"},
  • Network accessline 96
    "video_variants": [           {"bitrate": 2176000, "url": "https://video.twimg.com/.../1280x720/video.mp4"},           {"bitrate": 832000,  "url": "https://video.twimg.com/.../640x360/video.mp4"}
  • Network accessline 97
    {"bitrate": 2176000, "url": "https://video.twimg.com/.../1280x720/video.mp4"},
  • Network accessline 98
    {"bitrate": 832000,  "url": "https://video.twimg.com/.../640x360/video.mp4"}
  • Network accessline 101
    ],     "source_name": "Twitter for iPhone",  // client used to post     "source_url": "http://twitter.com/download/iphone"
  • Network accessline 102
    "source_name": "Twitter for iPhone",  // client used to post     "source_url": "http://twitter.com/download/iphone"   }
  • Network accessline 103
    "source_url": "http://twitter.com/download/iphone"
  • Network accessline 112
    **searchTerms** (keyword / advanced query): - Sort Latest: `https://x.com/search?q={url_encoded_query}&src=typed_query&f=live`
  • Network accessline 113
    - Sort Latest: `https://x.com/search?q={url_encoded_query}&src=typed_query&f=live`
  • Network accessline 114
    - Sort Top: `https://x.com/search?q={url_encoded_query}&src=typed_query`
  • Network accessline 117
    **twitterHandles** (scrape a user's profile tweets): - Option A (profile page): `https://x.com/{handle}` — shows all tweets/retweets
  • Network accessline 118
    - Option A (profile page): `https://x.com/{handle}` — shows all tweets/retweets
  • Network accessline 121
    **startUrls** (direct URLs): navigate to the URL as-is. Supported types: - Tweet URL: `https://x.com/{user}/status/{id}` — single tweet conversation
  • Network accessline 122
    - Tweet URL: `https://x.com/{user}/status/{id}` — single tweet conversation
  • Network accessline 123
    - Profile URL: `https://x.com/{handle}` — profile timeline
  • Network accessline 124
    - Search URL: `https://x.com/search?q=...` — use directly
  • Network accessline 125
    - List URL: `https://x.com/i/lists/{list_id}` — list timeline
  • Network accessline 153
    query = "from:NASA lang:en since:2024-01-01 min_faves:100 -filter:retweets" url = "https://x.com/search?q=" + encodeURIComponent(query) + "&src=typed_query&f=live"
  • Network accessline 154
    url = "https://x.com/search?q=" + encodeURIComponent(query) + "&src=typed_query&f=live"

solutions/social-listening/x-tweet-search/scripts/extract-tweets.py

  • Executable scriptline 1
    Executable file
  • Network accessline 54
    tweets.push({                 id: t.id_str,                 url: 'https://x.com/' + (u.screen_name || '') + '/status/' + t.id_str,
  • Network accessline 55
    id: t.id_str,                 url: 'https://x.com/' + (u.screen_name || '') + '/status/' + t.id_str,                 text: t.full_text || t.text || '',
  • Network accessline 56
    url: 'https://x.com/' + (u.screen_name || '') + '/status/' + t.id_str,

solutions/social-listening/xiaohongshu-auto-posting/SKILL.md

  • Network accessline 200
    browser-act --session $SESSION browser open <browser_id> https://creator.xiaohongshu.com/new/home
  • Network accessline 207
    browser-act --session $SESSION browser open <browser_id> https://creator.xiaohongshu.com/new/home --headed

solutions/social-listening/xiaohongshu-note-detail/SKILL.md

  • Network accessline 20
    [Credential-related source omitted]
  • Network accessline 35
    Otherwise: open `https://www.xiaohongshu.com` and observe the left sidebar:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 51
    [Credential-related source omitted]
  • Dangerous shell operationline 53
    3. `eval "$(python scripts/extract-note-detail.py {note_id})"`
  • Network accessline 68
    "userId": "5bac4e3f7a4c7300016a6b88",   "nickname": "half-goose",   "avatar": "https://sns-avatar-...",
  • Network accessline 69
    "nickname": "half-goose",   "avatar": "https://sns-avatar-...",   "likedCount": "5149",
  • Network accessline 70
    "avatar": "https://sns-avatar-...",
  • Dangerous shell operationline 86
    `eval "$(python scripts/extract-note-comments.py {note_id})"`
  • Network accessline 104
    "userId": "5c3a6f020000000007010b9f",       "nickname": "travel-enthusiast-xw",       "avatar": "https://sns-avatar-..."
  • Network accessline 105
    "nickname": "travel-enthusiast-xw",       "avatar": "https://sns-avatar-..."     }
  • Network accessline 106
    "avatar": "https://sns-avatar-..."
  • Network accessline 118
    [Credential-related source omitted]
  • Dangerous shell operationline 120
    3. `eval "$(python scripts/extract-note-detail.py {note_id})"`
  • Dangerous shell operationline 121
    4. `eval "$(python scripts/extract-note-comments.py {note_id})"`
  • Dangerous shell operationline 131
    3. `eval "$(python scripts/extract-note-comments.py {note_id})"`

solutions/social-listening/xiaohongshu-note-detail/scripts/extract-note-comments.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/xiaohongshu-note-detail/scripts/extract-note-detail.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/xiaohongshu-search-full/SKILL.md

  • Network accessline 20
    - Browser opened to `https://www.xiaohongshu.com/search_result/?keyword={keyword}`
  • Network accessline 51
    Otherwise: open `https://www.xiaohongshu.com` and observe the left sidebar:
  • Network accessline 67
    1. `navigate https://www.xiaohongshu.com/search_result/?keyword={keyword}`
  • Network accessline 83
    [Credential-related source omitted]
  • Network accessline 84
    [Credential-related source omitted]
  • Network accessline 85
    [Credential-related source omitted]
  • Network accessline 87
    "title": "note title text here",       "publish_date": "06-29",                   // human-readable date string (not exact timestamp)       "cover_url": "http://sns-webpic-qc.xhscdn.com/...",
  • Network accessline 88
    "publish_date": "06-29",                   // human-readable date string (not exact timestamp)       "cover_url": "http://sns-webpic-qc.xhscdn.com/...",       "liked_count": "3",
  • Network accessline 89
    "cover_url": "http://sns-webpic-qc.xhscdn.com/...",
  • Network accessline 94
    "author_nickname": "author nickname here",       "author_id": "670caaaa000000001d0239d1",       "author_avatar": "https://sns-avatar-qc.xhscdn.com/..."
  • Network accessline 95
    "author_id": "670caaaa000000001d0239d1",       "author_avatar": "https://sns-avatar-qc.xhscdn.com/..."     }
  • Network accessline 96
    "author_avatar": "https://sns-avatar-qc.xhscdn.com/..."
  • Network accessline 129
    [Credential-related source omitted]
  • Network accessline 130
    [Credential-related source omitted]
  • Network accessline 131
    [Credential-related source omitted]
  • Network accessline 152
    1. `navigate https://www.xiaohongshu.com/search_result/?keyword={keyword}`
  • Network accessline 168
    [Credential-related source omitted]
  • Network accessline 185
    "userId": "59e9658411be10340721cd79",   "nickname": "author nickname here",   "avatar": "https://sns-avatar-qc.xhscdn.com/avatar/...",
  • Network accessline 186
    "nickname": "author nickname here",   "avatar": "https://sns-avatar-qc.xhscdn.com/avatar/...",   "likedCount": "0",
  • Network accessline 187
    "avatar": "https://sns-avatar-qc.xhscdn.com/avatar/...",
  • Network accessline 194
    ],   "imageList": [     {"url": "http://sns-webpic-qc.xhscdn.com/...", "width": 720, "height": 960}
  • Network accessline 195
    "imageList": [     {"url": "http://sns-webpic-qc.xhscdn.com/...", "width": 720, "height": 960}   ],
  • Network accessline 196
    {"url": "http://sns-webpic-qc.xhscdn.com/...", "width": 720, "height": 960}
  • Network accessline 197
    ],   "videoUrl": "http://sns-video-v6.xhscdn.com/stream/1/110/259/..."   // null for image-text notes }
  • Network accessline 198
    "videoUrl": "http://sns-video-v6.xhscdn.com/stream/1/110/259/..."   // null for image-text notes
  • Network accessline 225
    [Credential-related source omitted]
  • Network accessline 226
    [Credential-related source omitted]
  • Network accessline 227
    [Credential-related source omitted]

solutions/social-listening/xiaohongshu-search-full/scripts/extract-note-detail.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/xiaohongshu-search-full/scripts/extract-search-feeds.py

  • Executable scriptline 1
    Executable file
  • Network accessline 74
    [Credential-related source omitted]
  • Network accessline 75
    [Credential-related source omitted]
  • Network accessline 76
    [Credential-related source omitted]

solutions/social-listening/xiaohongshu-search/SKILL.md

  • Network accessline 20
    - Browser opened to `https://www.xiaohongshu.com/search_result/?keyword={keyword}`
  • Network accessline 35
    Otherwise: open `https://www.xiaohongshu.com` and observe the left sidebar:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 51
    1. `navigate https://www.xiaohongshu.com/search_result/?keyword={keyword}`
  • Dangerous shell operationline 54
    4. `eval "$(python scripts/extract-search.py --limit {limit})"`
  • Network accessline 75
    "collectedCount": "4170",   // collects/saves       "commentCount": "390",      // comments       "coverUrl": "https://sns-..."
  • Network accessline 76
    "commentCount": "390",      // comments       "coverUrl": "https://sns-..."     }
  • Network accessline 77
    "coverUrl": "https://sns-..."
  • Dangerous shell operationline 111
    7. Then run: `eval "$(python scripts/extract-search.py --limit {limit})"`
  • Dangerous shell operationline 123
    **DOM Pagination**: `scroll down --amount 3000` → `wait stable` → re-run `eval "$(python scripts/extract-search.py --limit {limit})"`. Each scroll loads ~20 more results into `feeds`. Termination: `hasMore: false` in extraction output.

solutions/social-listening/xiaohongshu-search/scripts/extract-search.py

  • Executable scriptline 1
    Executable file
  • Network accessline 19
    const s = window.__INITIAL_STATE__?.search;     const items = feeds.slice(0, {args.limit}).map(item => {{       const nc = unwrap(item?.noteCard);
  • Network accessline 20
    const items = feeds.slice(0, {args.limit}).map(item => {{       const nc = unwrap(item?.noteCard);       const user = unwrap(nc?.user);
  • Network accessline 21
    const nc = unwrap(item?.noteCard);

solutions/social-listening/xiaohongshu-user-profile/SKILL.md

  • Network accessline 20
    - Browser opened to `https://www.xiaohongshu.com/user/profile/{user_id}`
  • Network accessline 35
    Otherwise: open `https://www.xiaohongshu.com` and observe the left sidebar:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on
  • Network accessline 51
    1. `navigate https://www.xiaohongshu.com/user/profile/{user_id}`
  • Dangerous shell operationline 53
    3. `eval "$(python scripts/extract-user-profile.py {user_id})"`
  • Network accessline 64
    "gender": 1,                   // 0=unknown, 1=male, 2=female   "ipLocation": "Shanghai",   "avatar": "https://sns-avatar-...",
  • Network accessline 65
    "ipLocation": "Shanghai",   "avatar": "https://sns-avatar-...",   "follows": "361",
  • Network accessline 66
    "avatar": "https://sns-avatar-...",
  • Dangerous shell operationline 80
    `eval "$(python scripts/extract-user-notes.py --limit {limit})"`
  • Network accessline 96
    "collectedCount": "4170",       "commentCount": "390",       "coverUrl": "https://sns-..."
  • Network accessline 97
    "commentCount": "390",       "coverUrl": "https://sns-..."     }
  • Network accessline 98
    "coverUrl": "https://sns-..."
  • Network accessline 110
    1. `navigate https://www.xiaohongshu.com/user/profile/{user_id}`
  • Dangerous shell operationline 112
    3. `eval "$(python scripts/extract-user-profile.py {user_id})"`
  • Dangerous shell operationline 113
    4. `eval "$(python scripts/extract-user-notes.py --limit {limit})"`
  • Dangerous shell operationline 123
    3. `eval "$(python scripts/extract-user-notes.py --limit {limit})"`

solutions/social-listening/xiaohongshu-user-profile/scripts/extract-user-notes.py

  • Executable scriptline 1
    Executable file
  • Network accessline 26
    .slice(0, {args.limit})       .map(n => {{         const nc = unwrap(n?.noteCard);
  • Network accessline 27
    .map(n => {{         const nc = unwrap(n?.noteCard);         const cover = unwrap(nc?.cover);
  • Network accessline 28
    const nc = unwrap(n?.noteCard);

solutions/social-listening/xiaohongshu-user-profile/scripts/extract-user-profile.py

  • Executable scriptline 1
    Executable file

solutions/social-listening/zhihu-search-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you have not configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) first to get your Key."

solutions/social-listening/zhihu-search-api-skill/scripts/zhihu_search_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "85791338888470667" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 29
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 30
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 31
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 46
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 47
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 48
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 70
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 71
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 88
    [Credential-related source omitted]
  • Access to secretsline 94
    [Credential-related source omitted]
  • Network accessline 95
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 96
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 97
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 106
    [Credential-related source omitted]

solutions/video-platforms/douyin-video-search/SKILL.md

  • Network accessline 35
    Otherwise: navigate to `https://www.douyin.com` and check the top-right corner:
  • Dangerous shell operationline 43
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already visible to the logged-in user, never bypassing authentication or access controls. JS code is in `scripts/` and invoked via `eva
  • Network accessline 52
    navigate https://www.douyin.com/search/{keyword}?type=video
  • Dangerous shell operationline 61
    eval "$(python scripts/search-videos.py '{keyword}' --offset {offset} --count 20 --sort-type {sort_type} --publish-time {publish_time} --search-id '{search_id}')"
  • Network accessline 78
    "title": "深度还原7姐妹创业 #ai #搞笑视频 #热门",       "author_name": "楠楠AI小剧场",       "author_profile_url": "https://www.douyin.com/user/MS4wLjABAAAAY4eph...",
  • Network accessline 79
    "author_name": "楠楠AI小剧场",       "author_profile_url": "https://www.douyin.com/user/MS4wLjABAAAAY4eph...",       "video_url": "https://www.douyin.com/video/7656392146064639419",
  • Network accessline 80
    "author_profile_url": "https://www.douyin.com/user/MS4wLjABAAAAY4eph...",
  • Network accessline 81
    "video_url": "https://www.douyin.com/video/7656392146064639419",
  • Network accessline 82
    "cover_url": "https://p3-pc-sign.douyinpic.com/image-cut-tos-priv/...",
  • Network accessline 83
    "description": "深度还原7姐妹创业 #ai #搞笑视频 #热门 #逆天 #宝妈创业",       "hashtags": ["#ai", "#搞笑视频", "#热门", "#逆天", "#宝妈创业"],       "download_url": "https://www.douyin.com/aweme/v1/play/?video_id=v2700f...",
  • Network accessline 84
    "hashtags": ["#ai", "#搞笑视频", "#热门", "#逆天", "#宝妈创业"],       "download_url": "https://www.douyin.com/aweme/v1/play/?video_id=v2700f...",       "digg_count": 188184,
  • Network accessline 85
    "download_url": "https://www.douyin.com/aweme/v1/play/?video_id=v2700f...",
  • Network accessline 98
    **Error handling:** - `status_code: 2483` → session cookie is invalid or expired; re-verify login and retry navigation step before calling again - `error: true` in output → check `message` field; most common cause is session expiry, retry a
  • Network accessline 99
    - `status_code: 2483` → session cookie is invalid or expired; re-verify login and retry navigation step before calling again - `error: true` in output → check `message` field; most common cause is session expiry, retry after navigating to `
  • Network accessline 100
    - `error: true` in output → check `message` field; most common cause is session expiry, retry after navigating to `https://www.douyin.com` once

solutions/video-platforms/douyin-video-search/scripts/search-videos.py

  • Executable scriptline 1
    Executable file
  • Network accessline 36
    let url = 'https://www.douyin.com/aweme/v1/web/search/item/'
  • Network accessline 58
    const resp = await fetch(url, {{ credentials: 'include' }});
  • Network accessline 85
    author_name:       author.nickname || null,           author_profile_url: author.sec_uid             ? 'https://www.douyin.com/user/' + author.sec_uid
  • Network accessline 86
    author_profile_url: author.sec_uid             ? 'https://www.douyin.com/user/' + author.sec_uid             : null,
  • Network accessline 87
    ? 'https://www.douyin.com/user/' + author.sec_uid
  • Network accessline 88
    : null,           video_url:         info.aweme_id             ? 'https://www.douyin.com/video/' + info.aweme_id
  • Network accessline 89
    video_url:         info.aweme_id             ? 'https://www.douyin.com/video/' + info.aweme_id             : null,
  • Network accessline 90
    ? 'https://www.douyin.com/video/' + info.aweme_id

solutions/video-platforms/tiktok-hashtag-videos/SKILL.md

  • Network accessline 20
    - Browser is open and can access `https://www.tiktok.com`
  • Dangerous shell operationline 34
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Dangerous shell operationline 40
    `eval "$(python scripts/get-challenge-id.py '{hashtag}')"`
  • Network accessline 59
    1. `navigate https://www.tiktok.com/tag/{hashtag}` 2. `wait stable` 3. `network requests --type xhr,fetch --filter "challenge/item_list"`
  • Network accessline 85
    "signature": "Former NFL Athlete 🏈",         "bioLink": null,         "avatarThumb": "https://...",
  • Network accessline 86
    "bioLink": null,         "avatarThumb": "https://...",         "privateAccount": false
  • Network accessline 87
    "avatarThumb": "https://...",
  • Network accessline 106
    "height": 1280,         "width": 720,         "cover": "https://...",
  • Network accessline 107
    "width": 720,         "cover": "https://...",         "definition": "720p",
  • Network accessline 108
    "cover": "https://...",
  • Network accessline 115
    "authorName": "Iqbal12",         "original": false,         "coverMedium": "https://..."
  • Network accessline 116
    "original": false,         "coverMedium": "https://..."       },
  • Network accessline 117
    "coverMedium": "https://..."
  • Dangerous shell operationline 141
    1. `eval "$(python scripts/get-challenge-id.py '{hashtag}')"` → record `id` as challengeId (confirms hashtag exists)
  • Network accessline 141
    1. `eval "$(python scripts/get-challenge-id.py '{hashtag}')"` → record `id` as challengeId (confirms hashtag exists) 2. `navigate https://www.tiktok.com/tag/{hashtag}` → `wait stable` 3. `network requests --filter "challenge/item_list"` → `
  • Network accessline 142
    2. `navigate https://www.tiktok.com/tag/{hashtag}` → `wait stable` 3. `network requests --filter "challenge/item_list"` → `network request <id>` → collect `itemList`, note `cursor` and `hasMore` 4. While `hasMore` is `true`:

solutions/video-platforms/tiktok-hashtag-videos/scripts/get-challenge-id.py

  • Executable scriptline 1
    Executable file
  • Network accessline 11
    js = f"""(async () => {{   try {{     const r = await fetch('/api/challenge/detail/?challengeName={args.hashtag}&aid=1988&app_language=en&app_name=tiktok_web&device_platform=web_pc', {{credentials: 'include'}});
  • Network accessline 12
    try {{     const r = await fetch('/api/challenge/detail/?challengeName={args.hashtag}&aid=1988&app_language=en&app_name=tiktok_web&device_platform=web_pc', {{credentials: 'include'}});     const d = await r.json();
  • Network accessline 13
    const r = await fetch('/api/challenge/detail/?challengeName={args.hashtag}&aid=1988&app_language=en&app_name=tiktok_web&device_platform=web_pc', {{credentials: 'include'}});

solutions/video-platforms/tiktok-profile-videos/SKILL.md

  • Network accessline 20
    - Browser is open and can access `https://www.tiktok.com`
  • Dangerous shell operationline 34
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Network accessline 40
    1. `navigate https://www.tiktok.com/@{username}` 2. `wait stable` 3. `network requests --type xhr,fetch --filter "post/item_list"`
  • Network accessline 70
    "signature": "Former NFL Athlete 🏈\n📧marcusriosofficial@gmail.com",         "bioLink": null,         "avatarThumb": "https://...",
  • Network accessline 71
    "bioLink": null,         "avatarThumb": "https://...",         "privateAccount": false
  • Network accessline 72
    "avatarThumb": "https://...",
  • Network accessline 97
    "height": 1280,         "width": 720,         "cover": "https://...",
  • Network accessline 98
    "width": 720,         "cover": "https://...",         "definition": "720p",
  • Network accessline 99
    "cover": "https://...",
  • Network accessline 106
    "authorName": "Iqbal12",         "original": false,         "coverMedium": "https://..."
  • Network accessline 107
    "original": false,         "coverMedium": "https://..."       },
  • Network accessline 108
    "coverMedium": "https://..."
  • Network accessline 118
    To build the `webVideoUrl` for each item: `https://www.tiktok.com/@{item.author.uniqueId}/video/{item.id}`

solutions/video-platforms/tiktok-search-videos/SKILL.md

  • Network accessline 20
    - Browser is open and can access `https://www.tiktok.com`
  • Dangerous shell operationline 33
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Network accessline 39
    1. `navigate https://www.tiktok.com/search/video?q={keyword}` 2. `wait stable` 3. `network requests --type xhr,fetch --filter "search/item/full"`
  • Network accessline 64
    "verified": false,         "signature": "Former NFL Athlete 🏈",         "avatarThumb": "https://...",
  • Network accessline 65
    "signature": "Former NFL Athlete 🏈",         "avatarThumb": "https://...",         "privateAccount": false
  • Network accessline 66
    "avatarThumb": "https://...",
  • Network accessline 85
    "height": 1280,         "width": 720,         "cover": "https://...",
  • Network accessline 86
    "width": 720,         "cover": "https://...",         "definition": "720p",
  • Network accessline 87
    "cover": "https://...",
  • Network accessline 94
    "authorName": "Iqbal12",         "original": false,         "coverMedium": "https://..."
  • Network accessline 95
    "original": false,         "coverMedium": "https://..."       },
  • Network accessline 96
    "coverMedium": "https://..."
  • Network accessline 105
    To build the `webVideoUrl` for each item: `https://www.tiktok.com/@{item.author.uniqueId}/video/{item.id}`

solutions/video-platforms/tiktok-video-detail/SKILL.md

  • Network accessline 20
    - Browser is open and can access `https://www.tiktok.com`
  • Dangerous shell operationline 34
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Network accessline 40
    1. `navigate {video_url}` — e.g., `https://www.tiktok.com/@marcusriosofficial/video/7212410220977392938`
  • Dangerous shell operationline 42
    3. `eval "$(python scripts/extract-video-detail.py)"`
  • Network accessline 55
    "isSlideshow": false,   // true for photo/slideshow posts   "locationCreated": "US",   "webVideoUrl": "https://www.tiktok.com/@marcusriosofficial/video/7212410220977392938",
  • Network accessline 56
    "locationCreated": "US",   "webVideoUrl": "https://www.tiktok.com/@marcusriosofficial/video/7212410220977392938",   "mediaUrls": [],
  • Network accessline 57
    "webVideoUrl": "https://www.tiktok.com/@marcusriosofficial/video/7212410220977392938",
  • Network accessline 61
    "name": "marcusriosofficial",       // uniqueId / username     "nickName": "Marcus Rios",     "profileUrl": "https://www.tiktok.com/@marcusriosofficial",
  • Network accessline 62
    "nickName": "Marcus Rios",     "profileUrl": "https://www.tiktok.com/@marcusriosofficial",     "verified": false,
  • Network accessline 63
    "profileUrl": "https://www.tiktok.com/@marcusriosofficial",
  • Network accessline 65
    "signature": "Former NFL Athlete 🏈\n📧marcusriosofficial@gmail.com",     "bioLink": null,     "avatar": "https://...",
  • Network accessline 66
    "bioLink": null,     "avatar": "https://...",     "privateAccount": false,
  • Network accessline 67
    "avatar": "https://...",
  • Network accessline 78
    "musicAuthor": "Iqbal12",     "musicOriginal": false,     "coverMediumUrl": "https://..."
  • Network accessline 79
    "musicOriginal": false,     "coverMediumUrl": "https://..."   },
  • Network accessline 80
    "coverMediumUrl": "https://..."
  • Network accessline 84
    "width": 720,     "duration": 48,     "coverUrl": "https://...",
  • Network accessline 85
    "duration": 48,     "coverUrl": "https://...",     "definition": "720p",
  • Network accessline 86
    "coverUrl": "https://...",

solutions/video-platforms/tiktok-video-detail/scripts/extract-video-detail.py

  • Executable scriptline 1
    Executable file
  • Network accessline 33
    isSlideshow: !!(item.imagePost && item.imagePost.images && item.imagePost.images.length),       locationCreated: item.locationCreated || null,       webVideoUrl: 'https://www.tiktok.com/@' + author.uniqueId + '/video/' + item.id,
  • Network accessline 34
    locationCreated: item.locationCreated || null,       webVideoUrl: 'https://www.tiktok.com/@' + author.uniqueId + '/video/' + item.id,       mediaUrls: [],
  • Network accessline 35
    webVideoUrl: 'https://www.tiktok.com/@' + author.uniqueId + '/video/' + item.id,
  • Network accessline 39
    name: author.uniqueId,         nickName: author.nickname,         profileUrl: 'https://www.tiktok.com/@' + author.uniqueId,
  • Network accessline 40
    nickName: author.nickname,         profileUrl: 'https://www.tiktok.com/@' + author.uniqueId,         verified: author.verified || false,
  • Network accessline 41
    profileUrl: 'https://www.tiktok.com/@' + author.uniqueId,

solutions/video-platforms/youtube-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you have not configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) first to get your Key."

solutions/video-platforms/youtube-api-skill/scripts/youtube_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "82305188582464621" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 28
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 29
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 30
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 45
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 46
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 47
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 69
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 70
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]
  • Network accessline 94
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 95
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 96
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 104
    [Credential-related source omitted]

solutions/video-platforms/youtube-batch-transcript-extractor-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you have not yet configured the BrowserAct API Key, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key first."

solutions/video-platforms/youtube-batch-transcript-extractor-api-skill/scripts/youtube_batch_transcript_extractor_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "87198942474882969" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Network accessline 32
    print(f"Starting YouTube Batch Transcript Extractor task for keywords: {keywords}", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 33
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 34
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 53
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 54
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 55
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 79
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 80
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 94
    [Credential-related source omitted]
  • Access to secretsline 100
    [Credential-related source omitted]
  • Network accessline 101
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 102
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 103
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 105
    [Credential-related source omitted]
  • Access to secretsline 112
    [Credential-related source omitted]

solutions/video-platforms/youtube-channel-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you have not configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."

solutions/video-platforms/youtube-channel-api-skill/scripts/youtube_channel_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "82306405322792301" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 28
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 29
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 30
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 45
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 46
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 47
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 69
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 70
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]
  • Network accessline 94
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 95
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 96
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 104
    [Credential-related source omitted]

solutions/video-platforms/youtube-comments-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you have not configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) first to get your Key."

solutions/video-platforms/youtube-comments-api-skill/scripts/youtube_comments_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "82165874666051949" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 29
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 30
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 31
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 46
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 47
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 48
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 70
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 71
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 88
    [Credential-related source omitted]
  • Access to secretsline 94
    [Credential-related source omitted]
  • Network accessline 95
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 96
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 97
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 106
    [Credential-related source omitted]

solutions/video-platforms/youtube-influencer-finder-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."

solutions/video-platforms/youtube-influencer-finder-api-skill/scripts/youtube_influencer_finder_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "85430137964765321" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 28
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 29
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 30
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 45
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 46
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 47
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 69
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 70
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]
  • Network accessline 94
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 95
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 96
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 104
    [Credential-related source omitted]

solutions/video-platforms/youtube-search-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you have not configured the BrowserAct API Key, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) first to get your Key."

solutions/video-platforms/youtube-search-api-skill/scripts/youtube_search_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "82165150735472749" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 29
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 30
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 31
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 46
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 47
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 48
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 70
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 71
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 88
    [Credential-related source omitted]
  • Access to secretsline 94
    [Credential-related source omitted]
  • Network accessline 95
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 96
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 97
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 106
    [Credential-related source omitted]

solutions/video-platforms/youtube-transcript-analysis-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 24
    [Credential-related source omitted]
  • Access to secretsline 24
    [Credential-related source omitted]
  • Network accessline 26
    > "Since you haven't configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key."
  • Network accessline 35
    - **Type**: `string`    - **Description**: The URL of the YouTube video to extract and analyze.    - **Example**: `https://www.youtube.com/watch?v=st534T7-mdE`
  • Network accessline 36
    - **Description**: The URL of the YouTube video to extract and analyze.    - **Example**: `https://www.youtube.com/watch?v=st534T7-mdE`    - **Required**: Yes
  • Network accessline 37
    - **Example**: `https://www.youtube.com/watch?v=st534T7-mdE`
  • Network accessline 224
    - If the output **contains** `"concurrent"` or `"too many running tasks"` or similar concurrency limit messages, it means the concurrent task limit for the current subscription plan has been reached. **Do not retry**; guide the user to upgr
  • Network accessline 225
    **Agent must inform the user**:      > "The current task cannot be executed because your BrowserAct account has reached the limit of concurrent tasks. Please go to the [BrowserAct Plan Upgrade Page](https://www.browseract.com/reception/rech
  • Network accessline 226
    > "The current task cannot be executed because your BrowserAct account has reached the limit of concurrent tasks. Please go to the [BrowserAct Plan Upgrade Page](https://www.browseract.com/reception/recharge) to upgrade your subscription pl

solutions/video-platforms/youtube-transcript-analysis-api-skill/scripts/youtube_transcript_analysis_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    SINGLE_TEMPLATE_ID = "87197468034420377" BATCH_TEMPLATE_ID = "87198942474882969" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 16
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 24
    [Credential-related source omitted]
  • Network accessline 33
    print(f"[Single Mode] Starting transcript extraction for: {target_url}", flush=True)     try:         res = requests.post(
  • Network accessline 34
    try:         res = requests.post(             f"{API_BASE_URL}/run-task-by-template",
  • Network accessline 35
    res = requests.post(
  • Network accessline 46
    print("Error: Invalid authorization. Please check your BrowserAct API Key.", flush=True)         elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. P
  • Network accessline 47
    elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)         el
  • Network accessline 48
    print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)
  • Network accessline 60
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(
  • Network accessline 61
    try:             status_res = requests.get(                 f"{API_BASE_URL}/get-task-status?task_id={task_id}",
  • Network accessline 62
    status_res = requests.get(
  • Network accessline 89
    try:         task_info = requests.get(
  • Network accessline 90
    task_info = requests.get(
  • Access to secretsline 107
    [Credential-related source omitted]
  • Access to secretsline 112
    [Credential-related source omitted]
  • Network accessline 123
    print(f"[Batch Mode] Searching for '{keywords}' | Upload date: {upload_date} | Limit: {limit}", flush=True)     try:         res = requests.post(
  • Network accessline 124
    try:         res = requests.post(             f"{API_BASE_URL}/run-task-by-template",
  • Network accessline 125
    res = requests.post(
  • Network accessline 136
    print("Error: Invalid authorization. Please check your BrowserAct API Key.", flush=True)         elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. P
  • Network accessline 137
    elif "concurrent" in res_str.lower() or "too many running tasks" in res_str.lower():             print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)         el
  • Network accessline 138
    print("Error: Concurrent task limit reached. Please upgrade your plan at https://www.browseract.com/reception/recharge", flush=True)
  • Network accessline 150
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(
  • Network accessline 151
    try:             status_res = requests.get(                 f"{API_BASE_URL}/get-task-status?task_id={task_id}",
  • Network accessline 152
    status_res = requests.get(
  • Network accessline 179
    try:         task_info = requests.get(
  • Network accessline 180
    task_info = requests.get(
  • Access to secretsline 204
    [Credential-related source omitted]
  • Access to secretsline 205
    [Credential-related source omitted]
  • Network accessline 206
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 207
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 208
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 210
    [Credential-related source omitted]
  • Access to secretsline 217
    [Credential-related source omitted]
  • Access to secretsline 231
    [Credential-related source omitted]

solutions/video-platforms/youtube-transcript-extractor-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you haven't configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) to get your Key first."
  • Network accessline 28
    - **Type**: `string`    - **Description**: The URL of the YouTube video you want to extract the transcript and metadata from.    - **Example**: `https://www.youtube.com/watch?v=st534T7-mdE`
  • Network accessline 30
    - **Example**: `https://www.youtube.com/watch?v=st534T7-mdE`

solutions/video-platforms/youtube-transcript-extractor-api-skill/scripts/youtube_transcript_extractor_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "87197468034420377" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Network accessline 30
    print(f"Starting YouTube Transcript Extractor task for URL: {target_url}", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 31
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 32
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 51
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 52
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 53
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 77
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 78
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 92
    [Credential-related source omitted]
  • Access to secretsline 98
    [Credential-related source omitted]
  • Network accessline 99
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 100
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 101
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 103
    [Credential-related source omitted]
  • Access to secretsline 108
    [Credential-related source omitted]

solutions/video-platforms/youtube-transcript/SKILL.md

  • Network accessline 20
    - Target YouTube video page is already open in the browser: `https://www.youtube.com/watch?v={VIDEO_ID}`
  • Dangerous shell operationline 32
    > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files u
  • Dangerous shell operationline 36
    `eval "$(python scripts/get-languages.py)"`
  • Dangerous shell operationline 55
    `eval "$(python scripts/open-transcript-panel.py)"`
  • Dangerous shell operationline 68
    `eval "$(python scripts/extract-transcript-segments.py)"`
  • Network accessline 87
    1. `navigate https://www.youtube.com/watch?v={VIDEO_ID}` → `wait stable`
  • Dangerous shell operationline 88
    2. `eval "$(python scripts/get-languages.py)"` — confirm transcripts are available; note the language list
  • Dangerous shell operationline 89
    3. `eval "$(python scripts/open-transcript-panel.py)"` — open the panel
  • Dangerous shell operationline 91
    5. `eval "$(python scripts/extract-transcript-segments.py)"` — extract all segments

solutions/video-platforms/youtube-transcript/scripts/extract-transcript-segments.py

  • Executable scriptline 1
    Executable file

solutions/video-platforms/youtube-transcript/scripts/get-languages.py

  • Executable scriptline 1
    Executable file

solutions/video-platforms/youtube-transcript/scripts/open-transcript-panel.py

  • Executable scriptline 1
    Executable file

solutions/video-platforms/youtube-video-api-skill/SKILL.md

  • Access to secretsline 4
    [Credential-related source omitted]
  • Network accessline 20
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Network accessline 22
    > "Since you have not configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations) first to get your Key."
  • Network accessline 28
    - **Type**: `string`    - **Description**: Target YouTube channel URL used to load the channel video list.    - **Example**: `https://www.youtube.com/@BrowserAct`
  • Network accessline 30
    - **Example**: `https://www.youtube.com/@BrowserAct`

solutions/video-platforms/youtube-video-api-skill/scripts/youtube_video_api.py

  • Executable scriptline 1
    Executable file
  • Network accessline 14
    TEMPLATE_ID = "82163578680973165" API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Network accessline 15
    API_BASE_URL = "https://api.browseract.com/v2/workflow"
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 18
    [Credential-related source omitted]
  • Network accessline 28
    print(f"Start Task", flush=True)     try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 29
    try:         res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()     except Exception as e:
  • Network accessline 30
    res = requests.post(f"{API_BASE_URL}/run-task-by-template", json=payload, headers=headers, timeout=30).json()
  • Network accessline 45
    while time.time() - poll_start < max_poll_time:         try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 46
    try:             status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()             status = status_res.get("status")
  • Network accessline 47
    status_res = requests.get(f"{API_BASE_URL}/get-task-status?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 69
    try:         task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Network accessline 70
    task_info = requests.get(f"{API_BASE_URL}/get-task?task_id={task_id}", headers=headers, timeout=30).json()
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]
  • Network accessline 94
    print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True)         print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Network accessline 95
    print("Please follow these steps:", flush=True)         print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)         print("2. Copy your API Key.", flush=True)
  • Network accessline 96
    print("1. Go to: https://www.browseract.com/reception/integrations", flush=True)
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 104
    [Credential-related source omitted]

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 500 facts

and 450 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md browser-act/SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md browser-act/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md browser-act/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md browser-act/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md browser-act/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md browser-act/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Explore alternatives and comparisons

Add this badge to your README

It updates every night and links to this page.

browser-act/skills: #233 on hotskills, 6.3k stars

[![browser-act/skills on hotskills](https://hotskills.dev/badge/browser-act-skills.svg)](https://hotskills.dev/skill/browser-act-skills/)