← 返回 Skills 市场
psyduckler

Lead Scorer

作者 psyduckler · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
715
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install lead-scorer-free
功能描述
Score leads 0-100 by analyzing a domain's website, DNS, sitemap, and social presence. Uses customizable JSON scoring profiles so users can define what signal...
使用说明 (SKILL.md)

Lead Scorer

Analyze a domain and return a 0-100 lead score with detailed breakdown. The key feature is customizable scoring profiles — JSON configs that define which signals matter and their weights.

How It Works

  1. DNS Analysis — MX records (Google Workspace/M365 = real business), SPF/DMARC
  2. Sitemap Parsing — URL count, last modified dates, content volume
  3. Website Scraping — Blog detection, tech stack, meta tags, social links, contact info
  4. Signal Scoring — Each signal scored against the profile weights
  5. Grade Assignment — A (80-100), B (60-79), C (40-59), D (20-39), F (0-19)

Dependencies

pip3 install dnspython

Usage

Single domain (default profile)

python3 scripts/score_lead.py example.com

With custom profile

python3 scripts/score_lead.py example.com --profile clearscope.json

Multiple domains

python3 scripts/score_lead.py domain1.com domain2.com domain3.com

Batch from CSV

python3 scripts/score_lead.py --csv leads.csv --domain-column "Website"

Options

  • --profile FILE — Scoring profile JSON (default: default.json, resolved from scripts/profiles/)
  • --csv FILE — CSV file with domains
  • --domain-column NAME — Column name for domains in CSV (default: domain)
  • --scrape-delay SECONDS — Delay between HTTP requests (default: 0.5)
  • --output FILE — Write results to file instead of stdout

Output

JSON to stdout with overall score, per-signal breakdown, raw data, and summary:

{
  "domain": "example.com",
  "score": 72,
  "grade": "B",
  "profile": "default",
  "signals": {
    "has_blog": {"score": 20, "max": 20, "evidence": "Blog found at /blog; 234 URLs in sitemap"},
    "business_legitimacy": {"score": 15, "max": 20, "evidence": "MX: Google Workspace; SPF configured"}
  },
  "raw_data": {
    "sitemap_urls": 234,
    "mx_provider": "Google Workspace",
    "tech_stack": ["WordPress", "Cloudflare"]
  },
  "summary": "Strong in: has blog, business legitimacy. Good lead, worth pursuing."
}

Scoring Profiles

Profiles are the key differentiator. They let you define what matters for YOUR use case.

Profile format

{
  "name": "my-profile",
  "description": "What this profile scores for",
  "signals": {
    "signal_name": {
      "weight": 25,
      "description": "What this signal measures",
      "keywords": ["optional", "keyword", "list"]
    }
  }
}

Built-in signals

Signal What it checks
has_blog Blog/content section existence + sitemap volume
business_legitimacy MX provider, SPF/DMARC, about page, meta tags
content_velocity Sitemap dates — recency and frequency of updates
tech_stack CMS, analytics, chat tools detected in page source
audience_size Social media links (Twitter, LinkedIn, YouTube, Facebook)
contact_findability Contact page, emails on site, LinkedIn link
seo_tools Keyword matching in homepage text (requires keywords array)

Custom keyword signals

Any signal with a keywords array will match those terms against the homepage text. This is how you detect competitors, tools, or industry terms:

{
  "name": "crm-seller",
  "signals": {
    "uses_crm": {
      "weight": 30,
      "description": "Already uses a CRM",
      "keywords": ["salesforce", "hubspot", "pipedrive", "zoho crm", "close.io"]
    },
    "has_sales_team": {
      "weight": 25,
      "description": "Mentions sales roles or team",
      "keywords": ["sales team", "account executive", "sdr", "business development"]
    }
  }
}

Shipped profiles

  • default.json — Generic scoring for any SaaS/content company
  • clearscope.json — Example profile for SEO tool partnership leads

Create your own in scripts/profiles/ or pass any path with --profile.

Rate Limiting

The script is polite by default:

  • --scrape-delay 0.5 — 500ms between HTTP requests (default)
  • Each domain makes ~5-8 requests (homepage, blog, about, contact, sitemap, DNS)
  • For batch mode, there's an additional delay between domains
  • Increase delay for large batches: --scrape-delay 2
  • All requests use a generic User-Agent string

Recommended delays

