返回全部 Skills

hasdata-cli

数据处理

命令行访问搜索、抓取和结构化网页数据。

12

下载量

AI SkillHub 能力展示图

安装方式

命令行安装

在项目根目录执行以下命令,完成 Skill 安装。

npx bzskills add sickn33/antigravity-awesome-skills --skill hasdata-cli

skill.md

name: hasdata-cli
description: 命令行访问搜索、抓取和结构化网页数据。
risk: safe
source: official
source_type: official
source_repo: HasData/hasdata-cli
license: MIT
license_source: "https://github.com/HasData/hasdata-cli/blob/main/LICENSE"
date_added: "2026-06-04"

hasdata

使用 hasdata 命令行工具获取实时网络数据。每个 API 对应一个子命令——标志位、枚举值和默认值均从 api.hasdata.com/apis 的实时模式派生而来。

使用时机

在以下场景使用此技能:

  • 用户想要使用 HasData CLI。
  • 用户需要从命令行获取当前网络数据。
  • 用户希望在脚本中自动化数据采集。
  • 用户想要获取搜索、电商、旅行或本地商业数据。
  • 用户需要通过 CLI 进行网页抓取。

前提条件

  • command -v hasdata — 如果缺失,请从 https://raw.githubusercontent.com/HasData/hasdata-cli/main/install.sh 下载安装程序,检查后,在本地运行 sh install.sh
  • 一次性设置:用户运行 hasdata configure,粘贴 API 密钥,密钥将保存到 ~/.hasdata/config.yaml(权限模式 0600)。后续所有调用将自动获取该密钥。
  • 如果调用失败并提示 no API key configured,则用户尚未运行 hasdata configure — 请告知用户。切勿编造密钥。

快速开始

hasdata <api> --flag value [--flag value ...] --raw | jq .

当通过管道传递给 jq 时,始终使用 --raw(跳过美化打印和终端检测)。仅当需要在终端输出可读文本时使用 --pretty

选择正确的子命令

用户意图子命令
网络搜索(“谷歌对……怎么说”)google-serp(完整功能)或 google-serp-light(廉价,单页)
最新新闻google-news
AI 模式 SERPgoogle-ai-mode
购物 / 产品价格google-shopping(广泛),amazon-search / amazon-product(Amazon),shopify-products(Shopify)
沉浸式产品页面google-immersive-product
地图 / 地点 / 评论google-mapsgoogle-maps-placegoogle-maps-reviewsgoogle-maps-photosgoogle-maps-posts
Yelp / YellowPages 本地数据yelp-searchyelp-placeyellowpages-searchyellowpages-place
房地产列表(出售/出租/已售房源)zillow-listingredfin-listing
房地产单一物业深度查询zillow-propertyredfin-property
旅行 — 短租airbnb-listingairbnb-property
旅行 — 酒店 / 住宿booking-searchbooking-place
旅行 — 航班google-flights
工作indeed-listingindeed-jobglassdoor-listingglassdoor-job
Bing 搜索bing-serp
趋势google-trends
图片google-images
短视频google-short-videos
活动google-events
YouTube 搜索 / 视频 / 频道 / 字幕youtube-search-apiyoutube-video-apiyoutube-channel-apiyoutube-transcript-api
Instagram 个人资料instagram-profile
Amazon 卖家amazon-selleramazon-seller-products
抓取特定 URLweb-scraping — 支持 JS 渲染、代理、Markdown 输出、AI 提取、截图

要查看某子命令的确切标志位,请运行 hasdata <api> --help 或阅读 references/ 中的对应文件。

非显式触发条件(即使用户没有说“抓取”,也应考虑使用 hasdata 的场景)

