Wiki
Référence OpenContent Engine — pipeline, dashboard, scrapers et intégrations
Tout pour faire tourner OpenContent : fonctionnement du pipeline, rôle de chaque page du dashboard, et exploitation des scrapers dont TikTok et Facebook.
01
Vue d'ensemble
OpenContent Engine ingère des tendances live via des microservices scrapers, les filtre avec Mistral AI, génère des packs de contenu OpenPro et envoie un digest Telegram. Le dashboard est votre salle de contrôle.
Démarrage rapide
02
Pipeline quotidien
Le pipeline exécute ingestion → filtre → génération → digest. Déclenchez-le depuis le Centre de commande ou via POST /api/v1/jobs/daily-run.
- 1Ingestion : récupère les tendances de tous les scrapers activés
- 2Filtre : score de pertinence avec filter-v1.md + brand-rules.md
- 3Génération : accroches, scripts, légendes avec generate-v1.md
- 4Digest : résumé Telegram des idées approuvées
03
Pages du dashboard
Chaque entrée du menu couvre une étape du workflow contenu.
- 1Aujourd'hui — briefing du jour et stats rapides
- 2File — approuver, ignorer ou publier les packs générés
- 3Backlog — tendances filtrées mais à sauver les jours calmes
- 4Historique & Packs — parcourir les exécutions et contenus passés
- 5Tendances brutes — tendances ingérées non filtrées
- 6Exécutions — timeline pipeline et résultats scrapers
04
Prompt Lab
Modifiez les prompts filtre, génération et marque directement dans le dashboard. Les changements sont enregistrés dans prompts/ du repo.
- 1filter-v1.md — règles de scoring de pertinence
- 2generate-v1.md — format de sortie des packs contenu
- 3brand-rules.md — ton et garde-fous OpenPro partagés
05
Flotte de scrapers
Services FastAPI indépendants exposant GET /health et GET /trends. Configurez les URLs avec SCRAPER_BASE_URL_* dans .env.local. Les scrapers sociaux (TikTok, Instagram, Facebook) exposent aussi POST /scrape.
- 1hackernews, rss-tech, google-trends — sources pipeline par défaut
- 2tiktok (:8085), instagram (:8086), facebook (:8087) — scrapers interactifs dans le dashboard
- 3Santé visible sur Scrapers et Centre de commande
- 4Démarrage local : bash env/scripts/up.sh scrapers
06
Vue d'ensemble
Le service TikTok tourne sur le port 8085 (profil Docker tiktok). Le dashboard proxy via /api/tiktok/*. Tous les scrapers utilisent Chromium headless.
07
Scraper vidéo
Scrapez des vidéos TikTok par URL. Retourne légende, stats, métadonnées créateur, musique/vidéo et téléchargements optionnels.
Le scraper vidéo TikTok extrait des données structurées à partir des vidéos que vous choisissez.
- Données vidéo : légende, URL, vues, cœurs, commentaires, partages, mentions, pays, horodatage, statut pub, hashtags, métadonnées vidéo et musique.
- Infos créateur : nom, ID, avatar, bio, statut du compte, abonnés, abonnements, likes donnés/reçus, etc.
Comment scraper des vidéos TikTok
- Collez une ou plusieurs URLs vidéo TikTok dans le formulaire ci-dessous.
- Activez optionnellement les vidéos liées, téléchargements ou sous-titres.
- Cliquez sur Lancer le scrape et attendez les résultats.
- Consultez le tableau ou téléchargez le JSON brut.
Utilisations possibles des données
- Analyse de sentiment et avis produits authentiques
- Données pour recherche et social listening
- Analyse de tendances, campagnes virales et contenus de créateurs
- Repérage de contenus non vérifiés à forte valeur publique
- Préparation ou analyse d'une campagne marketing TikTok
Exemple d'entrée
{
"postURLs": [
"https://www.tiktok.com/@apifytech/video/7398101551744552225"
],
"shouldDownloadCovers": false,
"shouldDownloadSlideshowImages": false,
"shouldDownloadSubtitles": false,
"shouldDownloadVideos": false
}Exemple de sortie
{
"authorMeta.name": "apifytech",
"text": "📣 Yes, you can scrape job listings #data in a minute!! #webscraping #techtiktok #job #automation ",
"diggCount": 15,
"shareCount": 0,
"playCount": 243,
"commentCount": 0,
"videoMeta.duration": 23,
"musicMeta.musicName": "original sound",
"musicMeta.musicAuthor": "apifytech",
"createTimeISO": "2024-08-01T09:32:32.000Z",
"webVideoUrl": "https://www.tiktok.com/@apifytech/video/7398101551744552225"
}La transcription audio (options Apify TRANSCRIBE_*) n'est pas supportée localement — téléchargement de sous-titres uniquement.
08
Analytics hashtag
Scrapez les analytics TikTok Creative Center par hashtag, pays et période (7/30/120 jours).
TikTok Hashtag Analytics extrait les données Creative Center pour les hashtags, le pays et la période choisis.
- Données vidéo : vidéos liées, URLs, hashtags recommandés, vues totales, nombre de posts, URL hashtag.
- Données audience : âges, proportions, intérêts, pays et labels.
- Autre : info pays, industrie, longévité pub et tendance.
Utilisations possibles
- Analyser tendances, campagnes virales et contenus de créateurs
- Préparer ou analyser une campagne marketing TikTok
- Analyse de sentiment et avis produits authentiques
- Données pour recherche et social listening
Comment exporter les analytics hashtag
- Saisissez un ou plusieurs hashtags, le pays et la période.
- Cliquez sur Lancer le scrape et attendez les données Creative Center.
- Consultez le tableau analytics ci-dessous.
- Téléchargez le JSON brut pour export CSV/Excel.
Exemple d'entrée
{
"adsCountryCode": "us",
"adsTimeRange": "120",
"hashtags": [
"thailand",
"coffee"
]
}Exemple de sortie
{
"hashtagName": "thailand",
"period": "7",
"countryCode": "US",
"publishCnt": 3771,
"videoViews": 25822635,
"publishCntAll": 5828545,
"videoViewsAll": 84739142571,
"isPromoted": false,
"audienceAges": [
{
"score": 67,
"ageLevel": 3
}
],
"relatedHashtags": [
{
"hashtagName": "bangkok"
}
]
}09
Hashtags, profils & recherche
L'onglet scraper vidéo supporte aussi hashtags, profils et recherche via POST /scrape.
- 1Hashtags : vidéos contenant un hashtag
- 2Profils : vidéos, reposts, abonnés, abonnements
- 3Recherche : top, vidéos seules ou profils seuls
- 4Modes partagés : resultsPerPage, filtres dates, options de téléchargement
10
Utilisation API
Appelez le scraper directement sur SCRAPER_BASE_URL_TIKTOK (défaut http://localhost:8085). Health : GET /health. Tendances pipeline : GET /trends?limit=50.
/health/trends?limit=50/scrape{
"searchQueries": [
"recruitment tips"
],
"resultsPerPage": 20
}/hashtag-analytics{
"hashtags": [
"fyp"
],
"adsCountryCode": "US",
"adsTimeRange": "7"
}11
Formats de sortie
Toutes les réponses JSON avec items[] et meta{}. Utilisez le dump JSON du dashboard ou branchez votre ETL. Vidéos = format Apify clockworks/tiktok-scraper. Analytics = format Apify hashtag analytics.
12
Vue d'ensemble
Le service Facebook tourne sur le port 8087 (profil Docker facebook). Le dashboard proxy via /api/facebook/*. Utilise Playwright avec cookies de session optionnels — pas de fenêtre navigateur visible.
13
Recherche de pages
Trouvez des pages Facebook par catégorie d'activité et localisation optionnelle. Chaque résultat est enrichi avec les contacts de l'onglet /about.
- 1Entrée : categories (requis), locations (optionnel), resultsLimit
- 2Sortie : pageName, pageUrl, email, phone, website, likes, followers, rating, categories
- 3Découverte : recherche Facebook native si FACEBOOK_COOKIES est défini, sinon Ad Library public
- 4Endpoint : POST /scrape avec le champ categories
Deux modes partagent le même endpoint POST /scrape — utilisez categories pour les pages ou searchQuery pour les publications hashtag.
Modes scraper
- Recherche de pages — trouvez des pages par catégorie et localisation optionnelle, enrichies via /about.
- Publications hashtag — parcourt le fil public et enrichit chaque publication avec réactions, commentaires, partages et médias.
Entrée recherche de pages
{
"categories": [
"Graphic Designer"
],
"locations": [
"Montreal"
],
"resultsLimit": 5
}Entrée hashtag
{
"searchQuery": "travel",
"maxItems": 20
}Exemple résultat page
{
"pageName": "Jordanmcinnisdesigns",
"pageUrl": "https://www.facebook.com/Jordanmcinnisdesigns/",
"email": "mcinnisj.design@gmail.com",
"phone": "+1 514-716-0922",
"likes": 86,
"followers": 86,
"categories": [
"Page",
"Graphic Designer"
]
}Exemple résultat publication
{
"postId": "122168152748145259",
"user": {
"name": "Louie & Todd",
"id": "61554357771285",
"url": "https://www.facebook.com/profile.php?id=61554357771285"
},
"url": "https://www.facebook.com/reel/486496894347213/",
"text": "The best travel buds we could have asked for… #cats #travel",
"topReactions": {
"Like": 96238,
"Love": 15821
},
"commentsCount": 3184,
"sharesCount": 3296,
"videoViewCount": 3982573,
"time": "2024-09-01 22:02:05"
}Définissez FACEBOOK_COOKIES dans .env.local pour la recherche Facebook native. Sans cookies, la découverte passe par l'Ad Library public.
14
Scraper hashtag
Scrapez les publications Facebook publiques d'un fil hashtag. Retourne texte, infos auteur, métriques d'engagement et métadonnées média.
- 1Entrée : searchQuery (sans #), maxItems
- 2Sortie : postId, user, url, text, topReactions, commentsCount, sharesCount, videoViewCount, attachments
- 3Parcourt la page hashtag publique et enrichit chaque URL de publication
- 4Endpoint : POST /scrape avec searchQuery — exclusif avec categories
Deux modes partagent le même endpoint POST /scrape — utilisez categories pour les pages ou searchQuery pour les publications hashtag.
Modes scraper
- Recherche de pages — trouvez des pages par catégorie et localisation optionnelle, enrichies via /about.
- Publications hashtag — parcourt le fil public et enrichit chaque publication avec réactions, commentaires, partages et médias.
Entrée recherche de pages
{
"categories": [
"Graphic Designer"
],
"locations": [
"Montreal"
],
"resultsLimit": 5
}Entrée hashtag
{
"searchQuery": "travel",
"maxItems": 20
}Exemple résultat page
{
"pageName": "Jordanmcinnisdesigns",
"pageUrl": "https://www.facebook.com/Jordanmcinnisdesigns/",
"email": "mcinnisj.design@gmail.com",
"phone": "+1 514-716-0922",
"likes": 86,
"followers": 86,
"categories": [
"Page",
"Graphic Designer"
]
}Exemple résultat publication
{
"postId": "122168152748145259",
"user": {
"name": "Louie & Todd",
"id": "61554357771285",
"url": "https://www.facebook.com/profile.php?id=61554357771285"
},
"url": "https://www.facebook.com/reel/486496894347213/",
"text": "The best travel buds we could have asked for… #cats #travel",
"topReactions": {
"Like": 96238,
"Love": 15821
},
"commentsCount": 3184,
"sharesCount": 3296,
"videoViewCount": 3982573,
"time": "2024-09-01 22:02:05"
}Définissez FACEBOOK_COOKIES dans .env.local pour la recherche Facebook native. Sans cookies, la découverte passe par l'Ad Library public.
15
Utilisation API
Appelez le scraper directement sur SCRAPER_BASE_URL_FACEBOOK (défaut http://localhost:8087). Santé : GET /health. Tendances pipeline : GET /trends?limit=50.
/health/trends?limit=50/scrape{
"categories": [
"Graphic Designer"
],
"locations": [
"Montreal"
],
"resultsLimit": 10
}/scrape{
"searchQuery": "travel",
"maxItems": 20
}16
Formats de sortie
Toutes les réponses retournent du JSON avec items[] et meta{}. meta.scrapeMode indique pages ou hashtag. Utilisez le panneau JSON brut du dashboard ou branchez votre ETL.
17
Développement local
Tournez sans Docker avec SQLite et Celery synchrone (CELERY_EAGER=1).
- 1cp .env.local.example .env.local et définir MISTRAL_API_KEY
- 2Orchestrateur sur :8000 · Dashboard sur :3000
- 3Les scrapers doivent tourner — pas de données mock
- 4Doc API sur http://localhost:8000/docs