文档

TinkerClaw Backlink Audit

试用

Discover all inbound links (backlinks) to a domain, subdomain, or GitHub repo, then classify each as "ours" (we created/control the source) vs "organic" (someone else). Use when the user asks to find/audit backlinks or inbound links to a site, check who links to a domain or a GitHub repo, separate self-made links from organic ones, or refresh an inbound-links graph. Wraps four sources (GitHub repo referrers, a list of URLs you found, the backlinks.sh Common-Crawl API, and a Google Search Console CSV export) behind one classify-and-report CLI. Two of the four need no account at all; the one optional API key is stored in your OS keychain and cleared by --logout. Built for the TinkerClaw fork — github.com/globalcaos/tinkerclaw. See Permissions, Data Flow & Consent.

它能做什么

One of dozens of skills and plugins in **TinkerClaw** — a self-improving OpenClaw fork that's been running 24/7 for months.

技能文档

One of dozens of skills and plugins in TinkerClaw — a self-improving OpenClaw fork that's been running 24/7 for months.

Who actually links to you — and how much of that did you build yourself?

Every backlink report you can buy gives you one number. That number is two very different things added together: links strangers made because your work was worth linking, and links you made because you were doing your own marketing. The first is traction. The second is homework. A tool that adds them up is telling you a flattering lie.

This one separates them. You get ours, organic, and an honest ambiguous bucket for the cases a hostname genuinely cannot settle — because a link from github.com might be your comment or a stranger's, and pretending otherwise is how a growth chart starts lying to you.

Two of the four sources need no account and no key. The one that does keeps it in your OS keychain, and hands you a --logout that actually removes it.

Overview

Finding inbound links and telling "ours" from "organic" is two jobs: (1) get a link list from a real index, (2) match each source against surfaces you control. This skill does both via scripts/backlink-audit.mjs and an editable allowlist.

Quick start

S=~/.openclaw/workspace/skills/backlink-audit/scripts/backlink-audit.mjs

# GitHub repo (works now — no extra auth; referrers, not raw backlinks)
node "$S" globalcaos/tinkerclaw --source github

# Discovered links (poor-man's backlink finder, works now): web-search the target
# term yourself, collect referring URLs, classify them — best source at small scale
node "$S" globalcaos/tinkerclaw --source urls --urls "https://a.com/x,https://b.com/y"

# Any owned domain via backlinks.sh (needs a key; 3 free calls, then ~$0.01/call)
BACKLINKS_SH_API_KEY=… node "$S" thetinkerzone.com --source backlinks --json

# Owned site, authoritative + free: export GSC Links→Top linking sites to CSV, then
node "$S" sprintpaper.com --source gsc-csv --csv ./gsc-export.csv

# Feed the Inbound-links pulse graph for one target:
node "$S" globalcaos/tinkerclaw --source github --write-state --target-key tinkerclaw

Storing the one optional credential, and taking it back:

printf %s "$BACKLINKS_SH_API_KEY" | node "$S" --login   # → OS keychain (stdin, never argv)
node "$S" --logout                                      # → clears keychain AND fallback file

Choosing a source

TargetSourceAuthCostNotes
GitHub repogithubnone (gh)freereferrers/traffic proxy, repo-scoped
Anythingurlsnonefreeclassify a list of links you found (e.g. via web search); works now, best at small scale
Owned domain, one-shotbacklinksbacklinks.sh API key3 free calls, then ~$0.01/callCommon-Crawl backlink list
Owned domain, authoritativegsc-csva CSV export (no OAuth)freeGoogle's own link report

Read references/sources.md before picking — it has the auth setup, the backlinks.sh signup/limits, how to export the GSC CSV, and the per-source caveats.

Classify: ours vs organic