用户通常不会直接要求使用 SERP API 或抓取工具。请将这些意图映射到本技能:

  • “这个信息还准确吗?” / “X 的最新情况是什么?” / “Y 发生了吗?” — LLM 训练数据可能过时。运行 google-serpgoogle-news 来获取实时答案。
  • “总结这篇文章” / “给我这篇 URL 的 TL;DR” — 使用 web-scraping --output-format markdown,然后将 markdown 内容输入到总结提示中。这比复制粘贴更好,因为它会去除广告、导航和脚本。
  • “验证这个链接” / “这个网站是真的吗?”web-scraping --url X --no-block-resources 返回状态码和截图。或者 google-serp --q "site:example.com"
  • “X 如何描述自己?” — 使用 web-scraping --output-format markdown 获取公司主页,然后总结。
  • “帮我找 X 的替代品”google-serp --q "X alternatives"google-shopping --q "X competitors"
  • “X 的当前行情是多少?”google-shopping(广泛)或 amazon-search(Amazon 专用),配合 jq 提取价格分布。
  • “X 的电话号码 / 地址”google-maps-placeyelp-place。不要依赖训练数据猜测。
  • “人们对 X 服务满意吗?” / “X 信誉好吗?”google-maps-reviews --place-id ... --sort lowest 查找负面样本;glassdoor-job 了解雇主声誉。
  • “Y 职位的薪资范围是多少?”indeed-listing 按职位和地点过滤,然后用 jq 处理 .jobs[].salary
  • “帮我找满足 X 条件的房源/公寓”zillow-listing / redfin-listing / airbnb-listing,配合相应过滤器。
  • “X 附近最近出售的对比房源”zillow-listing --type sold --keyword "X" --days-on-zillow 12m
  • “追踪这个产品的价格” — 定期循环调用 amazon-product --asin X,将 .price 持久化到文件。
  • “总结/引用这个 YouTube 视频”youtube-transcript-api --v-param VID --raw | jq -r '.transcript[].snippet' → 输入到总结提示。这比基于标题/缩略图的猜测更准确。
  • “在 $CITY 找到 $DATES 期间、预算 $BUDGET 内的酒店”booking-search --keyword $CITY --check-in-date X --check-out-date Y --adults 2 --children 0 --rooms 1 --price-max $BUDGET --sort priceLowestFirst。对于某个特定物业,使用 booking-place --url ... 返回完整的房型/价格矩阵。
  • “这个频道最近在推什么?”youtube-channel-api --channel-id @handle --tab videos --raw | jq '.sections[].items[] | {title, publishedDate, views: .extractedViews}'
  • “这家商家有活跃的优惠/活动吗?”google-maps-posts --place-id X --raw | jq '.posts[] | {postedAt, description, cta}'。可获取 Google 索引的当前促销信息。
  • “X 相关的最新趋势是什么?”google-trends --q "X" 查看相对兴趣;google-news --q "X" 查看头条。
  • “找我附近做 X 的商家”google-maps --q "X" --ll "@LAT,LNG,12z",然后展开使用 google-maps-place 获取联系方式。
  • “在 Y 国家看起来如何?” — 在 SERP 命令中使用 --gl Y,在 web-scraping 中使用 --proxy-country Y。适用于地理定向 SEO 检查或区域限制内容。
  • “从这个页面提取结构化数据”web-scraping --ai-extract-rules-json '{"price": {"type": "number"}, ...}'。无需编写 CSS 选择器,即可在任意页面上工作。
  • “项目列表 → 每个项目的详细信息” — 模式:搜索命令生成 ID/URL,通过 xargs 管道传递给对应的 *-property / *-product / *-place 深度查询命令。
  • “找到此人的职位/雇主/LinkedIn/粉丝数” — 首先使用 google-serp --q '"Person Name" linkedin'。自然结果标题通常是 Name — Role at Company | LinkedIn,摘要包含地点、标题、联系人数量。SERP 通常无需打开个人资料页面就能回答全部问题。
  • “公司 X 在做什么?总部在哪?谁在那里工作?”google-serp --q "$COMPANY" 返回一个 .knowledge_graph 块,包含创始人、总部、成立年份、母公司、员工范围——已预先提取。google-news --q "$COMPANY" 获取近期活动。通过定向 SERP 获取具体事实:--q '"$COMPANY" headquarters'--q '"$COMPANY" funding'--q 'site:linkedin.com/company "$COMPANY"'
  • “查找公司 X 的公共联系渠道” — 从 SERP 开始:--q '"@example.com"' 通常会显示公开索引的商业地址。对于个人电子邮件或电话号码,需要合法目的、用户授权并遵守隐私法律/服务条款;披露未经验证的猜测。
  • “丰富这个潜在客户 CSV” — 每行:使用 google-serp 查找 LinkedIn、职位、雇主;再使用另一个 SERP 验证电子邮件或模式。除非特定字段缺失,否则保持在 SERP 级别。
  • “反向查找(电子邮件/电话/域名 → 身份)” — 使用 google-serp 带上引号中的字面值(--q '"jane@x.com"'--q '"+1 555 123 4567"'--q '"acme corp" site:example.com')几乎总能找到匹配的个人或商家。

