---
page: backlink
sous-page: export-import
route: /backlink/export-import
statut: draft
version: 0.1
transverse-liées: [reservoir-data-model (TBD), sources, queue-workers (TBD), auth (TBD), conventions, i18n, design-system]
date: 2026-06-03
---

# CdC — `backlink/export-import`

> Même **moteur de miscibilité** que `keywords/export-import`, appliqué aux backlinks. Sources : **Majestic (TF/CF), Ahrefs (DR/referring domains), Moz (DA/PA)**. Import du **profil existant** (→ `backlink` *live*) et de **prospects** (→ `link_source` + `backlink` *prospect*). Export, dont **fichier Google Disavow**.

## 1. Objectif

Faire entrer/sortir sources et backlinks de façon **miscible** : convergence vers le modèle canonique (`link_source` global + `backlink` par site), métriques **taguées fournisseur** + `raw`, dédup de domaines.

## 2. Périmètre

- **Dans** : import **CSV/XLSX** + **abstraction connecteur API** (phasée) ; mapping profiles (Majestic/Ahrefs/Moz + custom) ; **auto-détection (R1)** ; **destination au choix (R1)** (Reservoir global / profil d'un site / prospects) ; preview/diff ; dédup/merge de domaines ; `raw`/provenance ; **export** (canonique, fidèle-source, **Google Disavow**) ; round-trip **Search Console** ; jobs async ; dry-run.
- **Hors** : modèle de données (→ transverse) ; monitoring (→ `planning`).

## 3. User stories *(persona : netlinker)*

- J'importe un **export Ahrefs de mon profil** → mes liens deviennent des `backlink` *live* rattachés au site.
- J'importe une **liste de prospects Majestic** → sources globales + prospects.
- J'**exporte le fichier disavow** au format Google.
- Je crée un **mapping custom** pour un outil non connu et le réutilise.

## 4. Fonctionnalités

- F1 — Upload **CSV/XLSX** (et, phasé, **pull API**) → job.
- F2 — **Auto-détection** (Majestic/Ahrefs/Moz) → mapping pré-rempli ; **destination au choix** (Reservoir global / profil d'un site / prospects) — R1.
- F3 — **Mapping profiles** (presets + custom).
- F4 — **Preview/diff** (créés / fusionnés / conflits) avant commit.
- F5 — **Dédup de domaines** (`www`/non-`www`, sous-domaines).
- F6 — `raw` + **provenance**.
- F7 — **Export** : canonique CSV, fidèle-source, **Google Disavow**.
- F8 ⭐ — **Round-trip Search Console** : importer le rapport de liens, comparer.
- F9 — **Jobs async** + dry-run/validation.

## 5. UI / écrans

- Assistant import (source/upload → mapping → **destination** → preview → commit) ; liste des jobs ; éditeur de mapping ; assistant export (dont **disavow**). Conventions **R1/R2**. Tokens `design.md`.

## 6. Données & actions

- **Actions** : importer (auto-détecté, **destination au choix**), mapper, prévisualiser, committer, exporter (dont **disavow**), planifier (API).

## 7. Modèle de données *(réutilise le socle)*

- `link_source`, `link_source_metric(... provider, raw)`, `backlink(... status)`. Import **profil** → `backlink.status = live` ; import **prospects** → `prospect`. `mapping_profile`, `import_job`, `export_job` (cf `keywords/export-import`).
- **Idempotence** : ré-import = nouveau snapshot, pas de doublon de domaine.

## 8. API Hono

- `GET /connectors` · `GET|POST /mapping-profiles`
- `POST /backlinks/imports` *(destination : `reservoir` | `site:profil` | `site:prospects`)* → job
- `GET /backlinks/imports/:jobId` · `GET …/preview` · `POST …/commit`
- `POST /backlinks/exports` *(format : `canonique` | `source` | `disavow`)* → job
- `GET /sites/:siteId/backlinks/disavow`

## 9. Capacités requises *(fonctionnel — mapping modules TBD)*

Ingestion multi-format (fichier + API) · mapping/normalisation · **dédup de domaines** · jobs async · export (dont **disavow**) · planification API.

## 10. Tools / capacités MCP

- `bl_import_start` (write) · `bl_import_preview` (read) · `bl_import_commit` (write)
- `bl_export_start` (write) · `bl_disavow_export` (read) · `bl_connectors_list` (read)

> Privé vs public-limité : **TBD**.

## 11. i18n

- UI localisée ; langue de la source = dimension data.

## 12. Qualité *(réf. fiches des 128 par slug)*

- **Sécu** : validation fichiers (`x-content-type-options`), **secrets API** (`_transverse/auth`), accès données globales, `cookie-attributes`, auth. **Perf** : streaming + jobs. **A11y** : assistant clavier. **Indexation** : noindex.

## 13. Critères d'acceptation

- [ ] Import Ahrefs **profil** crée des `backlink` *live* rattachés au site choisi.
- [ ] Import Majestic **prospects** crée `link_source` + `backlink` *prospect*.
- [ ] **Auto-détection** + **destination au choix** fonctionnent (R1).
- [ ] **Export disavow** produit un fichier au **format Google**.
- [ ] Ré-import = snapshot, sans dupliquer le domaine.

## 14. Dépendances & risques · questions ouvertes

- **Dépend de** : `_transverse/sources`, `_transverse/reservoir-data-model`, `_transverse/queue-workers`, `_transverse/auth`, `backlink/reservoir`.
- **Questions ouvertes** : sources API officielles (Majestic/Ahrefs/Moz) ? mapping du rapport Search Console ? format disavow exact (par domaine / par URL).