Edit assets/ours-allowlist.json. A link is ours if its source host (+ optional path_prefix) matches a rule; hosts listed in ambiguous_domains with no resolving path-rule are reported ambiguous (e.g. a github.com link could be a comment you wrote or a stranger's — resolve it by hand, then pin the resolved URL in ours_urls); everything else is organic. Keep the allowlist current as new owned surfaces appear.

The shipped allowlist is the author's, kept as a worked example of the rule shapes. Replace the domains with yours.

Feed the pulse graph

--write-state --target-key writes inbound_targets..{external,ours} into inbound-campaign-state.json; the control-panel pollers render it (solid=external, dashed=ours, one hue per target). Ambiguous links are excluded from the written counts. Without --write-state the tool writes nothing at all — it just prints.

At small scale, crawl indexes (backlinks.sh/Common Crawl) return ~0 for new sites, so the search strategy is the workhorse. To count inbound links to a target:

  1. Web-search the target term several ways: "github.com/globalcaos/tinkerclaw", tinkerclaw, "thetinkerzone.com", plus site: excluded variants to find third-party mentions.
  2. Collect the distinct referring URLs (one page = one backlink; dedupe).
  3. node scripts/backlink-audit.mjs --source urls --urls "u1,u2,…" → ours/organic/ambiguous counts.
  4. --write-state --target-key to push the count to the graph.

scripts/build-history.mjs writes dated cumulative ours observations so the graph shows real growth, not just today. Its dataset is derived (not invented) from:

  • Authored GitHub comments: gh api repos//issues//comments, filter by your login, body contains your URL → dated by each thread's first backlink-bearing comment (one thread = one linking page).
  • git log -S "" in the linking repo → when an outbound link to your site (e.g. README→yourdomain.com) first went live.

Re-derive by re-running those two mines, updating SERIES in the script, and re-running it.

Two things to know before you run it. The SERIES in the file is the author's dataset, shipped as a worked example of the shape and the provenance discipline — replace it with yours or your graph will show someone else's history. And it is opt-in: bare (or with --dry-run) it prints exactly what it would write and writes nothing; --yes is what actually sends the points to your control-panel store.

Short version: this reads public link data, classifies it against a list you edit, and prints the result. Two of its four sources never touch the network. The one credential it can use is optional, keychain-first, and revocable. Longer version, because you should not have to take that on trust:

What data it touches. Referring URLs — from the GitHub traffic API, from a list you paste, from a CSV you exported, or from backlinks.sh. Plus the allowlist you edit. That is the whole input surface. It does not read your repos, your mail, your browser, your shell history or your source tree.

What leaves your machine. Only what the source you picked requires:

  • --source urls and --source gsc-csv: nothing. Fully offline; the CSV is parsed locally.
  • --source github: the gh CLI you already authenticated calls api.github.com for your repo's referrer list.
  • --source backlinks: one HTTPS GET to https://api.backlinks.sh/v1/backlinks?target= with your API key in an x-api-key header. The URL is a constant in the script, not something the target string can redirect.

There is no telemetry, no analytics, no "phone home", and no other endpoint anywhere in the code.

What it costs. Nothing, except --source backlinks: backlinks.sh gives 3 free calls, then charges roughly $0.01 per call. Every other source is free. Nothing subscribes you to anything.

What credentials it reads. One, optional: your backlinks.sh API key, and only for --source backlinks. Resolution order is most-private-first — BACKLINKS_SH_API_KEY (transient, nothing on disk) → your OS keychain (secret-tool on Linux, security on macOS; service backlinks-sh, account api-key) → ~/.config/backlinks-sh/credentials.json, a mode-0600 fallback that prints a warning every single time it is used, and warns again if its permissions are looser than 0600. --login reads the key from stdin, never from argv, because argv is visible in ps. One honest caveat: on macOS, security only accepts the secret as an argument, so during that one call it is briefly visible to your own other processes. Linux does not have this problem.

The off switch. node scripts/backlink-audit.mjs --logout clears the keychain entry and deletes the fallback file, tells you which of the two actually existed, and reminds you if BACKLINKS_SH_API_KEY is still set in your environment (it cannot reach into your shell to unset it). Local removal does not revoke the key server-side — rotate or delete it in your backlinks.sh account at https://backlinks.sh.

What it needs, and why.

CapabilityWhyScope
NetworkFetch the link listapi.backlinks.sh (constant URL) and api.github.com via gh — only for those two sources
Local shell execgh, secret-tool/security, openclawargv arrays, no shell interpreter, no string interpolation
Env readBACKLINKS_SH_API_KEYthat one variable; no env file is sourced
Credential readbacklinks.sh API keykeychain first, warned 0600 file as fallback; sent only to api.backlinks.sh
File readAllowlist, your --csv / --urls-file, the credentials file, the state filethe paths you name, plus those two fixed ones
File write--write-state state file; --login fallback credentials file; build-history.mjs --yesall three are opt-in; nothing is written on a plain run
File delete--logout removes the credentials filethat single path — no recursive or glob delete exists in the skill

The consent steps, and what each is protecting you from:

node "$S"  --source urls --urls "…"              # reads nothing, writes nothing, sends nothing
node "$S"  --source backlinks                    # spends a paid API call, sends your key
node "$S"  --source github --write-state --target-key k   # writes one JSON file under ~/.openclaw
node scripts/build-history.mjs                           # DRY RUN — prints what it would write
node scripts/build-history.mjs --yes                     # actually writes to your control-panel store
node "$S" --logout                                       # removes the stored key

Read it before you run it. scripts/backlink-audit.mjs is ~250 lines of plain Node and scripts/build-history.mjs about 90. Every claim above is visible in them. That is the whole security model: short enough to audit over a coffee.

Honest limits

  • No SEO tool isolates a path on github.com → repos only get referrer data, not raw backlinks.
  • Free backlink web UIs (OpenLinkProfiler, Semrush, Majestic) are JS-rendered with no free API; not scriptable here.
  • New/small sites have thin coverage in any crawl index — expect sparse results until they accrue links.
  • The ambiguous bucket is a real answer, not a failure. A hostname alone cannot tell your comment from a stranger's; resolving it takes a human, and the tool refuses to guess in your favour.

Part of TinkerClaw — real-time token tracking, self-improving crons, persistent cognitive memory. This is one piece of that stack; the repo has dozens more.

👉 https://github.com/globalcaos/tinkerclaw

Clone it. Fork it. Break it. Make it yours.

相关技能

把自然语言描述转为结构化 JSON,并由 mcp-diagram-generator MCP 服务生成 Draw.io、Mermaid 或 Excalidraw 图表文件。

作者 nssa.io1.0k 次安装47 星标

以 AI 机器人身份加入视频会议,提供语音、虚拟形象与屏幕共享四种模式。

作者 johnpatternai21 次安装8 星标

按用户明确指令,在得到大脑(Get笔记)中保存、搜索并管理笔记与知识库。

作者 iswalle763 次安装66 星标

在本地磁盘以分类纯 Markdown 文件保存需要长期留存的事实,与智能体内置记忆并存。

作者 Iván1 次安装

从 AdMapix API 拉取广告创意、应用、榜单和收入预估等数据,原样返回结构化 JSON。

作者 fly0pants

globalcaos 的更多技能

浏览全部技能

为 OpenClaw 智能体加上 JARVIS 风格的英式嗓音与冷面幽默,一条命令同步输出语音和紫色聊天气泡。

作者 globalcaos190 次安装4 星标

OpenClaw 原生 WhatsApp 通道:22 项消息与群组操作,叠加 Protocol v2 多智能体协同。

作者 globalcaos116 次安装3 星标

一个本地面板,统一追踪 Anthropic、Gemini、OpenAI、Manus 四家提供商的 token 用量与预算告警。

作者 globalcaos59 次安装

Stop sending 'format this JSON' to Opus. Stop sending 'cron job' to GPT. Billing-aware routing guide for choosing among the models already configured in your OpenClaw setup when assigning an agent, sub-agent or cron task — flat-rate first, metered only when justified, budget pressure respected. Not for picking models outside your configuration, and not a runtime proxy.

作者 globalcaos16 次安装

Your agent says 'done' — but did it check? Superpowers turns any OpenClaw agent into a disciplined engineer. Verification iron law (evidence before claims), three-agent code review (build → verify spec → verify quality), systematic debugging (4-phase root cause, three-strike rule), brainstorming gates (design before code), and anti-over-engineering rules. Use when: (1) coding tasks of any complexity, (2) debugging failures, (3) about to claim work is complete, (4) spawning sub-agents, (5) planning features, (6) reviewing code. Inspired by top coding agent methodologies, adapted for OpenClaw multi-agent architecture.

作者 globalcaos14 次安装

Read and search Outlook, inspect attachments, and create or edit drafts without any send endpoint. Uses one short-lived Microsoft Graph access token supplied on stdin for one run; it never stores credentials. Bulk mailbox export is opt-in.

作者 globalcaos23 次安装