Starter kit
Brancher Outline à un blog Astro existant
Tu as déjà un blog Astro en prod avec ton propre design ? Garde tout, change juste la source du contenu. ~30 minutes pour intégrer.
En 5 étapes
- 1
Installer marked
npm install marked (ou bun add / pnpm add)
- 2
Copier le fichier outline.ts
Le client API, ~150 lignes, aucune autre dépendance
- 3
Configurer 3 variables d'env
OUTLINE_API_URL · OUTLINE_API_TOKEN · OUTLINE_COLLECTION_IDS
- 4
Adapter tes pages list + détail
getAllDocuments() + getDocument() + render markdown
- 5
Builder
npm run build → site statique généré depuis Outline au build
Variables d'environnement
À ajouter dans .env à la racine :
OUTLINE_API_URL=https://ton-outline.tld/api
OUTLINE_API_TOKEN=ol_api_xxxxxxxxxxxxx
OUTLINE_COLLECTION_IDS=uuid-de-ta-collection Le token se crée dans Outline → Settings → Personnal Token. L'ID de collection se trouve dans l'URL Outline d'une collection.
Code minimal — page liste
---
import { getAllDocuments } from '../lib/outline';
const posts = await getAllDocuments();
---
<ul>
{posts.map((p) => (
<li>
<a href={`/blog/${p.urlId}`}>
<h2>{p.title}</h2>
</a>
</li>
))}
</ul> Code minimal — page détail
---
import { getAllDocuments, getDocument } from '../lib/outline';
import { renderMarkdownEnhanced } from '../lib/outline-helpers';
export async function getStaticPaths() {
const docs = await getAllDocuments();
return docs.map((d) => ({
params: { urlId: d.urlId },
props: { docId: d.id },
}));
}
const doc = await getDocument(Astro.props.docId);
const html = renderMarkdownEnhanced(doc.text);
---
<article>
<h1>{doc.title}</h1>
<div set:html={html} />
</article> Helpers fournis dans le kit
getAllDocuments() Liste des docs publiés (toutes collections configurées) getDocument(idOrUrlId) Détail d'un document getUser(userId) Infos auteur (avec cache) excerpt(md, maxLen) Texte court pour les listes readingTime(md) Minutes de lecture estimées extractTags(md) Tags depuis "Tags: foo, bar" extractCoverImage(doc) Cover Outline native ou 1ère image du body renderMarkdown(md) Markdown → HTML (simple) renderMarkdownEnhanced(md) Markdown → HTML avec callouts + embeds vidéo injectTocIds(html) Ajoute IDs sur h2/h3 + retourne le sommaire Auto-rebuild via webhook
Outline supporte les webhooks signés HMAC (format Stripe-style t=...,s=...).
Configure un webhook dans Outline pointant vers un Deploy Hook (Cloudflare Pages, Vercel, Netlify)
OU vers un mini service de relais qui vérifie la signature avant de trigger le rebuild.
Exemple FastAPI / Node prêt à l'emploi
Voir le doc complet : guide complet de mise en place webhook + vérif HMAC + anti-replay + debounce.
Le service matrix-webhook du
repo Cybtek Matrix sert d'exemple de référence (Python + Docker socket).
Conventions Outline supportées
Tags
Ligne au début du doc : Tags: lean, devops, retrospective
Callouts GitHub-style
> [!INFO]
> Voici une note utile.
> [!WARN]
> Voici un avertissement.
> [!TIP]
> Voici une astuce. Embeds vidéo automatiques
Colle une URL YouTube / Vimeo / Loom / Figma seule sur une ligne → iframe responsive au build.
Aller plus loin
- – Recevoir Cybtek Matrix complète : Outline + Astro + auto-rebuild + multi-tenant clé en main
- – Guide complet du repo : 5 templates premium
- – Documentation webhooks détaillée : voir
infra/integration-kit/docs/webhook-setup.md