Batch size Delay Est. time
1-10 0.5s (default) ~30s-2min
10-50 1.0s ~5-15min
50+ 2.0s ~30min+

Error Handling

If a signal can't be gathered (site down, DNS timeout, etc.), it scores 0 with an explanation in the evidence field. The script never crashes on a single domain failure — it logs the issue to stderr and continues.

Tips

  • Start with default profile, review results, then customize
  • Weights should sum to 100 for intuitive scoring (not required — auto-normalizes)
  • Keywords are powerful — add competitor names, industry terms, technology mentions
  • Pipe to jq for quick filtering: python3 scripts/score_lead.py domain.com | jq '.score'
  • Batch + sort: Score a CSV, then sort by score to prioritize outreach
安全使用建议
This skill appears to do what it says: scrape public websites, query DNS, parse sitemaps and score leads using JSON profiles. Before installing or running: 1) Review and accept that it will perform network requests to arbitrary domains (do not point it at internal/intranet domains or sensitive hosts). 2) Note fetch_url disables SSL verification — consider editing the script to verify certificates (remove the ctx.verify_mode = ssl.CERT_NONE and check_hostname=False) if you want stronger security. 3) Respect target sites' terms of service and robots.txt; use the --scrape-delay option for large batches. 4) The script may collect public emails and other contact info—treat outputs accordingly (privacy/legal). 5) Install the dnspython dependency in an isolated environment (virtualenv) before running and, if uncertain, run the script in a sandboxed environment to confirm behavior.
功能分析
Type: OpenClaw Skill Name: lead-scorer-free Version: 1.0.0 The skill is classified as suspicious due to significant security vulnerabilities in `scripts/score_lead.py`. It disables SSL/TLS certificate verification (`ssl.CERT_NONE`, `check_hostname = False`) when fetching URLs, making it vulnerable to Man-in-the-Middle attacks. Furthermore, the script allows reading arbitrary local files via the `--profile` and `--csv` arguments, and writing to arbitrary local files via the `--output` argument. While there is no evidence of intentional malicious behavior like data exfiltration to unauthorized endpoints or persistence mechanisms, these vulnerabilities could be exploited by a malicious actor providing input to the skill or by an inadequately sandboxed OpenClaw agent.
能力评估
Purpose & Capability
The name/description (lead scoring from domain, DNS, sitemap and social signals) aligns with the included script and shipped JSON profiles. The script performs DNS queries, sitemap parsing, homepage scraping and supports profiles/CSV batch mode as documented—these are expected capabilities for the stated purpose.
Instruction Scope
SKILL.md instructs running the included Python script with profiles/CSV and documents rate limiting and outputs. The instructions and code only reference site scraping, DNS lookups, local profile and CSV files. Notable implementation detail: fetch_url disables SSL verification (ssl.CERT_NONE and check_hostname=False), which increases susceptibility to man-in-the-middle on network connections and is a risky choice but not inconsistent with the skill's purpose of fetching many sites. The agent is not instructed to read unrelated local files or credentials.
Install Mechanism
This is instruction-only with one code file and no install spec. The only declared runtime dependency is dnspython (pip); that's proportionate to DNS lookups. No arbitrary downloads or archive extraction are used.
Credentials
The skill requests no environment variables, no credentials, and no config paths. That is appropriate for a public web-scraping/lead-scoring tool. It does collect public site data (emails, links) as part of its function; users should expect scraped data to be written to stdout or an output file.
Persistence & Privilege
always is false and the skill does not request special agent/system privileges. It does not modify other skills or global agent configuration. Agent autonomy is allowed by default (normal) but not escalated by this skill.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install lead-scorer-free
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /lead-scorer-free 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release: score leads 0-100 by analyzing website, DNS, sitemap, and social presence with customizable scoring profiles.
元数据
Slug lead-scorer-free
版本 1.0.0
许可证
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Lead Scorer 是什么?

Score leads 0-100 by analyzing a domain's website, DNS, sitemap, and social presence. Uses customizable JSON scoring profiles so users can define what signal... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 715 次。

如何安装 Lead Scorer?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install lead-scorer-free」即可一键安装,无需额外配置。

Lead Scorer 是免费的吗?

是的,Lead Scorer 完全免费(开源免费),可自由下载、安装和使用。

Lead Scorer 支持哪些平台?

Lead Scorer 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Lead Scorer?

由 psyduckler(@psyduckler)开发并维护,当前版本 v1.0.0。

💬 留言讨论