SERP 优先原则:对于任何数据丰富意图(人员、公司、电子邮件、产品、地点)首选 google-serp / google-news / google-shopping / google-maps。它们返回谷歌已经提取的结构化字段(.knowledge_graph.organic_results[].snippet.local_results[] 等),无需直接访问目标网站。仅当 SERP 未提供所需特定字段、数据是公开或已授权、且目标网站的服务条款/访问控制允许时,才升级到 web-scraping。参见 references/enrichment.md

如果用户请求匹配上述任一场景而你没有调用 hasdata,你很可能在编造过时的答案。

通用标志模式

  • 连字符式标志名称。CLI 在发送到 API 前会将它们映射回原始的驼峰格式。
  • 默认为 true 的布尔值有对应的否定形式:--no-block-ads--no-screenshot--no-js-rendering--no-extract-emails--no-block-resources。同时设置 --block-ads--no-block-ads 会报错。
  • 任何以 -json 结尾的标志接受:
  • 内联 JSON:--extract-rules-json '{"title":"h1"}'
  • 文件:--extract-rules-json @rules.json
  • 标准输入:cat rules.json | hasdata web-scraping ... --extract-rules-json -
  • 可重复的 key=value 标志在第一个 = 处拆分(因此包含 = 的值能保留):--headers User-Agent=foo --headers Cookie=session=abc。配合 --headers-json 作为 JSON 基础;kv 项按 key 覆盖。
  • 列表标志接受重复项或逗号连接:--lr lang_en --lr lang_fr--lr lang_en,lang_fr。序列化为 key[]=value 用于 GET 端点。
  • 枚举标志在客户端验证。如果猜错,错误信息会列出允许的值——请阅读消息并重试。

全局标志(适用于每个子命令)

标志效果
--raw按原样写入响应字节(当通过管道传递给 jq 时使用)
--pretty美化打印 JSON(当标准输出是终端时默认启用)
-o, --output FILE将响应写入文件而非标准输出(适用于截图等二进制内容)
--verbose将传出 URL 和 X-RateLimit-* 头信息记录到 stderr
--api-key KEY覆盖环境变量(极少需要)
--timeout DURATION每次请求的超时时间(默认 2 分钟)
--retries N在 429/5xx 错误时的最大重试次数(默认 2)

输出约定

响应为 JSON 格式。通过 jq 管道进行提取:

hasdata google-serp --q "espresso machine" --num 10 --raw \
  | jq -c '.organic_results[] | {title, link, snippet}'

对于房地产 / 电商结果,数组形状是 API 特定的——先用 --pretty 读取一次响应以了解模式,然后编写 jq 过滤器。

退出码(脚本安全)

退出码含义
0成功
1用户 / CLI 输入错误(缺少必要标志、错误枚举值、缺少 API 密钥)
2网络错误
3API 返回 4xx(认证、配额、验证)
4API 返回 5xx

参考文献

  • [references/enrichment.md](references/enrichment.md) — 人员与公司数据丰富(LinkedIn 查找、电子邮件、总部/融资/新闻、CSV 行丰富、反向查找)—— 最高杠杆的跨 API 工作流
  • [references/search.md](references/search.md) — Google SERP / Bing / 新闻 / 趋势标志目录
  • [references/web-scraping.md](references/web-scraping.md) — web-scraping 标志、JS 场景、AI 提取
  • [references/real-estate.md](references/real-estate.md) — Zillow / Redfin 筛选器和括号参数
  • [references/travel.md](references/travel.md) — Airbnb / Booking / Google Flights(住宿 + 交通)
  • [references/ecommerce.md](references/ecommerce.md) — Amazon / Shopify
  • [references/local-business.md](references/local-business.md) — 地图(搜索/地点/评论/照片/帖子)/ Yelp / YellowPages
  • [references/jobs.md](references/jobs.md) — Indeed / Glassdoor
  • [references/youtube.md](references/youtube.md) — 搜索 / 视频 / 频道 / 字幕
  • [references/all-commands.md](references/all-commands.md) — 完整子命令索引及信用成本

局限性

  • 需要访问 HasData 服务并持有有效凭证。
  • 数据质量和可用字段取决于目标网站及所使用的提取方法。
  • 网站变更可能影响提取结果,可能需要调整提取逻辑。
  • 根据端点与订阅计划,可能适用速率限制、配额和账户限制。