Extension Chrome qui extrait le contenu principal d'une page web et le sauvegarde dans Anytype en Markdown, avec un tag "clipping" automatique.
Contrairement aux extensions existantes qui capturent la page entiere (nav bars, pubs, icones reseaux sociaux...), Anytype Clipper utilise Defuddle (la meme lib que l'Obsidian Web Clipper) pour extraire uniquement le contenu pertinent.
- Extraction intelligente — Defuddle supprime automatiquement nav bars, pubs, boutons sociaux, footers
- Conversion Markdown — Le contenu HTML est sanitize (DOMPurify) et converti en Markdown propre (Turndown)
- Edition avant sauvegarde — Modifier le titre, l'auteur et les tags dans le popup avant de clipper
- Selection manuelle — Si l'extraction auto echoue, selectionnez du texte sur la page et reclipez
- Tag "clipping" automatique — Chaque clip est tague pour un filtrage facile dans Anytype
- Metadonnees enrichies — Auteur, date de publication, site source, nombre de mots
- Anytype desktop (version 0.39+) lance sur votre machine
- L'API locale Anytype doit etre accessible sur
http://localhost:31009 - Node.js 18+ (pour builder depuis les sources)
# Cloner le repo
git clone https://github.com/VOTRE_USER/anytype-clipper.git
cd anytype-clipper
# Installer les dependances
npm install
# Builder l'extension
npm run buildPuis dans Chrome :
- Aller dans
chrome://extensions/ - Activer le Mode developpeur (toggle en haut a droite)
- Cliquer Charger l'extension non empaquetee
- Selectionner le dossier
dist/
- Cliquer sur l'icone Anytype Clipper dans la barre d'outils Chrome
- Cliquer Se connecter a Anytype
- Un code a 4 chiffres s'affiche dans l'app Anytype desktop — saisissez-le
- Choisir votre space par defaut
- C'est pret ! Naviguez sur un article et cliquez sur l'icone pour clipper
- Naviguez sur une page web (article, blog, doc...)
- Cliquez sur l'icone Anytype Clipper
- Verifiez/editez le titre, l'auteur et les tags
- Cliquez Clipper dans Anytype
- L'objet est cree dans votre space avec le contenu en Markdown
Si l'extraction automatique ne fonctionne pas (page dynamique, SPA...) :
- Selectionnez le texte souhaite sur la page
- Cliquez sur l'icone Anytype Clipper
- Le texte selectionne sera utilise a la place de l'extraction auto
# Build en mode watch (rebuild automatique a chaque modification)
npm run dev
# Verification des types TypeScript
npm run typecheck
# Build de production
npm run buildsrc/
background.ts — Service worker : communication API Anytype
content.ts — Content script : extraction Defuddle dans la page
popup/ — Interface du popup (preview, edit, clip)
settings/ — Page de configuration (space, deconnexion)
utils/
anytype-api.ts — Client API REST Anytype (auth, CRUD)
extractor.ts — Wrapper Defuddle + selection manuelle
markdown.ts — Pipeline DOMPurify + Turndown (HTML → Markdown)
storage.ts — Helpers chrome.storage.local
types/
messages.ts — Types TypeScript pour les messages inter-composants
Popup ──inject──> Content Script (Defuddle dans le DOM)
| |
|<──── extracted ────┘
|
|──message──> Background Service Worker
|
|──fetch──> Anytype API (localhost:31009)
- TypeScript + Manifest V3
- Defuddle — extraction de contenu (meme lib que l'Obsidian Clipper)
- DOMPurify — sanitization HTML
- Turndown — conversion HTML → Markdown
- Vite — build tool
L'extension communique avec l'API REST locale d'Anytype :
POST /v1/auth/challenges— Initier le pairingPOST /v1/auth/api_keys— Echanger le code contre un tokenGET /v1/spaces— Lister les spacesPOST /v1/spaces/{id}/objects— Creer un objet
Documentation : https://developers.anytype.io/
MIT