← All skills
backlink
79 / 100 · Review before installing
Check before installing. Some of what it can do is expected: a coding skill usually runs build and test commands.
By yan-labs/yan-skills (GitHub) · coding · 232 stars · scanned at commit 7c6856a
Use for backlink work - finding, qualifying, submitting, analyzing or verifying backlinks, directory and blog-comment placements, competitor link sources, anchors, toxic links and disavow, outreach templates, and reading Ahrefs, Semrush or Similarweb backlink and traffic reports (外链、反链、去哪发、提交目录、评论外链、发出去没有、毒性、disavow、竞品外链、竞品导流、数据面板). This Skill owns what to read from those reports and which placements to pursue. Not for generic logged-in browser driving, sessions or doctor faults (use opencli), …
Works with any agent that supports SKILL.md skills.
What this skill can do
Downloads and installs other software
The author does not mention this.
Found in 3 places.
Sends data to these websites: app.example
This is disclosed by the author in the skill's SKILL.md or README.
Found in 14 places.
Show 11 more
- backlink/scripts/fingerprint-forms.mjs, line 57
const r = await fetch(url, { redirect: 'follow', signal: ctl.signal, headers: { 'user-agent': UA } }); - backlink/scripts/footprint-discover.mjs, line 684
const res = await fetch(SERPER_ENDPOINT, { - backlink/scripts/lib-semrush-overview.mjs, line 1310
const X = XMLHttpRequest.prototype, O = X.open, S = X.send; - backlink/scripts/probe-submission-targets.mjs, line 56
const req = https.get(url, { rejectUnauthorized: false, timeout: TIMEOUT_MS, headers: { 'user-agent': UA, accept: 'text/html,*/*' } }, (res) => { - backlink/scripts/probe-submission-targets.mjs, line 107
const res = await fetch(url, opts); - backlink/scripts/semrush-keyword.mjs, line 426
const response = await fetch('/kwogw/v2/webapi', { - backlink/tests/semrush-overview-readiness.test.mjs, line 711
XMLHttpRequest: { prototype: xhrProto }, - backlink/tests/semrush-overview-readiness.test.mjs, line 717
await ctx.window.fetch('https://app.example/dpa/rpc?t=1', { method: 'POST', body: JSON.stringify({ jsonrpc: '2.0', id: 7, method: 'organic.Positions', params: { - backlink/tests/semrush-overview-readiness.test.mjs, line 735
XMLHttpRequest: { prototype: xhrProto }, - backlink/tests/semrush-overview-readiness.test.mjs, line 743
await ctx.window.fetch(requestLike); - backlink/tests/semrush-overview-readiness.test.mjs, line 746
await vm.runInContext(`window.fetch('https://app.example/dpa/rpc', { method: 'POST', body: new Uint8Array(bytes) })`, ctx);
Runs commands on your computer
This is disclosed by the author in the skill's SKILL.md or README. Expected for a coding skill.
Found in 20 places.
Show 17 more
- backlink/scripts/submit-known.mjs, line 82
import { execFile } from 'node:child_process'; - backlink/tests/harvest.test.mjs, line 3
import { spawnSync } from "node:child_process"; - backlink/tests/harvest.test.mjs, line 50
return spawnSync("bash", [collectScript, String(expected), dest, downloads], { - backlink/tests/harvest.test.mjs, line 139
return spawnSync(process.execPath, [mergeScript, ...args], { - backlink/tests/ledger-concurrency.test.mjs, line 3
import { spawn } from 'node:child_process'; - backlink/tests/opencli-wait.test.mjs, line 4
import { spawnSync } from 'node:child_process'; - backlink/tests/opencli-wait.test.mjs, line 9
const opencli = (...args) => spawnSync('opencli', args, { encoding: 'utf8', timeout: 120_000 }); - backlink/tests/opencli-wait.test.mjs, line 11
const probe = spawnSync('opencli', ['--version'], { encoding: 'utf8', timeout: 20_000 }); - backlink/tests/quota-session.test.mjs, line 18
import { spawnSync } from 'node:child_process'; - backlink/tests/quota-session.test.mjs, line 105
spawnSync(process.execPath, [script, ...resolved], { - backlink/tests/targets-select-ledger.test.mjs, line 6
import { execFileSync } from 'node:child_process'; - backlink/tests/targets-select-ledger.test.mjs, line 32
return execFileSync(process.execPath, [SCRIPT, ...args], { cwd, encoding: 'utf8' }); - backlink/tests/third-party-list-ingest.test.mjs, line 3
import { spawnSync } from "node:child_process"; - backlink/tests/third-party-list-ingest.test.mjs, line 31
const res = spawnSync(process.execPath, [ - backlink/tests/traffic-evidence.test.mjs, line 14
import { spawnSync } from 'node:child_process'; - backlink/tests/traffic-evidence.test.mjs, line 28
spawnSync(process.execPath, [path.join(scripts, script), ...args], { encoding: 'utf8', ...options }); - backlink/tests/traffic-evidence.test.mjs, line 95
spawnSync('chmod', ['+x', path.join(stub, 'opencli')]);
Safer alternatives
Low-risk skills in the same category (coding) that look related. Check that one does what you need.
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'backlink' ] || [ -L ~/.agents/skills/'backlink' ]; then echo 'A skill folder named backlink already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/yan-labs/yan-skills' "$d" && git -C "$d" checkout --quiet '7c6856a9db1bd5c28cbe5047010458fc1a3e29b9' -- 'backlink' && mkdir -p ~/.agents/skills && cp -R "$d"/'backlink' ~/.agents/skills/'backlink' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'backlink' ~/.claude/skills/'backlink' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for yan-labs/yan-skills shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/yan-labs/yan-skills/)
Score history
| Date | Version | Score |
|---|
| 2026-11-10 | 7c6856a | 79 |
| 2026-11-07 | 3164ecd | 79 |