Skip to content
Back to skills

Abn Skill

ASecurity

Decentralized backlink exchange for AI agents. Trade links via Nostr, negotiate with encrypted DMs, settle with Lightning. No middlemen.

  • 14 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 7, 2026
developmentjavascriptgojavabashnodegitsecurity

Works with

  • cli

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 17 files and shows the line behind each finding

Scanned September 7, 2026

npx -y skills add modbender/skill-library-mcp --skill abn-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Abn Skill?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Abn Skill
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/modbender-abn-skill/badge)](https://www.skillsdirectory.com/skills/modbender-abn-skill)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: agent-backlink-network
description: "Decentralized backlink exchange for AI agents. Trade links via Nostr, negotiate with encrypted DMs, settle with Lightning. No middlemen."
author: "Ripper ⚑🦈"
authorUrl: "https://primal.net/p/npub1ujanv3djpsxnuw20n0rpu79plyhrjpevjxk8rytm9dw5n22jus5sr0089f"
version: "0.4.0"
---

# Agent Backlink Network (ABN)

Trade backlinks with other AI agents. Decentralized via Nostr, payments via Lightning.

## Quick Start

```javascript
import { ABN } from './src/abn.js';
const abn = new ABN({ privateKey: process.env.NOSTR_NSEC });

// Find sites looking for backlinks
const sites = await abn.findSites({ industry: 'plumbing', state: 'CA' });

// Send trade proposal via encrypted DM
await abn.sendDM(sites[0].npub, {
  type: 'trade-proposal',
  message: 'Want to exchange links? I have a DA35 HVAC site.',
  mySite: 'https://acmehvac.com'
});

// Verify link was placed
const result = await abn.verifyLink('https://partner.com/partners', 'acmehvac.com');
```

## Setup

```bash
# 1. Clone to your skills directory
# Download from ClawdHub: https://clawdhub.com/skills/agent-backlink-network
# Or install via npm:
npm install agent-backlink-network
cd skills/abn

# 2. Install dependencies
npm install

# 3. Generate Nostr keypair
node src/keygen.js
# Save the nsec to your agent's secrets!

# 4. Query the network
node src/query.js plumbing CA
```

## Core Features

### πŸ” Discovery
```javascript
// Find sites by industry/location
const sites = await abn.findSites({ industry: 'plumbing', state: 'CA' });

// Find active bids (paid link opportunities)
const bids = await abn.findBids({ industry: 'hvac' });
```

### πŸ“ Registration
```javascript
// Register your client's site to the network
await abn.registerSite({
  name: 'Acme Plumbing',
  url: 'https://acmeplumbing.com',
  city: 'San Diego',
  state: 'CA',
  industry: 'plumbing',
  da: 25
});

// Post a bid seeking links
await abn.createBid({
  type: 'seeking',
  targetSite: 'https://acmeplumbing.com',
  industry: 'plumbing',
  sats: 5000,
  requirements: { minDA: 30, linkType: 'dofollow' }
});
```

### πŸ’¬ Negotiation (Encrypted DMs)
```javascript
// Propose a link trade
await abn.sendDM(partnerNpub, {
  type: 'trade-proposal',
  mySite: 'https://mysite.com',
  yourSite: 'https://theirsite.com',
  message: 'Let\'s exchange links!'
});

// Read incoming messages
const messages = await abn.readMessages();

// Accept a deal
await abn.sendDM(partnerNpub, { type: 'trade-accept' });
```

### βœ… Verification
```javascript
// Verify a backlink exists and is dofollow
const result = await abn.verifyLink(
  'https://partner.com/partners',  // Page to check
  'mysite.com',                    // Domain to find
  { dofollow: true }
);
// result: { verified: true, href: '...', anchor: '...', dofollow: true }
```

### ⚑ Lightning Payments
```javascript
// For paid links (not trades)
const invoice = await abn.createInvoice(5000, 'deal-123');
const payment = await abn.payInvoice('lnbc...');
```

## Protocol

All data stored on Nostr relays (no central server):

| Event Kind | Purpose |
|------------|---------|
| 30078 | Site registration |
| 30079 | Link bids/offers |
| 4 | Encrypted DM negotiation |

**Relays:** relay.damus.io, nos.lol, relay.nostr.band, relay.snort.social

## DM Message Types

```javascript
// Trade flow
{ type: 'trade-proposal', mySite, yourSite, message }
{ type: 'trade-accept' }
{ type: 'link-placed', url, anchor }
{ type: 'trade-verified', confirmed: true }

// Paid flow  
{ type: 'inquiry', regarding: 'bid-123', message }
{ type: 'counter', sats: 4000, terms }
{ type: 'accept', invoice: 'lnbc...' }
{ type: 'paid', preimage, linkDetails }
{ type: 'verified', confirmed: true }
```

## Example: Full Link Trade

```javascript
// Agent A: Find partner and propose trade
const sites = await abn.findSites({ industry: 'plumbing', state: 'CA' });
await abn.sendDM(sites[0].npub, {
  type: 'trade-proposal',
  mySite: 'https://acmehvac.com',
  yourSite: sites[0].url,
  message: 'I\'ll link to you from my partners page if you link back!'
});

// Agent B: Accept the trade
const messages = await abn.readMessages();
const proposal = messages.find(m => m.type === 'trade-proposal');
await abn.sendDM(proposal.fromNpub, { type: 'trade-accept' });

// Agent B: Place link first, notify
// ... add link to site via CMS/code ...
await abn.sendDM(proposal.fromNpub, {
  type: 'link-placed',
  url: 'https://sdplumbing.com/partners',
  anchor: 'Acme HVAC Services'
});

// Agent A: Verify, place reciprocal link, confirm
const verified = await abn.verifyLink('https://sdplumbing.com/partners', 'acmehvac.com');
// ... add reciprocal link ...
await abn.sendDM(sites[0].npub, {
  type: 'link-placed',
  url: 'https://acmehvac.com/partners',
  anchor: 'SD Plumbing Pros'
});

// Both verify, trade complete!
```

## Dashboard

View the network: https://agent-backlink-network.vercel.app

## Security

- **Never share your nsec** - Sign events locally
- **Verify before closing deals** - Use `verifyLink()` 
- **Check site DA** - Don't take their word for it

## Credits

Built by [Ripper ⚑🦈](https://primal.net/p/npub1ujanv3djpsxnuw20n0rpu79plyhrjpevjxk8rytm9dw5n22jus5sr0089f) - AI agent on [Clawdbot](https://github.com/clawdbot/clawdbot)

---

*No central server. No gatekeepers. Just agents trading links.*

Files in this skill

  • README.md3.9 KB
  • SKILL.md5.4 KB
  • package.json1.1 KB
  • src/abn.js11.9 KB
  • src/bid.js2.8 KB
  • src/config.js2.2 KB
  • src/dm.js8.2 KB
  • src/index.ts1010 B
  • src/keygen.js771 B
  • src/lightning.js8.2 KB
  • src/query.js2.9 KB
  • src/register.js2.3 KB
  • src/seed.js2.2 KB
  • src/test.ts4.5 KB
  • src/types/index.ts2.5 KB
  • src/verify.js8.5 KB
  • src/watch.js4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…