{"id":3452396,"date":"2026-06-16T07:00:56","date_gmt":"2026-06-16T05:00:56","guid":{"rendered":"https:\/\/jng-web.com\/labo\/?p=3452396"},"modified":"2026-03-22T10:01:46","modified_gmt":"2026-03-22T09:01:46","slug":"script-pour-generer-100-pages-en-1-clic","status":"publish","type":"post","link":"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/","title":{"rendered":"Script pour g\u00e9n\u00e9rer 100 pages en 1 clic"},"content":{"rendered":"<div class=\"advads-avant-le-contenu\" id=\"advads-2478304881\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-4944504088214075\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-4944504088214075\" \ndata-ad-slot=\"4514395581\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div><div class=\"advads-test\" style=\"margin-left: auto;margin-right: auto;text-align: center;\" id=\"advads-2125853988\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-4944504088214075\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-4944504088214075\" \ndata-ad-slot=\"4514395581\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div><p data-start=\"0\" data-end=\"161\">Voici un <strong data-start=\"9\" data-end=\"38\">script simple et puissant<\/strong> pour g\u00e9n\u00e9rer 100 pages locales automatiquement en 1 clic, \u00e0 partir d\u2019un fichier de donn\u00e9es (CSV ou Google Sheets export\u00e9).<\/p>\n<p data-start=\"163\" data-end=\"200\">&#x1f449; Stack simple : Python + OpenAI API<\/p>\n<hr data-start=\"202\" data-end=\"205\" \/>\n<h1 data-section-id=\"1jq7xk2\" data-start=\"207\" data-end=\"220\">&#x1f9e0; Principe<\/h1>\n<ol data-start=\"222\" data-end=\"402\">\n<li data-section-id=\"kr2zxa\" data-start=\"222\" data-end=\"265\">Tu pr\u00e9pares un fichier avec tes villes<\/li>\n<li data-section-id=\"de5air\" data-start=\"266\" data-end=\"307\">Le script envoie un prompt \u00e0 ChatGPT<\/li>\n<li data-section-id=\"hg436e\" data-start=\"308\" data-end=\"348\">Il g\u00e9n\u00e8re une page unique par ligne<\/li>\n<li data-section-id=\"1o1ebfx\" data-start=\"349\" data-end=\"402\">Il sauvegarde chaque page en fichier HTML ou TXT<\/li>\n<\/ol>\n<hr data-start=\"404\" data-end=\"407\" \/>\n<h1 data-section-id=\"d18ucw\" data-start=\"409\" data-end=\"443\"><span role=\"text\">&#x1f4c4; Exemple de fichier <code data-start=\"433\" data-end=\"443\">data.csv<\/code><\/span><\/h1>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\">ville,service,quartiers,specificites<br \/>\nLyon,plombier,Lyon 1;Lyon 2;Lyon 3,immeubles anciens<br \/>\nMarseille,plombier,Le Panier;La Joliette;Prado,proximit\u00e9 mer<br \/>\nNice,plombier,Vieux Nice;Cimiez;Ariane,climat chaud<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"660\" data-end=\"663\" \/>\n<h1 data-section-id=\"1rxobzy\" data-start=\"665\" data-end=\"699\">&#x2699;&#xfe0f; Script Python (copier-coller)<\/h1>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><span class=\"\u037cg\">import<\/span> <span class=\"\u037cm\">csv<\/span><br \/>\n<span class=\"\u037cg\">import<\/span> <span class=\"\u037cm\">os<\/span><br \/>\n<span class=\"\u037cg\">from<\/span> <span class=\"\u037cm\">openai<\/span> <span class=\"\u037cg\">import<\/span> <span class=\"\u037cm\">OpenAI<\/span><\/p>\n<p><span class=\"\u037ce\"># &#x1f511; Configure ton API key<\/span><br \/>\n<span class=\"\u037cm\">client<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037cm\">OpenAI<\/span>(<span class=\"\u037cm\">api_key<\/span><span class=\"\u037cg\">=<\/span><span class=\"\u037ck\">\u00ab\u00a0YOUR_API_KEY\u00a0\u00bb<\/span>)<\/p>\n<p><span class=\"\u037ce\"># &#x1f4c1; Dossier de sortie<\/span><br \/>\n<span class=\"\u037cm\">output_dir<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037ck\">\u00ab\u00a0pages\u00a0\u00bb<\/span><br \/>\n<span class=\"\u037cm\">os<\/span><span class=\"\u037cg\">.<\/span>makedirs(<span class=\"\u037cm\">output_dir<\/span>, <span class=\"\u037cm\">exist_ok<\/span><span class=\"\u037cg\">=<\/span><span class=\"\u037cj\">True<\/span>)<\/p>\n<p><span class=\"\u037cg\">def<\/span> <span class=\"\u037cm\">generate_page<\/span>(<span class=\"\u037cm\">ville<\/span>, <span class=\"\u037cm\">service<\/span>, <span class=\"\u037cm\">quartiers<\/span>, <span class=\"\u037cm\">specificites<\/span>):<br \/>\n<span class=\"\u037cm\">prompt<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037ck\">f\u00a0\u00bb\u00a0\u00bb\u00a0\u00bb<\/span><br \/>\n<span class=\"\u037ck\">Tu es un expert SEO local.<\/span><\/p>\n<p><span class=\"\u037ck\">R\u00e9dige une page SEO compl\u00e8te pour \u00ab\u00a0<\/span>{<span class=\"\u037cm\">service<\/span>}<span class=\"\u037ck\"> \u00e0 <\/span>{<span class=\"\u037cm\">ville<\/span>}<span class=\"\u037ck\">\u00ab\u00a0.<\/span><\/p>\n<p><span class=\"\u037ck\">Contraintes :<\/span><br \/>\n<span class=\"\u037ck\">&#8211; Minimum 800 mots<\/span><br \/>\n<span class=\"\u037ck\">&#8211; Structure avec H1, H2, H3<\/span><br \/>\n<span class=\"\u037ck\">&#8211; Ton naturel, humain<\/span><br \/>\n<span class=\"\u037ck\">&#8211; Contenu unique (pas g\u00e9n\u00e9rique)<\/span><\/p>\n<p><span class=\"\u037ck\">Inclure :<\/span><br \/>\n<span class=\"\u037ck\">&#8211; Introduction locale (mention de <\/span>{<span class=\"\u037cm\">ville<\/span>}<span class=\"\u037ck\">)<\/span><br \/>\n<span class=\"\u037ck\">&#8211; Quartiers : <\/span>{<span class=\"\u037cm\">quartiers<\/span>}<br \/>\n<span class=\"\u037ck\">&#8211; Sp\u00e9cificit\u00e9s locales : <\/span>{<span class=\"\u037cm\">specificites<\/span>}<br \/>\n<span class=\"\u037ck\">&#8211; Section \u00ab\u00a0Pourquoi nous choisir\u00a0\u00bb<\/span><br \/>\n<span class=\"\u037ck\">&#8211; Exemple d\u2019intervention r\u00e9aliste<\/span><br \/>\n<span class=\"\u037ck\">&#8211; FAQ (4 questions locales)<\/span><br \/>\n<span class=\"\u037ck\">&#8211; CTA final<\/span><\/p>\n<p><span class=\"\u037ck\">Important :<\/span><br \/>\n<span class=\"\u037ck\">&#8211; Varier le vocabulaire<\/span><br \/>\n<span class=\"\u037ck\">&#8211; Ajouter des d\u00e9tails concrets<\/span><br \/>\n<span class=\"\u037ck\">\u00ab\u00a0\u00a0\u00bb\u00a0\u00bb<\/span><\/p>\n<p><span class=\"\u037cm\">response<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037cm\">client<\/span><span class=\"\u037cg\">.<\/span>chat<span class=\"\u037cg\">.<\/span>completions<span class=\"\u037cg\">.<\/span>create(<br \/>\n<span class=\"\u037cm\">model<\/span><span class=\"\u037cg\">=<\/span><span class=\"\u037ck\">\u00ab\u00a0gpt-5\u00a0\u00bb<\/span>,<br \/>\n<span class=\"\u037cm\">messages<\/span><span class=\"\u037cg\">=<\/span>[{<span class=\"\u037ck\">\u00ab\u00a0role\u00a0\u00bb<\/span>: <span class=\"\u037ck\">\u00ab\u00a0user\u00a0\u00bb<\/span>, <span class=\"\u037ck\">\u00ab\u00a0content\u00a0\u00bb<\/span>: <span class=\"\u037cm\">prompt<\/span>}],<br \/>\n<span class=\"\u037cm\">temperature<\/span><span class=\"\u037cg\">=<\/span><span class=\"\u037cj\">0.7<\/span><br \/>\n)<\/p>\n<p><span class=\"\u037cg\">return<\/span> <span class=\"\u037cm\">response<\/span><span class=\"\u037cg\">.<\/span>choices[<span class=\"\u037cj\">0<\/span>]<span class=\"\u037cg\">.<\/span>message<span class=\"\u037cg\">.<\/span>content<\/p>\n<p><span class=\"\u037ce\"># &#x1f4ca; Lecture du CSV<\/span><br \/>\n<span class=\"\u037cg\">with<\/span> <span class=\"\u037cm\">open<\/span>(<span class=\"\u037ck\">\u00ab\u00a0data.csv\u00a0\u00bb<\/span>, <span class=\"\u037cm\">newline<\/span><span class=\"\u037cg\">=<\/span><span class=\"\u037ck\">\u00a0\u00bb<\/span>, <span class=\"\u037cm\">encoding<\/span><span class=\"\u037cg\">=<\/span><span class=\"\u037ck\">\u00ab\u00a0utf-8\u00a0\u00bb<\/span>) <span class=\"\u037cg\">as<\/span> <span class=\"\u037cm\">file<\/span>:<br \/>\n<span class=\"\u037cm\">reader<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037cm\">csv<\/span><span class=\"\u037cg\">.<\/span>DictReader(<span class=\"\u037cm\">file<\/span>)<\/p>\n<p><span class=\"\u037cg\">for<\/span> <span class=\"\u037cm\">row<\/span> <span class=\"\u037cg\">in<\/span> <span class=\"\u037cm\">reader<\/span>:<br \/>\n<span class=\"\u037cm\">ville<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037cm\">row<\/span>[<span class=\"\u037ck\">\u00ab\u00a0ville\u00a0\u00bb<\/span>]<br \/>\n<span class=\"\u037cm\">service<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037cm\">row<\/span>[<span class=\"\u037ck\">\u00ab\u00a0service\u00a0\u00bb<\/span>]<br \/>\n<span class=\"\u037cm\">quartiers<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037cm\">row<\/span>[<span class=\"\u037ck\">\u00ab\u00a0quartiers\u00a0\u00bb<\/span>]<br \/>\n<span class=\"\u037cm\">specificites<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037cm\">row<\/span>[<span class=\"\u037ck\">\u00ab\u00a0specificites\u00a0\u00bb<\/span>]<\/p>\n<p><span class=\"\u037cm\">print<\/span>(<span class=\"\u037ck\">f\u00a0\u00bb&#x23f3; G\u00e9n\u00e9ration : <\/span>{<span class=\"\u037cm\">service<\/span>}<span class=\"\u037ck\"> \u00e0 <\/span>{<span class=\"\u037cm\">ville<\/span>}<span class=\"\u037ck\">\u00ab\u00a0<\/span>)<\/p>\n<p><span class=\"\u037cm\">content<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037cm\">generate_page<\/span>(<span class=\"\u037cm\">ville<\/span>, <span class=\"\u037cm\">service<\/span>, <span class=\"\u037cm\">quartiers<\/span>, <span class=\"\u037cm\">specificites<\/span>)<\/p>\n<p><span class=\"\u037cm\">filename<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037ck\">f\u00a0\u00bb<\/span>{<span class=\"\u037cm\">service<\/span>}<span class=\"\u037ck\">&#8211;<\/span>{<span class=\"\u037cm\">ville<\/span>}<span class=\"\u037ck\">.html\u00a0\u00bb<\/span><span class=\"\u037cg\">.<\/span>replace(<span class=\"\u037ck\">\u00a0\u00bb \u00ab\u00a0<\/span>, <span class=\"\u037ck\">\u00ab\u00a0-\u00ab\u00a0<\/span>)<span class=\"\u037cg\">.<\/span>lower()<br \/>\n<span class=\"\u037cm\">filepath<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037cm\">os<\/span><span class=\"\u037cg\">.<\/span>path<span class=\"\u037cg\">.<\/span>join(<span class=\"\u037cm\">output_dir<\/span>, <span class=\"\u037cm\">filename<\/span>)<\/p>\n<p><span class=\"\u037cg\">with<\/span> <span class=\"\u037cm\">open<\/span>(<span class=\"\u037cm\">filepath<\/span>, <span class=\"\u037ck\">\u00ab\u00a0w\u00a0\u00bb<\/span>, <span class=\"\u037cm\">encoding<\/span><span class=\"\u037cg\">=<\/span><span class=\"\u037ck\">\u00ab\u00a0utf-8\u00a0\u00bb<\/span>) <span class=\"\u037cg\">as<\/span> <span class=\"\u037cm\">f<\/span>:<br \/>\n<span class=\"\u037cm\">f<\/span><span class=\"\u037cg\">.<\/span>write(<span class=\"\u037cm\">content<\/span>)<\/p>\n<p><span class=\"\u037cm\">print<\/span>(<span class=\"\u037ck\">f\u00a0\u00bb&#x2705; Page cr\u00e9\u00e9e : <\/span>{<span class=\"\u037cm\">filepath<\/span>}<span class=\"\u037ck\">\u00ab\u00a0<\/span>)<\/p>\n<p><span class=\"\u037cm\">print<\/span>(<span class=\"\u037ck\">\u00ab\u00a0&#x1f680; G\u00e9n\u00e9ration termin\u00e9e\u00a0\u00bb<\/span>)<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"2402\" data-end=\"2405\" \/>\n<h1 data-section-id=\"1uif39w\" data-start=\"2407\" data-end=\"2430\">&#x1f680; Comment l\u2019utiliser<\/h1>\n<ol data-start=\"2432\" data-end=\"2473\">\n<li data-section-id=\"dpzyne\" data-start=\"2432\" data-end=\"2452\">Installe Python<\/li>\n<li data-section-id=\"1i9iv6j\" data-start=\"2453\" data-end=\"2473\">Installe OpenAI :<\/li>\n<\/ol>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\">pip install openai<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<ol start=\"3\" data-start=\"2506\" data-end=\"2565\">\n<li data-section-id=\"14x5upf\" data-start=\"2506\" data-end=\"2528\">Ajoute ta cl\u00e9 API<\/li>\n<li data-section-id=\"1b9enex\" data-start=\"2529\" data-end=\"2554\">Place ton <code data-start=\"2542\" data-end=\"2552\">data.csv<\/code><\/li>\n<li data-section-id=\"1k5ucu9\" data-start=\"2555\" data-end=\"2565\">Lance :<\/li>\n<\/ol>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\">python script.py<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2596\" data-end=\"2658\">&#x1f449; R\u00e9sultat : 100 pages g\u00e9n\u00e9r\u00e9es automatiquement dans <code data-start=\"2650\" data-end=\"2658\">\/pages<\/code><\/p>\n<hr data-start=\"2660\" data-end=\"2663\" \/>\n<h1 data-section-id=\"1uazf3h\" data-start=\"2665\" data-end=\"2700\">&#x1f525; Version am\u00e9lior\u00e9e (recommand\u00e9)<\/h1>\n<p data-start=\"2702\" data-end=\"2735\">Tu peux upgrader le script avec :<\/p>\n<h3 data-section-id=\"9sxyk4\" data-start=\"2737\" data-end=\"2754\">&#x2705; HTML propre<\/h3>\n<p data-start=\"2755\" data-end=\"2796\">Ajoute un template HTML autour du contenu<\/p>\n<h3 data-section-id=\"1at9dfb\" data-start=\"2798\" data-end=\"2812\">&#x2705; Slug SEO<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><span class=\"\u037cm\">filename<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037ck\">f\u00a0\u00bb<\/span>{<span class=\"\u037cm\">service<\/span>}<span class=\"\u037ck\">&#8211;<\/span>{<span class=\"\u037cm\">ville<\/span>}<span class=\"\u037ck\">\u00ab\u00a0<\/span><span class=\"\u037cg\">.<\/span>replace(<span class=\"\u037ck\">\u00a0\u00bb \u00ab\u00a0<\/span>, <span class=\"\u037ck\">\u00ab\u00a0-\u00ab\u00a0<\/span>)<span class=\"\u037cg\">.<\/span>lower()<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-section-id=\"1g2b674\" data-start=\"2886\" data-end=\"2904\">&#x2705; Logs erreurs<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><span class=\"\u037cg\">try<\/span>:<br \/>\n<span class=\"\u037cm\">content<\/span> <span class=\"\u037cg\">=<\/span> <span class=\"\u037cm\">generate_page<\/span>(&#8230;)<br \/>\n<span class=\"\u037cg\">except<\/span> <span class=\"\u037cm\">Exception<\/span> <span class=\"\u037cg\">as<\/span> <span class=\"\u037cm\">e<\/span>:<br \/>\n<span class=\"\u037cm\">print<\/span>(<span class=\"\u037ck\">\u00ab\u00a0Erreur:\u00a0\u00bb<\/span>, <span class=\"\u037cm\">e<\/span>)<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3005\" data-end=\"3008\" \/>\n<h1 data-section-id=\"ucydwn\" data-start=\"3010\" data-end=\"3041\">&#x26a1; Pour aller encore plus loin<\/h1>\n<p data-start=\"3043\" data-end=\"3075\">Tu peux automatiser totalement :<\/p>\n<ul data-start=\"3077\" data-end=\"3244\">\n<li data-section-id=\"19sxz1j\" data-start=\"3077\" data-end=\"3112\">Google Sheets \u2192 Zapier \u2192 script<\/li>\n<li data-section-id=\"16pi7t7\" data-start=\"3113\" data-end=\"3161\">Publication WordPress automatique (REST API)<\/li>\n<li data-section-id=\"78mlzx\" data-start=\"3162\" data-end=\"3189\">Ajout images dynamiques<\/li>\n<li data-section-id=\"jatl1n\" data-start=\"3190\" data-end=\"3221\">Ajout maillage interne auto<\/li>\n<li data-section-id=\"15504l5\" data-start=\"3222\" data-end=\"3244\">G\u00e9n\u00e9ration sitemap<\/li>\n<\/ul>\n<hr data-start=\"3246\" data-end=\"3249\" \/>\n<h1 data-section-id=\"bc6jus\" data-start=\"3251\" data-end=\"3290\">&#x26a0;&#xfe0f; Important (sinon \u00e7a ne marche pas)<\/h1>\n<p data-start=\"3292\" data-end=\"3308\">Ne fais pas \u00e7a :<\/p>\n<p data-start=\"3310\" data-end=\"3414\">&#x274c; G\u00e9n\u00e9rer 100 pages identiques<br data-start=\"3340\" data-end=\"3343\" \/>&#x274c; Pas de donn\u00e9es locales<br data-start=\"3367\" data-end=\"3370\" \/>&#x274c; Publier tout d\u2019un coup<br data-start=\"3394\" data-end=\"3397\" \/>&#x274c; Ne pas relire<\/p>\n<p data-start=\"3416\" data-end=\"3425\">Fais \u00e7a :<\/p>\n<p data-start=\"3427\" data-end=\"3525\">&#x2705; Ajoute quartiers r\u00e9els<br data-start=\"3451\" data-end=\"3454\" \/>&#x2705; Ajoute cas clients<br data-start=\"3474\" data-end=\"3477\" \/>&#x2705; Varie les donn\u00e9es<br data-start=\"3496\" data-end=\"3499\" \/>&#x2705; Publie progressivement<\/p>\n<hr data-start=\"3527\" data-end=\"3530\" \/>\n<h1 data-section-id=\"1k1r5xf\" data-start=\"3532\" data-end=\"3543\">&#x1f4a1; R\u00e9sum\u00e9<\/h1>\n<p data-start=\"3545\" data-end=\"3569\">Ce script te permet de :<\/p>\n<ul data-start=\"3571\" data-end=\"3703\">\n<li data-section-id=\"1pl2c4c\" data-start=\"3571\" data-end=\"3612\">g\u00e9n\u00e9rer 100 pages en quelques minutes<\/li>\n<li data-section-id=\"7h4d2b\" data-start=\"3613\" data-end=\"3637\">scaler ton SEO local<\/li>\n<li data-section-id=\"j9x8nz\" data-start=\"3638\" data-end=\"3668\">industrialiser ton contenu<\/li>\n<li data-section-id=\"yltw59\" data-start=\"3669\" data-end=\"3703\">gagner des semaines de travail<\/li>\n<\/ul>\n<p data-start=\"3705\" data-end=\"3762\">&#x1f449; Mais la diff\u00e9rence se fait sur la qualit\u00e9 des donn\u00e9es.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici un script simple et puissant pour g\u00e9n\u00e9rer 100 pages locales automatiquement en 1 clic, \u00e0 partir d\u2019un fichier de donn\u00e9es (CSV ou Google Sheets &hellip; <\/p>\n","protected":false},"author":2,"featured_media":3424055,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_ayudawp_aiss_exclude":false,"_ayudawp_aiss_summary":"Voici un script simple et puissant pour g\u00e9n\u00e9rer 100 pages locales automatiquement en 1 clic, \u00e0 partir d\u2019un fichier de donn\u00e9es (CSV ou Google Sheets export\u00e9). &#x1f449; Stack simple : Python + OpenAI API. &#x1f9e0; Principe. Il sauvegarde chaque page en fichier HTML ou TXT. &#x1f4c4; Exemple de fichier. ville,service,quartiers,specificites Lyon,plombier,Lyon 1;Lyon 2;Lyon 3,immeubles anciens Marseille,plombier,Le Panier;La Joliette;Prado,proximit\u00e9 mer Nice,plombier,Vieux Nice;Cimiez;Ariane,climat chaud. &#x2699;&#xfe0f; Script Python (copier-coller). import csv import os from openai import OpenAI # &#x1f511; Configure ton API key client = OpenAI(api_key=\"YOUR_API_KEY\") # &#x1f4c1; Dossier de sortie output_dir = \"pages\" os.makedirs(output_dir, exist_ok=True) def generate_page(ville, service, quartiers, specificites): prompt = f\"\"\" Tu es un expert SEO local. Contraintes : - Minimum 800 mots - Structure avec H1, H2, H3 - Ton naturel, humain - Contenu unique (pas g\u00e9n\u00e9rique) Inclure : - Introduction locale (mention de {ville}) - Quartiers : {quartiers} - Sp\u00e9cificit\u00e9s locales : {specificites} - Section \"Pourquoi nous choisir\" - Exemple d\u2019intervention r\u00e9aliste - FAQ (4 questions locales) - CTA final Important : - Varier le vocabulaire - Ajouter des d\u00e9tails concrets \"\"\" response = client.chat.completions.create( model=\"gpt-5\", messages=[{\"role\": \"user\", \"content\": prompt}], temperature=0.7 ) return response.choices[0].message.content # &#x1f4ca; Lecture du CSV with open(\"data.csv\", newline='', encoding=\"utf-8\") as file: reader = csv.DictReader(file) for row in reader: ville = row[\"ville\"] service = row[\"service\"] quartiers = row[\"quartiers\"] specificites = row[\"specificites\"] print(f\"&#x23f3; G\u00e9n\u00e9ration : {service} \u00e0 {ville}\") content = generate_page(ville, service, quartiers, specificites) filename = f\"{service}-{ville}.html\".replace(\" \", \"-\").lower() filepath = os.path.join(output_dir, filename) with open(filepath, \"w\", encoding=\"utf-8\") as f: f.write(content) print(f\"&#x2705; Page cr\u00e9\u00e9e : {filepath}\") print(\"&#x1f680; G\u00e9n\u00e9ration termin\u00e9e\"). &#x1f680; Comment l\u2019utiliser.","_ayudawp_aiss_summary_provider":"extractive","_ayudawp_aiss_summary_hash":"606974b46104a9a4043007cf04deccdcf1abf025","footnotes":""},"categories":[5],"tags":[124],"class_list":["post-3452396","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-referencement","tag-optimisation"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Script pour g\u00e9n\u00e9rer 100 pages en 1 clic - Labo JNG WEB<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Script pour g\u00e9n\u00e9rer 100 pages en 1 clic - Labo JNG WEB\" \/>\n<meta property=\"og:description\" content=\"Voici un script simple et puissant pour g\u00e9n\u00e9rer 100 pages locales automatiquement en 1 clic, \u00e0 partir d\u2019un fichier de donn\u00e9es (CSV ou Google Sheets &hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/\" \/>\n<meta property=\"og:site_name\" content=\"Labo JNG WEB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webmaster.referencement.dijon\" \/>\n<meta property=\"article:author\" content=\"https:\/\/fr-fr.facebook.com\/JNGWEB.webmaster\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-16T05:00:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-22T09:01:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/jng-web.com\/labo\/wp-content\/uploads\/2026\/03\/young-woman-working-with-writing-app-on-her-laptop-picjumbo-com-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"J\u00e9r\u00f4me\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"J\u00e9r\u00f4me\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/\"},\"author\":{\"name\":\"J\u00e9r\u00f4me\",\"@id\":\"https:\/\/jng-web.com\/labo\/#\/schema\/person\/8dceaae857bc9738baa63b3d19fb4590\"},\"headline\":\"Script pour g\u00e9n\u00e9rer 100 pages en 1 clic\",\"datePublished\":\"2026-06-16T05:00:56+00:00\",\"dateModified\":\"2026-03-22T09:01:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/\"},\"wordCount\":572,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/jng-web.com\/labo\/#organization\"},\"keywords\":[\"Optimisation SEO\"],\"articleSection\":[\"R\u00e9f\u00e9rencement\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/\",\"url\":\"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/\",\"name\":\"Script pour g\u00e9n\u00e9rer 100 pages en 1 clic - Labo JNG WEB\",\"isPartOf\":{\"@id\":\"https:\/\/jng-web.com\/labo\/#website\"},\"datePublished\":\"2026-06-16T05:00:56+00:00\",\"dateModified\":\"2026-03-22T09:01:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Labo Jng Web\",\"item\":\"https:\/\/jng-web.com\/labo\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"R\u00e9f\u00e9rencement\",\"item\":\"https:\/\/jng-web.com\/labo\/referencement\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Script pour g\u00e9n\u00e9rer 100 pages en 1 clic\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jng-web.com\/labo\/#website\",\"url\":\"https:\/\/jng-web.com\/labo\/\",\"name\":\"Labo JNG WEB\",\"description\":\"R\u00e9f\u00e9rencement, Webmastering, CMS, Logiciels ...\",\"publisher\":{\"@id\":\"https:\/\/jng-web.com\/labo\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jng-web.com\/labo\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jng-web.com\/labo\/#organization\",\"name\":\"JNG WEB \/\/ J\u00e9r\u00f4me Guri\",\"url\":\"https:\/\/jng-web.com\/labo\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/jng-web.com\/labo\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jng-web.com\/labo\/wp-content\/uploads\/2015\/04\/logo.png\",\"contentUrl\":\"https:\/\/jng-web.com\/labo\/wp-content\/uploads\/2015\/04\/logo.png\",\"width\":342,\"height\":110,\"caption\":\"JNG WEB \/\/ J\u00e9r\u00f4me Guri\"},\"image\":{\"@id\":\"https:\/\/jng-web.com\/labo\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webmaster.referencement.dijon\",\"https:\/\/twitter.com\/jng_web\",\"https:\/\/fr.linkedin.com\/in\/jeromeguri\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/jng-web.com\/labo\/#\/schema\/person\/8dceaae857bc9738baa63b3d19fb4590\",\"name\":\"J\u00e9r\u00f4me\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/jng-web.com\/labo\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/21ca560712e7f1303d8c7c22d9ac9254b56517b653bfcb97d6736933471b2ea3?s=96&d=http%3A%2F%2Fwww.jng-web.com%2Flabo%2Fwp-content%2Fuploads%2F2013%2F12%2Favatar-blog-jng-web.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/21ca560712e7f1303d8c7c22d9ac9254b56517b653bfcb97d6736933471b2ea3?s=96&d=http%3A%2F%2Fwww.jng-web.com%2Flabo%2Fwp-content%2Fuploads%2F2013%2F12%2Favatar-blog-jng-web.png&r=g\",\"caption\":\"J\u00e9r\u00f4me\"},\"description\":\"Passionn\u00e9 par le web, je m'int\u00e9resse depuis quelques ann\u00e9es aux technologies de l'information et de la communication, et plus particuli\u00e8rement \u00e0 la cr\u00e9ation et au r\u00e9f\u00e9rencement de sites internet.\",\"sameAs\":[\"http:\/\/www.jng-web.com\",\"https:\/\/fr-fr.facebook.com\/JNGWEB.webmaster\",\"https:\/\/twitter.com\/JngWeb21\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Script pour g\u00e9n\u00e9rer 100 pages en 1 clic - Labo JNG WEB","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/","og_locale":"fr_FR","og_type":"article","og_title":"Script pour g\u00e9n\u00e9rer 100 pages en 1 clic - Labo JNG WEB","og_description":"Voici un script simple et puissant pour g\u00e9n\u00e9rer 100 pages locales automatiquement en 1 clic, \u00e0 partir d\u2019un fichier de donn\u00e9es (CSV ou Google Sheets &hellip;","og_url":"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/","og_site_name":"Labo JNG WEB","article_publisher":"https:\/\/www.facebook.com\/webmaster.referencement.dijon","article_author":"https:\/\/fr-fr.facebook.com\/JNGWEB.webmaster","article_published_time":"2026-06-16T05:00:56+00:00","article_modified_time":"2026-03-22T09:01:46+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/jng-web.com\/labo\/wp-content\/uploads\/2026\/03\/young-woman-working-with-writing-app-on-her-laptop-picjumbo-com-scaled.jpg","type":"image\/jpeg"}],"author":"J\u00e9r\u00f4me","twitter_misc":{"\u00c9crit par":"J\u00e9r\u00f4me","Dur\u00e9e de lecture estim\u00e9e":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/#article","isPartOf":{"@id":"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/"},"author":{"name":"J\u00e9r\u00f4me","@id":"https:\/\/jng-web.com\/labo\/#\/schema\/person\/8dceaae857bc9738baa63b3d19fb4590"},"headline":"Script pour g\u00e9n\u00e9rer 100 pages en 1 clic","datePublished":"2026-06-16T05:00:56+00:00","dateModified":"2026-03-22T09:01:46+00:00","mainEntityOfPage":{"@id":"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/"},"wordCount":572,"commentCount":0,"publisher":{"@id":"https:\/\/jng-web.com\/labo\/#organization"},"keywords":["Optimisation SEO"],"articleSection":["R\u00e9f\u00e9rencement"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/","url":"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/","name":"Script pour g\u00e9n\u00e9rer 100 pages en 1 clic - Labo JNG WEB","isPartOf":{"@id":"https:\/\/jng-web.com\/labo\/#website"},"datePublished":"2026-06-16T05:00:56+00:00","dateModified":"2026-03-22T09:01:46+00:00","breadcrumb":{"@id":"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jng-web.com\/labo\/script-pour-generer-100-pages-en-1-clic\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Labo Jng Web","item":"https:\/\/jng-web.com\/labo\/"},{"@type":"ListItem","position":2,"name":"R\u00e9f\u00e9rencement","item":"https:\/\/jng-web.com\/labo\/referencement\/"},{"@type":"ListItem","position":3,"name":"Script pour g\u00e9n\u00e9rer 100 pages en 1 clic"}]},{"@type":"WebSite","@id":"https:\/\/jng-web.com\/labo\/#website","url":"https:\/\/jng-web.com\/labo\/","name":"Labo JNG WEB","description":"R\u00e9f\u00e9rencement, Webmastering, CMS, Logiciels ...","publisher":{"@id":"https:\/\/jng-web.com\/labo\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jng-web.com\/labo\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/jng-web.com\/labo\/#organization","name":"JNG WEB \/\/ J\u00e9r\u00f4me Guri","url":"https:\/\/jng-web.com\/labo\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/jng-web.com\/labo\/#\/schema\/logo\/image\/","url":"https:\/\/jng-web.com\/labo\/wp-content\/uploads\/2015\/04\/logo.png","contentUrl":"https:\/\/jng-web.com\/labo\/wp-content\/uploads\/2015\/04\/logo.png","width":342,"height":110,"caption":"JNG WEB \/\/ J\u00e9r\u00f4me Guri"},"image":{"@id":"https:\/\/jng-web.com\/labo\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webmaster.referencement.dijon","https:\/\/twitter.com\/jng_web","https:\/\/fr.linkedin.com\/in\/jeromeguri"]},{"@type":"Person","@id":"https:\/\/jng-web.com\/labo\/#\/schema\/person\/8dceaae857bc9738baa63b3d19fb4590","name":"J\u00e9r\u00f4me","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/jng-web.com\/labo\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/21ca560712e7f1303d8c7c22d9ac9254b56517b653bfcb97d6736933471b2ea3?s=96&d=http%3A%2F%2Fwww.jng-web.com%2Flabo%2Fwp-content%2Fuploads%2F2013%2F12%2Favatar-blog-jng-web.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/21ca560712e7f1303d8c7c22d9ac9254b56517b653bfcb97d6736933471b2ea3?s=96&d=http%3A%2F%2Fwww.jng-web.com%2Flabo%2Fwp-content%2Fuploads%2F2013%2F12%2Favatar-blog-jng-web.png&r=g","caption":"J\u00e9r\u00f4me"},"description":"Passionn\u00e9 par le web, je m'int\u00e9resse depuis quelques ann\u00e9es aux technologies de l'information et de la communication, et plus particuli\u00e8rement \u00e0 la cr\u00e9ation et au r\u00e9f\u00e9rencement de sites internet.","sameAs":["http:\/\/www.jng-web.com","https:\/\/fr-fr.facebook.com\/JNGWEB.webmaster","https:\/\/twitter.com\/JngWeb21"]}]}},"views":51,"_links":{"self":[{"href":"https:\/\/jng-web.com\/labo\/wp-json\/wp\/v2\/posts\/3452396","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jng-web.com\/labo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jng-web.com\/labo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jng-web.com\/labo\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jng-web.com\/labo\/wp-json\/wp\/v2\/comments?post=3452396"}],"version-history":[{"count":1,"href":"https:\/\/jng-web.com\/labo\/wp-json\/wp\/v2\/posts\/3452396\/revisions"}],"predecessor-version":[{"id":3452410,"href":"https:\/\/jng-web.com\/labo\/wp-json\/wp\/v2\/posts\/3452396\/revisions\/3452410"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jng-web.com\/labo\/wp-json\/wp\/v2\/media\/3424055"}],"wp:attachment":[{"href":"https:\/\/jng-web.com\/labo\/wp-json\/wp\/v2\/media?parent=3452396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jng-web.com\/labo\/wp-json\/wp\/v2\/categories?post=3452396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jng-web.com\/labo\/wp-json\/wp\/v2\/tags?post=3452396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}