gscdump
直接谷歌搜索控制台和Bing网站管理员客户端键入查询和索引证据。
安装
npm install gscdump
gscdump 需要Node 22或更新版本。它能和b谷歌说话 fetch;它不需要谷歌API客户端包。
查询及搜索分析
创建一个带有访问令牌、类似oauth的客户端或刷新令牌凭证的客户端:
import { googleSearchConsole } from 'gscdump'
const client = googleSearchConsole({ accessToken: 'ya29.xxx' })
const sites = await client.sites()
使用 fetchOptions 对于自定义标头、请求钩子或重试设置:
const client = googleSearchConsole('ya29.xxx', {
fetchOptions: {
headers: new Headers({ 'x-project': 'analytics' }),
retry: 0,
timeout: 10_000,
onRequest({ options }) {
options.headers.set('x-request-id', crypto.randomUUID())
},
},
})
请求钩子在身份验证后运行。客户端等待每个钩子,包括钩子数组。
如果省略重试设置,则请求使用三次重试并尊重谷歌的重试设置 Retry-After 头。
使用 gscdump/query 构建一个请求。 client.query() 对谷歌的25,000行页面进行分页,并生成每个非空批。
import { googleSearchConsole } from 'gscdump'
import { between, date, daysAgo, gsc, page, query } from 'gscdump/query'
const client = googleSearchConsole('ya29.xxx')
const siteUrl = 'sc-domain:example.com'
const request = gsc
.select(page, query)
.where(between(date, daysAgo(30), daysAgo(3)))
for await (const rows of client.query(siteUrl, request)) {
for (const row of rows)
console.log(row.page, row.query, row.clicks)
}
如果你已经有一个搜索分析请求体,调用直接操作:
const response = await client.searchAnalytics.query(siteUrl, {
startDate: '2026-06-01',
endDate: '2026-06-30',
dimensions: ['page'],
rowLimit: 1000,
})
b谷歌的其他资源
对站点地图、检查和合格的索引API通知使用相同的客户端:
const sitemapList = await client.sitemaps.list(siteUrl)
const inspection = await client.inspect(siteUrl, 'https://example.com/docs')
await client.indexing.publish(
'https://example.com/jobs/frontend-engineer',
'URL_UPDATED',
)
索引通知仅适用于符合条件的工作或直播页面。 看到 URL检查和索引。
包根还导出批处理和投影帮助程序,例如 fetchSitesWithSitemaps, batchInspectUrlsFlatSettled, inspectUrlFlat, batchRequestIndexing。
发送IndexNow更改通知
在提交的主机上发布UTF-8密钥文件。 密钥文件包含您的密钥,没有其他内容。
import { indexNow } from 'gscdump/indexnow'
const client = indexNow()
const input = {
host: 'example.com',
key: 'your-key-12345',
keyLocation: 'https://example.com/your-key-12345.txt',
}
const verification = await client.verify(input)
if (verification.ok && verification.value._tag === 'verified') {
const result = await client.submit({
...input,
urls: ['https://example.com/changed-page'],
})
console.log(result)
}
客户端在发送之前拒绝准确的主机或密钥目录之外的url。
验证允许HTTPS,禁用重定向,并且在10秒内最多读取1024字节。
注入 fetch, clock,或 timeoutMs 当你需要不同的运输或时间。
预期输入失败返回 Result;基础设施故障传播。
提交收据描述了交付。HTTP 200表示接受;HTTP 202意味着密钥验证仍然悬而未决。 两个响应都不能证明索引。 直接客户端发送一批最多10,000个url而不重试。 托管调用方使用SDK操作,将每个批处理的url限制在1000个以内。 看到 IndexNow协议。
阅读必应索引证据
使用 gscdump/bing 使用OAuth访问令牌或Bing网站管理员API密钥。客户端返回标记
Result 重视,从不从抓取证据中推断出索引判决。
import { bingWebmaster } from 'gscdump/bing'
const client = bingWebmaster({ accessToken: 'access-token' })
// API key alternative: bingWebmaster({ apiKey: 'bing-webmaster-api-key' })
const evidence = await client.getIndexingEvidence(
'https://example.com/',
'https://example.com/docs',
)
if (evidence.ok)
console.log(evidence.value)
const [pages, queries, crawl] = await Promise.all([
client.getPageStats('https://example.com/'),
client.getQueryStats('https://example.com/'),
client.getCrawlStats('https://example.com/'),
])
accessToken 也接受返回字符串或的函数 Promise<string>。
客户机在每次请求之前调用该函数,因此调用方可以在长时间导出期间刷新过期令牌。
命令行在使用时管理此刷新 gscdump bing login --mode local --oauth。
站点地图XML读取和遍历驻留 sitemapd. 产品feed范围和
精确成员散列存在 gscdump/sitemap-identity. 主持规范
Sitemap会员可以通过 @gscdump/sdk/v1。
公共子路径
gscdump/client:谷歌客户端和认证类型gscdump/indexing:检查和索引助手gscdump/indexnow:密钥验证和更改通知gscdump/errors:谷歌API失败gscdump/sites:站点助手gscdump/sitemap-identity站点地图范围和成员散列gscdump/query:查询生成器、列、操作符、太平洋日期帮助器和逻辑查询计划gscdump/query/plan:只进行逻辑查询规划gscdump/bing:必应站点、URL、流量、抓取证据和站点地图呼叫gscdump/dates:明确的UTC和太平洋搜索控制台日期帮助程序gscdump/contracts:搜索分析请求和响应契约gscdump/result:Result助手gscdump/normalizeURL规范化gscdump/tenant:站点ID编码和规范化
托管gscdump.com客户端驻留 @gscdump/sdk. 存储引擎和分析程序驻留在 @gscdump/engine 和 @gscdump/analysis。