backlinkflow
v0.5.0
Published
LinkFlow — zero-cost backlink & directory submission engine: vetted directory database, AI-tailored submission payloads, tracker, and proof-of-submission reports.
Maintainers
Readme
BacklinkFlow
Zero-cost backlink & directory submission engine for indie hackers.
1,123 vetted directories · AI-tailored submission copy · Playwright browser automation · proof-of-submission reports — no SaaS, no credits, no $79 upsell.
TL;DR — Submitator, ListingBott, BoringLaunch charge $29–499 to do what BacklinkFlow does for free: a curated directory list, AI-generated per-directory copy, browser automation, and a status report. The only thing you bring is your own AI endpoint (OmniRoute, OpenAI, or any OpenAI-compatible API). Live-verified. MIT licensed.
The what:
| | What it does | How |
|---|---|---|
| Database | 1,123 directories across 9 categories (SaaS, AI, travel, startup, general, community, reddit, etc.) | Merged from 11 open-source lists, deduped, live-verified |
| AI copy | Per-directory tagline + description matching your site's voice | Your AI endpoint (OpenAI-compatible) |
| Automation | Real browser submissions via Playwright (--go) | Headless Chromium + smart field detection |
| Proof | Screenshots + per-directory markdown report | .linkflow/report.md + .linkflow/proofs/*.png |
| Curation | db:review flags dead links / homepage-as-submit | Idempotent regeneration from sources |
| Cost | $0 (you provide the AI endpoint, typically free) | No paid APIs, no SaaS subscription |
Why BacklinkFlow?
Every paid directory-submission service is the same three things wrapped in a dashboard:
- A list of where to submit — this is open data
- Per-directory copy — this is a 5-line AI call
- A status report — this is a JSON file + a markdown table
BacklinkFlow gives you all three, plus actual browser automation for sites with open forms. The moat is honesty: 876 directories live-verified, 221 marked dead with reason, 26 marked paid. No padding with self-owned link farms. No "AI" that means "Army of Indians."
vs competitors:
| | BacklinkFlow | Submitator | ListingBott | BoringLaunch |
|---|---|---|---|---|
| Directories | 1,123 (876 alive) | ~150 | ~250 | ~200 |
| Cost | $0 | $29–79 | $499 | $249 |
| Time to submit | 24–48h (with --go) | 24–48h | 1 month | 7 days |
| Your AI endpoint | ✅ | ❌ | ❌ | ❌ |
| Self-hostable | ✅ | ❌ | ❌ | ❌ |
| Source list | ✅ CREDITS.md | ❌ proprietary | ❌ | ❌ |
| Badges handled | manual (v0.3) | ✅ | ✅ | ❌ |
| Open source | ✅ MIT | ❌ | ❌ | ❌ |
Install
# from source
git clone https://github.com/imsankz/backlinkflow.git
cd linkflow && npm install && npm run build
# or (when published)
npm install -g linkflowQuick start
# 1. Create config
backlinkflow init
# 2. Edit linkflow.config.json + .env.local (AI endpoint)
# AI_BASE_URL=http://192.168.0.254:20128/v1 (OmniRoute)
# AI_API_KEY=... AI_MODEL=auto/best-free
# 3. Explore the database
backlinkflow stats
backlinkflow list --category startup --limit 10
backlinkflow search "product hunt"
# 4. Generate AI-tailored submission copy (no submission)
backlinkflow payload https://yoursite.com --directory "Future Tools"
# 5. Plan submissions (dry-run — nothing recorded)
backlinkflow submit https://yoursite.com --dry-run --limit 10
# 6. Real automation — Playwright browser submits for you
backlinkflow submit https://yoursite.com --go --limit 10
# 7. Track + report
backlinkflow status
backlinkflow report # → .linkflow/report.md (Submitator-style proof)Multiple sites, one tool
BacklinkFlow is generic — bring your own site config. Each product = one config file:
# SaaS product
backlinkflow submit https://kreatorlane.com --config examples/linkflow.config.kreatorlane.json --category startup --go --limit 5
# Travel blog
backlinkflow submit https://chasingwhereabouts.com --config examples/linkflow.config.chasingwhereabouts.json --category travel --go --limit 5No hardcoded sites. Examples in examples/.
Commands
| Command | Description |
|---|---|
| backlinkflow list [--category X] [--limit N] | List directories in the database |
| backlinkflow search <query> | Search directories by name/notes/URL |
| backlinkflow submit <url> [--dry-run] [--limit N] [--category X] [--go] [--config file.json] | Generate payloads + submit. --go = real Playwright automation |
| backlinkflow payload <url> [--directory X] | AI-tailored submission copy only |
| backlinkflow status | Tracker summary (submitted/pending/failed) |
| backlinkflow report | Regenerate proof-of-submission report |
| backlinkflow stats | Database stats (counts by category, alive/dead) |
| backlinkflow indexnow <url> | Ping IndexNow (Bing/Yandex/Naver/Seznam) + Google for instant indexing |
| backlinkflow awesome <repo> --dry-run | Generate awesome-list PR snippet (never opens PRs) |
| backlinkflow measure <url> | Measure backlinks via free Common Crawl index |
| backlinkflow badge [list\|show <name>\|install] | Badge registry + install instructions (the high-DR moat) |
| backlinkflow db:review | Flag DB quality issues (dead links, homepage-as-submit) |
| backlinkflow db:regenerate | Rebuild DB from source lists |
| backlinkflow init | Write config template |
Database
ai: 331 startup: 612 general: 80 travel: 26
ai-zh: 33 general-zh: 14 community: 13 reddit: 10 awesome: 4
TOTAL: 1,123 · auto-submittable: 183 · alive: 876 · dead: 221 · paid: 26Every URL was live-verified via concurrent HTTP + DNS resolution — 76 truly dead (DNS), 79 with dead submit paths (HTTP 404), 6 connection refused, 29 timeout-confirmed. Soft-errors (402/500/526) are flagged but not killed (may be transient).
Source coverage (11 lists, all credited in CREDITS.md):
| Source | Stars | Type | |---|---|---| | s87343472/backlink-pilot | ⭐348 | Base target set (rich metadata) | | mmccaff/PlacesToPostYourStartup | ⭐6,881 | Canonical "Ask HN" directory list | | theshubh77/awesome-saas-directories | ⭐56 | SaaS launch platforms | | best-of-ai/ai-directories | ⭐868 | AI tool directories | | volodstaimi/Startup-Launch-List | ⭐8 | 580+ startup directories | | BossChow/ultimate-submit-list | ⭐151 | Top-100 directory table | | rushout09/directory-submission-sites | ⭐12 | 250+ free sites | | submitdirectories/submitdirectories | ⭐9 | AI/SaaS/Tool/Startup lists | | nilandev/startup-directories | ⭐26 | Subreddits + directories | | mahseema/awesome-saas-directories | ⭐242 | SaaS directories | | DirectorySurf/awesome-launch-platforms | ⭐252 | Launch platforms |
Per-entry provenance is in the data itself: notes: [from <source>] in the YAML.
Configuration
linkflow.config.json:
{
"siteName": "My Product",
"siteUrl": "https://example.com",
"siteDescription": "A short, honest description.",
"tags": ["saas", "devtools"],
"contentDomain": "SaaS product",
"writingSample": "2-3 sentences in your site voice",
"ai": {
"provider": "openai",
"baseUrl": "http://192.168.0.254:20128/v1",
"apiKey": "your-omniroute-key",
"model": "auto/best-free",
"maxCallsPerRun": 20
},
"pacing": { "minSeconds": 60, "perDay": 10 }
}.env.local (overrides config):
AI_PROVIDER=openai
AI_BASE_URL=http://192.168.0.254:20128/v1
AI_API_KEY=sk-...
AI_MODEL=auto/best-freeWorks with any OpenAI-compatible endpoint:
- OmniRoute (free, local)
- OpenAI, Anthropic, Groq, OpenRouter
- LM Studio, Ollama, vLLM (local)
- Any custom server
The AI client is SSE-tolerant — works with providers that stream even when stream: false is requested (OmniRoute).
Database curation
The directory database is the product's moat. scripts/regenerate-db.py rebuilds it idempotently from the 11 source lists (annotated [from <source>]). backlinkflow db:review flags quality issues.
Review verdict:
- 1,123 entries, 9 categories — full coverage from all 11 sources
- 876 verified alive — every URL live-checked via
scripts/check-urls.py(concurrent HTTP + DNS verification) - 221 verified dead — marked
status: deadwith reason - 26 paid — carry explicit
status: paid - 183 auto-submittable (real form adapters via Playwright)
- ~420 "homepage-as-submit" flags are alive directories whose real submit pages need discovery — ongoing curation task
Curation workflow:
python3 scripts/check-urls.py /tmp/linkflow-urls.txt # live-check all URLs
python3 scripts/apply-urlcheck.py # mark verified-dead in DB
backlinkflow db:review # see remaining flags
backlinkflow db:regenerate # rebuild from sources (idempotent)
backlinkflow stats # confirm countsThe flow series
BacklinkFlow is the third in a series of zero-cost CLI tools, all MIT, all npm-published:
| Tool | Job | Engines | npm |
|---|---|---|---|
| SECflow | Security scanning for AI-driven repos | gitleaks, trivy, npm audit, custom regex | secflow |
| SeoFlow | AI-powered SEO pipeline (audit, internal links, content gen, GSC) | GSC, PSI, Pexels, Ubersuggest, 6 LLMs | seoflow |
| BacklinkFlow | Backlink & directory submission automation | Your AI endpoint + Playwright | backlinkflow (this repo) |
Same DNA across all three: free engines + your own AI agent as the "smart" layer + npm-published + zero-cost.
Architecture
backlinkflow submit <url> --go
↓
config loader (linkflow.config.json + .env.local)
↓
payload generator (AI + template fallback)
↓
database (1,123 directories, 9 categories)
↓
for each target:
↓
preflight HTTP check ── dead ──→ mark failed
↓
launch Chromium ──→ navigate submit URL
↓
detect fields (name/url/email/description)
↓
site adapter (generic | saashub | ph)
↓
fill + submit
↓
verify (success message, redirect)
↓
screenshot → .linkflow/proofs/
↓
record → .linkflow/tracker.json
↓
report → .linkflow/report.md
↓
pacing → next directory (per-day limit)src/
index.ts # CLI entry
config.ts # config + .env loader
database.ts # YAML loader + search
payload.ts # AI + template payload gen
ai.ts # OpenAI-compat client (SSE-tolerant)
tracker.ts # submission history
report.ts # proof-of-submission markdown
types.ts # shared interfaces
engine/
browser.ts # Playwright wrapper
fields.ts # smart field detection
adapters.ts # site-specific + generic adapter
submit.ts # orchestration: preflight → fill → verify
data/directories.yaml # 1,123 vetted directories
scripts/
regenerate-db.py # idempotent DB rebuild
review-db.py # quality flagger
check-urls.py # live URL checker
apply-urlcheck.py # mark verified-dead
sources/ # 18 vendored source files
examples/ # 2 example site configsRoadmap
- [x] v0.1 — directory DB, AI payloads, tracker, reports
- [x] v0.2 — Playwright automation engine (
--go), site adapters, pacing, proof screenshots - [x] v0.3 — IndexNow pinger, awesome-list PR generator
- [x] v0.4 — Common Crawl backlink measurement
- [x] v0.5 — Badge handling (registry + install instructions — the high-DR moat)
- [ ] v0.6 — Automated badge install (inject into site footer via config path)
Badge handling (v0.5)
The highest-DR directories are badge-gated: they only accept your listing if you display their badge. Submitator's "never paste a badge again" is their killer feature. BacklinkFlow does it open-source:
backlinkflow badge list # 10 badge-requiring dirs (7 required)
backlinkflow badge show "StartupFame" # HTML + JSX snippet for one badge
backlinkflow badge install --framework nextjs # full install instructions + all snippets
backlinkflow badge install --framework html # plain HTML variantBadges open DR 80+ directories (StartupFame DR83, Dang.ai DR81, Turbo0 DR80) and jump submission queues. Registry lives in data/badges.yaml — add yours with a PR. Badge URLs are best-effort; verify they load before submitting.
License
MIT (see LICENSE). Source data compiled from 11 open-source projects — see CREDITS.md for per-source licenses and provenance.
☕ Support
BacklinkFlow is free forever. If it saves you $79 (or 40 hours), buy me a coffee — it funds more free tools.
