360 Secure SkillHub
360 安全技能中心

Ghost Closer Web Scraper

根据业务名称与地点,用 Playwright 连接已开启远程调试端口的 Chrome,抓取 Google Maps、Facebook、Instagram 上的本地商家信息,输出含评分、评论数、地址、电话、网站、营业时间、服务与图片链接的结构化 JSON,供线索生成与竞品分析使用;程序只输出 JSON 到标准输出,照片仅返回链接不下载。

dreamsarts
dreamsarts
热度 33.68
最近更新 2026-05-11 17:41:40
分类:数据依赖:联网浏览搜索 / 代码执行 / 读写文件应用场景:数据处理 / 自动化脚本 / 市场分析 / 研究

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add ghost-closer-web-scraper
Metadata
name
ghost-closer-web-scraper
description
Scrape complete business intelligence from Google Maps, Facebook, and Instagram for any local business. Returns structured JSON with ratings, contact info, services, and media.
version
1.0.0
tags
["scraping","business-intelligence","local-business","lead-generation"]

Ghost Closer Web Scraper

Purpose

Automates the research phase of the Ghost Closer workflow. Given a business name and location, this skill scrapes Google Maps, Facebook, and Instagram to build a complete business intelligence profile in structured JSON.

Requirements

  • Python 3.10+
  • Playwright (pip install playwright)
  • Chrome running with remote debugging on port 9222
  • .env file at /Users/edwin/.openclaw/workspace/dreams-arts/.env

Usage

From Command Line

python scraper.py "Business Name" "City, State"

From Python

from scraper import GhostCloserScraper

scraper = GhostCloserScraper()
result = await scraper.run("La Taza Coffee", "Caguas, PR")
print(result)

Output Format

{
  "business_name": "La Taza Coffee",
  "location_query": "Caguas, PR",
  "google_maps": {
    "name": "La Taza Coffee Shop",
    "rating": 4.7,
    "review_count": 312,
    "address": "123 Calle Comercio, Caguas, PR 00725",
    "phone": "+1-787-555-1234",
    "website": "https://latazacoffee.com",
    "hours": {"Mon": "7AM-9PM", "Tue": "7AM-9PM"},
    "categories": ["Coffee shop", "Cafe"],
    "photo_urls": ["https://..."]
  },
  "facebook": {
    "page_url": "https://facebook.com/latazacoffee",
    "followers": 2450,
    "likes": 2300,
    "logo_url": "https://...",
    "recent_posts": [
      {"text": "New seasonal blend!", "date": "2026-04-05", "likes": 45}
    ]
  },
  "instagram": {
    "handle": "@latazacoffee",
    "profile_url": "https://instagram.com/latazacoffee"
  },
  "services_or_menu": ["Espresso $3.50", "Latte $4.75"],
  "scraped_at": "2026-04-09T14:30:00Z"
}

How Claude Should Use This Skill

  1. Identify the business: Extract the business name and location from the user's request.
  2. Run the scraper: Execute python scraper.py "Business Name" "City, State" via Bash.
  3. Parse the JSON output: The script prints valid JSON to stdout.
  4. Use the data: Feed into Ghost Closer page builder, lead generation, or competitive analysis.

Error Handling

  • If Google Maps returns no results, the google_maps field will be null.
  • If Facebook page is not found, facebook will be null.
  • Network errors are retried up to 3 times with exponential backoff.
  • All errors are logged to stderr; stdout always contains valid JSON.

Notes

  • Connects to existing Chrome on port 9222 (never launches a new browser).
  • Respects rate limits with built-in delays between requests.
  • Photos are returned as URLs only (not downloaded).