{"id":83252,"date":"2026-05-08T15:13:59","date_gmt":"2026-05-08T14:13:59","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=83252&#038;preview=true&#038;preview_id=83252"},"modified":"2026-05-11T14:58:34","modified_gmt":"2026-05-11T13:58:34","slug":"api-kinsta-et-google-ia","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/","title":{"rendered":"Automatiser les rapports sur les clients avec l&rsquo;API Kinsta et Google AI"},"content":{"rendered":"<p>Pour les agences modernes, un syst\u00e8me de rapports coh\u00e9rent et de haute qualit\u00e9 est essentiel pour conserver la confiance des clients et les fid\u00e9liser \u00e0 long terme. Un rapport clair et informatif vous permet de suivre les tendances des ventes, de d\u00e9montrer l&rsquo;efficacit\u00e9 des campagnes, de calculer le retour sur investissement (ROI), et bien plus encore.<\/p>\n<p>Cependant, pour une agence g\u00e9rant des dizaines, voire des centaines de sites, la g\u00e9n\u00e9ration de ces rapports p\u00e9riodiques peut devenir un goulot d&rsquo;\u00e9tranglement majeur, compromettant l&rsquo;\u00e9volutivit\u00e9 de vos op\u00e9rations.<\/p>\n<p>C&rsquo;est pourquoi l&rsquo;optimisation et l&rsquo;automatisation de la r\u00e9cup\u00e9ration des donn\u00e9es sont cruciales. Elle r\u00e9tablit l&rsquo;efficacit\u00e9 et lib\u00e8re votre \u00e9quipe pour qu&rsquo;elle se concentre sur des activit\u00e9s \u00e0 forte valeur ajout\u00e9e, comme le d\u00e9veloppement de nouveaux projets.<\/p>\n<p>Dans cet article, vous apprendrez comment exploiter l&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/docs\/api-kinsta\/\" target=\"_blank\" rel=\"noopener noreferrer\">API Kinsta<\/a> pour r\u00e9cup\u00e9rer automatiquement vos donn\u00e9es d&rsquo;h\u00e9bergement et g\u00e9n\u00e9rer des rapports strat\u00e9giques gr\u00e2ce \u00e0 la puissance de l&rsquo;IA.<\/p>\n<p>\u00cates-vous pr\u00eat \u00e0 faire \u00e9voluer votre syst\u00e8me de reporting ? Lisez la suite.<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Acc\u00e9der \u00e0 Kinsta Analytics via MyKinsta et Kinsta API<\/h2>\n<p>Les clients de Kinsta ont acc\u00e8s \u00e0 une multitude de donn\u00e9es via le <a href=\"https:\/\/kinsta.com\/fr\/mykinsta\/\" target=\"_blank\" rel=\"noopener noreferrer\">tableau de bord d&rsquo;h\u00e9bergement MyKinsta<\/a>. Vous pouvez acc\u00e9der aux donn\u00e9es de votre plan dans la section Analyses de votre tableau de bord.<\/p>\n<figure id=\"attachment_208745\" aria-describedby=\"caption-attachment-208745\" style=\"width: 2568px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208745 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/mykinsta-analytics.png\" alt=\"Vue d'ensemble de la section MyKinsta Analytics.\" width=\"2568\" height=\"774\"><figcaption id=\"caption-attachment-208745\" class=\"wp-caption-text\">Vue d&rsquo;ensemble de la section MyKinsta Analytics.<\/figcaption><\/figure>\n<p>La page Analyses est divis\u00e9e en plusieurs onglets, chacun se concentrant sur un aspect sp\u00e9cifique de l&rsquo;activit\u00e9 de votre site :<\/p>\n<ul>\n<li><strong>Utilisation du plan :<\/strong> affiche la consommation de ressources de votre plan, \u00e0 la fois cumul\u00e9e et ventil\u00e9e par site individuel.<\/li>\n<li><strong>Principales requ\u00eates :<\/strong> cet onglet vous permet d&rsquo;identifier les principales requ\u00eates adress\u00e9es \u00e0 votre site, class\u00e9es par bande passante et par nombre de vues.<\/li>\n<li><strong>Cache :<\/strong> fournit une ventilation de l&rsquo;utilisation du cache, y compris la ventilation du cache, les composants du cache du serveur et les contournements du cache du serveur.<\/li>\n<li><strong>CDN &#038; edge :<\/strong> fournit des donn\u00e9es sur la consommation de la bande passante du CDN, la bande passante du cache p\u00e9riph\u00e9rique et des listes des principaux fichiers servis \u00e0 partir du cache CDN.<\/li>\n<li><strong>Dispersion :<\/strong> indique le pourcentage de visites provenant d&rsquo;ordinateurs de bureau, de tablettes et de mobiles.<\/li>\n<li><strong>Performance :<\/strong> inclut diverses mesures de performance telles que le temps de r\u00e9ponse moyen de PHP MySQL, le d\u00e9bit de PHP, la limite de threads de PHP, etc.<\/li>\n<li><strong>R\u00e9ponse :<\/strong> fournit des statistiques sur les codes de r\u00e9ponse, y compris une ventilation d\u00e9taill\u00e9e des codes d&rsquo;erreur.<\/li>\n<li><strong>G\u00e9o &#038; IP :<\/strong> affiche les listes des principaux pays, villes et IP clients d&rsquo;o\u00f9 proviennent les requ\u00eates adress\u00e9es \u00e0 votre site.<\/li>\n<\/ul>\n<p>Vous pouvez acc\u00e9der \u00e0 ces m\u00eames analyses au niveau du site en naviguant vers <strong>Sites<\/strong> &gt; <strong>nom du site<\/strong> &gt; <strong>Analyses<\/strong>.<\/p>\n<figure id=\"attachment_208746\" aria-describedby=\"caption-attachment-208746\" style=\"width: 2570px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208746 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/site-analytics.png\" alt=\"Analyse du site dans MyKinsta.\" width=\"2570\" height=\"1140\"><figcaption id=\"caption-attachment-208746\" class=\"wp-caption-text\">Analyse du site dans MyKinsta.<\/figcaption><\/figure>\n<p>Kinsta Analytics fournit un ensemble de donn\u00e9es stup\u00e9fiant ; le simple fait de naviguer dans votre tableau de bord MyKinsta vous donne une image tr\u00e8s claire de la consommation de ressources, de l&rsquo;efficacit\u00e9 et de la performance de votre site. Vous saurez exactement d&rsquo;o\u00f9 viennent la plupart des requ\u00eates et lesquelles consomment le plus de ressources.<\/p>\n<p>Combin\u00e9 avec notre <a href=\"https:\/\/kinsta.com\/fr\/outil-apm\/\">outil Kinsta APM<\/a>, Kinsta Analytics vous permet d&rsquo;optimiser la performance de vos sites WordPress.<\/p>\n<p>Ce que tout le monde ne sait pas, c&rsquo;est que les donn\u00e9es de Kinsta Analytics sont \u00e9galement accessibles via l&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/docs\/api-kinsta\/\">API de Kinsta<\/a>. Cela vous permet d&rsquo;extraire des donn\u00e9es de mani\u00e8re programmatique et de construire des m\u00e9triques d&rsquo;h\u00e9bergement, que vous pouvez ensuite utiliser pour g\u00e9n\u00e9rer des rapports automatis\u00e9s \u00e0 partager avec vos clients.<\/p>\n<p>Explorons les points de terminaison de l&rsquo;API Kinsta.<\/p>\n<h3>Le point de terminaison Analytics de l&rsquo;API Kinsta<\/h3>\n<p>Avec le point de terminaison Analytics de l&rsquo;API Kinsta, vous pouvez acc\u00e9der \u00e0 des donn\u00e9es brutes sur l&rsquo;utilisation des ressources et l&rsquo;\u00e9tat de sant\u00e9 de votre site web.<\/p>\n<ul>\n<li><a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-visits-usage\" target=\"_blank\" rel=\"noopener noreferrer\">Utilisation des visites<\/a>, <a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-server-bandwidth-usage\">utilisation de la bande passante du serveur<\/a> et <a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-cdn-bandwidth-usage\" target=\"_blank\" rel=\"noopener noreferrer\">utilisation de la bande passante du CDN<\/a> : ces mesures permettent de suivre l&rsquo;utilisation de vos ressources par rapport \u00e0 votre plan d&rsquo;h\u00e9bergement pendant la p\u00e9riode de facturation en cours.<\/li>\n<li><a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-visits\" target=\"_blank\" rel=\"noopener noreferrer\">Visites<\/a> : indique le nombre total de visites dans un environnement donn\u00e9 au cours d&rsquo;une p\u00e9riode donn\u00e9e.<\/li>\n<li><a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-disk-space\" target=\"_blank\" rel=\"noopener noreferrer\">Espace disque<\/a> : indique l&rsquo;espace disque total utilis\u00e9 par un environnement donn\u00e9 au cours d&rsquo;une p\u00e9riode donn\u00e9e.<\/li>\n<li><a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-server-bandwidth\" target=\"_blank\" rel=\"noopener noreferrer\">Bande passante du serveur<\/a> : indique la bande passante consomm\u00e9e par un environnement donn\u00e9 au cours d&rsquo;une p\u00e9riode donn\u00e9e.<\/li>\n<li><a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-cdn-bandwidth\" target=\"_blank\" rel=\"noopener noreferrer\">Bande passante CDN<\/a> : indique la bande passante CDN consomm\u00e9e par un environnement donn\u00e9 au cours d&rsquo;une p\u00e9riode donn\u00e9e.<\/li>\n<li><a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-top-countries\" target=\"_blank\" rel=\"noopener noreferrer\">Principaux pays<\/a> : fournit une liste des principaux pays d&rsquo;o\u00f9 proviennent les requ\u00eates adress\u00e9es au site au cours d&rsquo;une p\u00e9riode donn\u00e9e.<\/li>\n<li><a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-top-cities\" target=\"_blank\" rel=\"noopener noreferrer\">Principales villes<\/a> : fournit une liste des principales villes d&rsquo;o\u00f9 proviennent les requ\u00eates adress\u00e9es au site au cours d&rsquo;une p\u00e9riode donn\u00e9e.<\/li>\n<li><a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-top-client-ips\" target=\"_blank\" rel=\"noopener noreferrer\">Principales adresses IP des clients<\/a> : fournit une liste des principales adresses IP des clients \u00e0 l&rsquo;origine des requ\u00eates adress\u00e9es au site au cours d&rsquo;une p\u00e9riode donn\u00e9e.<\/li>\n<li><a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-visits-dispersion\" target=\"_blank\" rel=\"noopener noreferrer\">Dispersion des visites<\/a> : fournit des donn\u00e9es sur la r\u00e9partition des visites entre les ordinateurs de bureau, les tablettes et les appareils mobiles au cours d&rsquo;une p\u00e9riode donn\u00e9e.<\/li>\n<li><a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-response-code-breakdown\" target=\"_blank\" rel=\"noopener noreferrer\">Ventilation des codes de r\u00e9ponse<\/a> : fournit une ventilation des codes d&rsquo;\u00e9tat HTTP renvoy\u00e9s par le serveur au cours d&rsquo;une p\u00e9riode donn\u00e9e.<\/li>\n<\/ul>\n<p>Vous trouverez ci-dessous quelques exemples d&rsquo;utilisation du point de terminaison <code>analytics<\/code>.<\/p>\n<h4>Visites<\/h4>\n<p>La requ\u00eate suivante fournit le nombre total de visites sur votre site et le nombre d&rsquo;adresses IP uniques qui y ont acc\u00e9d\u00e9 au cours des 30 derniers jours :<\/p>\n<pre><code>https:\/\/api.kinsta.com\/v2\/sites\/environments\/{KINSTA_ENV_ID}\/analytics\/visits?time_span=30_days&company_id={KINSTA_COMPANY_ID}<\/code><\/pre>\n<p>La r\u00e9ponse sera structur\u00e9e comme suit :<\/p>\n<pre><code class=\"language-json\">{\n\t\"analytics\": {\n\t\t\"analytics_response\": {\n\t\t\t\"key\": \"uniqueip\",\n\t\t\t\"data\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"uniqueip\",\n\t\t\t\t\t\"total\": 1000,\n\t\t\t\t\t\"dataset\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"key\": \"2025-10-28T00:00:00.000Z\",\n\t\t\t\t\t\t\t\"value\": \"1000\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"key\": \"2025-10-28T00:00:00.000Z\",\n\t\t\t\t\t\t\t\"value\": \"900\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"key\": \"2025-10-28T00:00:00.000Z\",\n\t\t\t\t\t\t\t\"value\": \"820\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}\n}<\/code><\/pre>\n<h4>Bande passante<\/h4>\n<p>L&rsquo;exemple suivant montre comment interroger l&rsquo;API Kinsta pour obtenir l&rsquo;utilisation de la bande passante du serveur au cours des 30 derniers jours :<\/p>\n<pre><code>https:\/\/api.kinsta.com\/v2\/sites\/environments\/{KINSTA_ENV_ID}\/analytics\/bandwidth?time_span=30_days&company_id={KINSTA_COMPANY_ID}<\/code><\/pre>\n<p>La r\u00e9ponse du serveur Kinsta fournit l&rsquo;utilisation quotidienne de la bande passante pour les 30 derniers jours :<\/p>\n<pre><code class=\"language-json\">{\n\t\"analytics\": {\n\t\t\"analytics_response\": {\n\t\t\t\"key\": \"bandwidth\",\n\t\t\t\"data\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bandwidth\",\n\t\t\t\t\t\"total\": 1000,\n\t\t\t\t\t\"dataset\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"key\": \"2026-03-11T00:00:00.000Z\",\n\t\t\t\t\t\t\t\"value\": \"37347250\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"key\": \"2026-03-12T00:00:00.000Z\",\n\t\t\t\t\t\t\t\"value\": \"9276458\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}\n}<\/code><\/pre>\n<h4>Bande passante CDN<\/h4>\n<p>Dans cet autre exemple, nous interrogeons l&rsquo;API Kinsta pour connaitre l&rsquo;utilisation de la bande passante du CDN au cours des sept derniers jours :<\/p>\n<pre><code>https:\/\/api.kinsta.com\/v2\/sites\/environments\/{KINSTA_ENV_ID}\/analytics\/cdn-bandwidth?time_span=7_days&company_id={KINSTA_COMPANY_ID}<\/code><\/pre>\n<p>Le serveur fournira les donn\u00e9es suivantes :<\/p>\n<pre><code class=\"language-json\">{\n\t\"analytics\": {\n\t\t\"analytics_response\": {\n\t\t\t\"key\": \"cdn-bandwidth\",\n\t\t\t\"data\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"cdn-bandwidth\",\n\t\t\t\t\t\"total\": 1000,\n\t\t\t\t\t\"dataset\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"key\": \"2026-04-02T00:00:00.000Z\",\n\t\t\t\t\t\t\t\"value\": \"753447\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"key\": \"2026-04-03T00:00:00.000Z\",\n\t\t\t\t\t\t\t\"value\": \"16911\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}\n}<\/code><\/pre>\n<p>Vous pouvez l&rsquo;essayer vous-m\u00eame en saisissant votre cl\u00e9 API Kinsta (bearer token), l&rsquo;ID de l&rsquo;environnement et l&rsquo;ID de l&rsquo;entreprise dans le <a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/analytics\/get-visits?playground=open\" target=\"_blank\" rel=\"noopener noreferrer\">terrain de jeu de l&rsquo;API<\/a>.<\/p>\n<figure id=\"attachment_208758\" aria-describedby=\"caption-attachment-208758\" style=\"width: 2352px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208758 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/api-playground.png\" alt=\"Testez l'API Kinsta dans le terrain de jeu de l'API.\" width=\"2352\" height=\"1218\"><figcaption id=\"caption-attachment-208758\" class=\"wp-caption-text\">Testez l&rsquo;API Kinsta dans le terrain de jeu de l&rsquo;API.<\/figcaption><\/figure>\n<p>Maintenant que vous savez comment acc\u00e9der aux donn\u00e9es analytiques de votre site sur Kinsta, vous pouvez les utiliser pour automatiser vos op\u00e9rations. Cela inclut \u00e9galement l&rsquo;automatisation du syst\u00e8me de reporting.<\/p>\n<p>Les sections suivantes vous montreront comment automatiser le syst\u00e8me de reporting de votre agence \u00e0 l&rsquo;aide de l&rsquo;API Kinsta. Nous allons cr\u00e9er un script Python et utiliser les <a href=\"https:\/\/kinsta.com\/fr\/blog\/configurer-pipeline-ci-cd\/\">actions GitHub<\/a> pour automatiser la construction et l&rsquo;ex\u00e9cution. Ce script transformera les donn\u00e9es brutes renvoy\u00e9es par l&rsquo;API en tableaux et en graphiques, et interrogera Google AI pour g\u00e9n\u00e9rer un rapport final.<\/p>\n<p>Il est temps de mettre la main \u00e0 la p\u00e2te.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Le code complet de ce tutoriel est disponible dans <a href=\"https:\/\/github.com\/carlodaniele\/kinsta-gemini-reporting\" target=\"_blank\" rel=\"noopener noreferrer\">ce d\u00e9p\u00f4t GitHub<\/a>.<\/p>\n<\/aside>\n\n<h2>Construire un syst\u00e8me de reporting automatis\u00e9 en utilisant l&rsquo;API Kinsta et l&rsquo;IA de Google<\/h2>\n<p>Notre objectif est de cr\u00e9er un rapport automatis\u00e9 qui est g\u00e9n\u00e9r\u00e9 \u00e0 des intervalles sp\u00e9cifiques. Le syst\u00e8me interrogera l&rsquo;API Kinsta pour r\u00e9cup\u00e9rer des donn\u00e9es sur les visites, la bande passante du serveur et la bande passante du CDN. Ces donn\u00e9es seront ensuite utilis\u00e9es pour cr\u00e9er des graphiques et des tableaux dans un fichier PDF. Dans le cadre de ce processus, les donn\u00e9es seront envoy\u00e9es \u00e0 l&rsquo;API Gemini pour produire une analyse des donn\u00e9es extraites, qui sera ensuite incluse dans le rapport.<\/p>\n<figure id=\"attachment_208776\" aria-describedby=\"caption-attachment-208776\" style=\"width: 3355px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208776 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/automatic-report-preview.png\" alt=\"Aper\u00e7u du rapport automatis\u00e9 g\u00e9n\u00e9r\u00e9 avec GitHub Actions et l'API Kinsta.\" width=\"3355\" height=\"1572\"><figcaption id=\"caption-attachment-208776\" class=\"wp-caption-text\">Aper\u00e7u du rapport automatis\u00e9 g\u00e9n\u00e9r\u00e9 avec GitHub Actions et l&rsquo;API Kinsta.<\/figcaption><\/figure>\n<h3>Mise en place du projet sur GitHub<\/h3>\n<p>Sur la page d&rsquo;accueil de GitHub, cliquez sur le bouton vert <strong>Nouveau<\/strong> pour cr\u00e9er un nouveau projet. Une fois que vous avez un projet vide, allez dans <strong>R\u00e9glages<\/strong> &gt; <strong>Secrets et variables<\/strong> &gt; <strong>Actions<\/strong> et ajoutez les secrets montr\u00e9s dans l&rsquo;image suivante.<\/p>\n<figure id=\"attachment_208781\" aria-describedby=\"caption-attachment-208781\" style=\"width: 1580px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208781 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/repository-secrets-2.png\" alt=\"Secrets du d\u00e9p\u00f4t GitHub Actions.\" width=\"1580\" height=\"676\"><figcaption id=\"caption-attachment-208781\" class=\"wp-caption-text\">Secrets du d\u00e9p\u00f4t GitHub Actions.<\/figcaption><\/figure>\n<p>Le stockage de vos cl\u00e9s d&rsquo;API et de vos identifiants dans GitHub Secrets les rend inaccessibles \u00e0 quiconque et contribue \u00e0 garantir la s\u00e9curit\u00e9 de votre code.<\/p>\n<h4>GEMINI_API_KEY<\/h4>\n<p>Vous pouvez g\u00e9n\u00e9rer une cl\u00e9 d&rsquo;API Google AI dans le <a href=\"https:\/\/aistudio.google.com\/api-keys\" target=\"_blank\" rel=\"noopener noreferrer\">tableau de bord Google AI Studio<\/a>. Pour plus d&rsquo;informations, consultez la <a href=\"https:\/\/ai.google.dev\/gemini-api\/docs\/api-key\">documentation de Google AI<\/a>.<\/p>\n<h4>CL\u00c9 D&rsquo;API KINSTA<\/h4>\n<p>Ensuite, suivez les instructions de notre article pour <a href=\"https:\/\/kinsta.com\/fr\/blog\/cle-api-kinsta\/\">g\u00e9n\u00e9rer une cl\u00e9 API Kinsta<\/a>.<\/p>\n<h4>KINSTA_COMPANY_ID, KINSTA_ENV_ID, KINSTA_SITE_ID<\/h4>\n<p>Vous pouvez trouver l&rsquo;ID du site, l&rsquo;ID de l&rsquo;environnement et l&rsquo;ID de l&rsquo;entreprise sous <strong>Sites<\/strong> &gt; <strong>nom du site<\/strong> &gt; <strong>Info<\/strong> dans votre tableau de bord MyKinsta.<\/p>\n<figure id=\"attachment_208778\" aria-describedby=\"caption-attachment-208778\" style=\"width: 2080px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208778 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/site-info.png\" alt=\"Informations sur le site dans MyKinsta.\" width=\"2080\" height=\"828\"><figcaption id=\"caption-attachment-208778\" class=\"wp-caption-text\">Informations sur le site dans MyKinsta.<\/figcaption><\/figure>\n<p>Passons maintenant aux fichiers du projet.<\/p>\n<h3>Biblioth\u00e8ques n\u00e9cessaires et configuration des actions GitHub<\/h3>\n<p>Dans le r\u00e9pertoire racine de votre projet GitHub, cr\u00e9ez un fichier nomm\u00e9 <code>requirements.txt<\/code> et ajoutez-y ce qui suit :<\/p>\n<pre><code>google-genai\nrequests\nmatplotlib\nfpdf2<\/code><\/pre>\n<p>Ce fichier liste les composants n\u00e9cessaires \u00e0 votre projet.<\/p>\n<ul>\n<li><code>google-genai<\/code> : c&rsquo;est la biblioth\u00e8que de Google pour interagir avec les mod\u00e8les Gemini.<\/li>\n<li><code>requests<\/code> : une biblioth\u00e8que pour effectuer des requ\u00eates HTTP. Dans ce projet, elle sera utilis\u00e9e pour envoyer des requ\u00eates HTTP \u00e0 l&rsquo;API Kinsta.<\/li>\n<li><code>matplotlib<\/code> : une biblioth\u00e8que Python pour <a href=\"https:\/\/matplotlib.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">cr\u00e9er des graphiques et visualiser des donn\u00e9es<\/a>.<\/li>\n<li><code>fpdf2<\/code> : il s&rsquo;agit d&rsquo;une biblioth\u00e8que qui vous permet de <a href=\"https:\/\/py-pdf.github.io\/fpdf2\/index.html\" target=\"_blank\" rel=\"noopener noreferrer\">g\u00e9n\u00e9rer des fichiers PDF<\/a>.<\/li>\n<\/ul>\n<p>Ensuite, cr\u00e9ez un fichier nomm\u00e9 <code>.github\/workflows\/generate_report.yml<\/code>\u00a0avec le code suivant :<\/p>\n<pre><code class=\"language-yaml\">name: Generate Kinsta Analytics Report\n\non:\n  push:\n    branches: [main]\n  workflow_dispatch:\n\njobs:\n  build-and-run:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout Repository\n        uses: actions\/checkout@v4\n\n      - name: Set up Python\n        uses: actions\/setup-python@v5\n        with:\n          python-version: '3.12'\n\n      - name: Install dependencies\n        run: |\n          python -m pip install --upgrade pip\n          pip install -r requirements.txt\n\n      - name: Run Report Script\n        env:\n          KINSTA_API_KEY: ${{ secrets.KINSTA_API_KEY }}\n          KINSTA_ENV_ID: ${{ secrets.KINSTA_ENV_ID }}\n          KINSTA_SITE_ID: ${{ secrets.KINSTA_SITE_ID }}\n          KINSTA_COMPANY_ID: ${{ secrets.KINSTA_COMPANY_ID }}\n          GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}\n        run: python main.py\n\n      - name: Upload Report\n        uses: actions\/upload-artifact@v4\n        with:\n          name: Kinsta-Advanced-Report\n          path: \"*.pdf\"<\/code><\/pre>\n<p>GitHub utilise ce fichier pour ex\u00e9cuter automatiquement votre code via GitHub Actions. Voyons cela de plus pr\u00e8s :<\/p>\n<pre><code class=\"language-yaml\">name: Generate Kinsta Analytics Report\n\non:\n  push:\n    branches: [main]\n  workflow_dispatch:<\/code><\/pre>\n<ul>\n<li><code>name<\/code> : le nom de votre projet tel qu&rsquo;il apparait dans l&rsquo;onglet <strong>Actions<\/strong> sur GitHub.<\/li>\n<li><code>on<\/code> : d\u00e9termine quand d\u00e9clencher le flux de travail.<\/li>\n<li><code>push<\/code> : le flux de travail s&rsquo;ex\u00e9cute chaque fois que vous transf\u00e9rez une modification de code vers la branche principale.<\/li>\n<li><code>workflow_dispatch<\/code> : vous permet d&rsquo;ex\u00e9cuter le flux de travail manuellement.<\/li>\n<\/ul>\n<pre><code class=\"language-yaml\">jobs:\n  build-and-run:\n    runs-on: ubuntu-latest<\/code><\/pre>\n<ul>\n<li><code>jobs<\/code> : le d\u00e9but des t\u00e2ches \u00e0 effectuer.<\/li>\n<li><code>build-and-run<\/code> : un nom arbitraire qui identifie une s\u00e9quence sp\u00e9cifique d&rsquo;actions.<\/li>\n<li><code>runs-on<\/code> : sp\u00e9cifie le syst\u00e8me sur lequel le flux de travail doit s&rsquo;ex\u00e9cuter.<\/li>\n<li><code>ubuntu-latest<\/code> : d\u00e9finit la derni\u00e8re version d&rsquo;Ubuntu Linux.<\/li>\n<\/ul>\n<pre><code class=\"language-yaml\">steps:\n      - name: Checkout Repository\n        uses: actions\/checkout@v4\n\n      - name: Set up Python\n        uses: actions\/setup-python@v5\n        with:\n          python-version: '3.12'<\/code><\/pre>\n<ul>\n<li><code>steps<\/code> : la s\u00e9quence d&rsquo;op\u00e9rations \u00e0 effectuer.<\/li>\n<li><code>name<\/code> : le nom de l&rsquo;op\u00e9ration \u00e0 effectuer<\/li>\n<li><code>uses<\/code> : le module GitHub pr\u00e9configur\u00e9 (Action)<\/li>\n<\/ul>\n<pre><code class=\"language-yaml\">     - name: Install dependencies\n        run: |\n          python -m pip install --upgrade pip\n          pip install -r requirements.txt<\/code><\/pre>\n<ul>\n<li><code>python -m pip install --upgrade pip<\/code> : met \u00e0 jour pip (le <a href=\"https:\/\/pypi.org\/project\/pip\/\" target=\"_blank\" rel=\"noopener noreferrer\">gestionnaire de paquets Python<\/a>) vers la derni\u00e8re version disponible.<\/li>\n<li><code>pip install -r requirements.txt<\/code> : lit le fichier <code>requirements.txt<\/code> et installe les paquets qui y sont r\u00e9pertori\u00e9s.<\/li>\n<\/ul>\n<pre><code class=\"language-yaml\">     - name: Run Report Script\n        env:\n          KINSTA_API_KEY: ${{ secrets.KINSTA_API_KEY }}\n          KINSTA_ENV_ID: ${{ secrets.KINSTA_ENV_ID }}\n          KINSTA_SITE_ID: ${{ secrets.KINSTA_SITE_ID }}\n          KINSTA_COMPANY_ID: ${{ secrets.KINSTA_COMPANY_ID }}\n          GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}\n        run: python main.py<\/code><\/pre>\n<ul>\n<li><code>env<\/code> : r\u00e9cup\u00e8re les valeurs des variables d&rsquo;environnement de GitHub Secrets.<\/li>\n<li><code>run: python main.py<\/code> : lance l&rsquo;interpr\u00e9teur Python et ex\u00e9cute le fichier <code>main.py.<\/code><\/li>\n<\/ul>\n<pre><code class=\"language-yaml\">     - name: Upload Report\n        uses: actions\/upload-artifact@v4\n        with:\n          name: Kinsta-Advanced-Report\n          path: \"*.pdf\"<\/code><\/pre>\n<ul>\n<li><code>uses<\/code> : actions\/upload-artifact@v4 : utilise l&rsquo;action GitHub pour g\u00e9rer les artefacts, un fichier ou un dossier g\u00e9n\u00e9r\u00e9 pendant l&rsquo;ex\u00e9cution du script.<\/li>\n<li><code>with<\/code> : d\u00e9finit les r\u00e9glages de configuration.<\/li>\n<\/ul>\n<p>La configuration de votre projet d&rsquo;automatisation est termin\u00e9e. Il est maintenant temps de cr\u00e9er les scripts Python.<\/p>\n<h3>Interroger l&rsquo;API Kinsta par programme<\/h3>\n<p>Une fois que vous avez termin\u00e9 la configuration, naviguez vers le r\u00e9pertoire racine de votre projet GitHub et cr\u00e9ez un nouveau fichier nomm\u00e9 <code>kinsta_utils.py<\/code> avec le code suivant :<\/p>\n<pre><code class=\"language-python\">import requests\nimport os\n\nKINSTA_API_KEY = os.getenv(\"KINSTA_API_KEY\")\nKINSTA_SITE_ID = os.getenv(\"KINSTA_SITE_ID\")\nKINSTA_ENV_ID = os.getenv(\"KINSTA_ENV_ID\")\nKINSTA_COMPANY_ID = os.getenv(\"KINSTA_COMPANY_ID\")\nBASE_URL = f\"https:\/\/api.kinsta.com\/v2\/sites\/environments\/{KINSTA_ENV_ID}\/analytics\"\n\ndef get_headers():\n    return {\"Authorization\": f\"Bearer {KINSTA_API_KEY}\"}<\/code><\/pre>\n<ul>\n<li>Les deux premi\u00e8res instructions d&rsquo;<code>importation<\/code> chargent la biblioth\u00e8que standard permettant d&rsquo;effectuer des requ\u00eates HTTP et le module permettant d&rsquo;interagir avec le syst\u00e8me d&rsquo;exploitation (<code>os<\/code>).<\/li>\n<li>Les quatre lignes suivantes (<code>os.getenv<\/code>) r\u00e9cup\u00e8rent vos informations d&rsquo;identification aupr\u00e8s de GitHub Secrets.<\/li>\n<li><code>BASE_URL<\/code> d\u00e9finit le point de terminaison principal de l&rsquo;API Kinsta utilis\u00e9 par le script.<\/li>\n<li>La fonction <code>get_headers<\/code> g\u00e9n\u00e8re l&rsquo;en-t\u00eate d&rsquo;autorisation, qui comprendra la cl\u00e9 de l&rsquo;API Kinsta.<\/li>\n<\/ul>\n<p>Ensuite, cr\u00e9ez une fonction d&rsquo;aide qui convertit les donn\u00e9es brutes renvoy\u00e9es par l&rsquo;API en m\u00e9gaoctets.<\/p>\n<pre><code class=\"language-python\">def format_bytes_to_mb(bytes_value):\n    \"\"\"Converts raw bytes from API to human-readable Megabytes.\"\"\"\n\n    try:\n        # Standard conversion to MB\n        # return round(int(bytes_value) \/ (1024 * 1024), 2)\n\n        # Decimal standard (used in MyKinsta dashboard) \n        return round(int(bytes_value) \/ 1_000_000, 2)\n\n    except (ValueError, TypeError):\n        return 0<\/code><\/pre>\n<ul>\n<li>Ce code propose deux options. La premi\u00e8re utilise la norme binaire (<code>1024 x 1024<\/code>) et la seconde la norme d\u00e9cimale. La division par <code>1_000_000<\/code> garantit que le nombre dans votre rapport PDF correspond au nombre que vos clients verraient dans MyKinsta Analytics.<\/li>\n<\/ul>\n<p>La fonction suivante interroge l&rsquo;API Kinsta et renvoie un ensemble de donn\u00e9es brutes :<\/p>\n<pre><code class=\"language-python\">def fetch_kinsta_metric(endpoint, start_date, end_date):\n\n    url = f\"{BASE_URL}\/{endpoint}\"\n\n    params = {\n        \"company_id\": KINSTA_COMPANY_ID,\n        \"from\": f\"{start_date}T00:00:00.000Z\",\n        \"to\": f\"{end_date}T23:59:59.000Z\"\n    }\n\n    try:\n        response = requests.get(url, headers=get_headers(), params=params)\n        if response.status_code == 200:\n            data_node = response.json()['analytics']['analytics_response']['data'][0]\n            total = data_node.get('total', 0)\n            dataset = data_node.get('dataset', [])[:7]\n            return total, dataset\n\n    except Exception as e:\n        print(f\"Error fetching {endpoint}: {e}\")\n\n    return 0, []<\/code><\/pre>\n<ul>\n<li>La fonction <code>fetch_kinsta_metric<\/code> prend trois arguments : <code>endpoint<\/code>, <code>start_date<\/code> et <code>end_date<\/code>. Ceux-ci sont utilis\u00e9s pour construire l&rsquo;URL de la requ\u00eate. Le point de terminaison peut \u00eatre <code>visits<\/code>, <code>bandwidth<\/code> ou <code>cdn-bandwidth<\/code>.<\/li>\n<li>Le tableau <code>params<\/code> contient les param\u00e8tres de la requ\u00eate.<\/li>\n<li>La r\u00e9ponse de Kinsta est un objet JSON imbriqu\u00e9 (<code>data_node<\/code>) qui fournit les valeurs agr\u00e9g\u00e9es pour la p\u00e9riode (<code>total<\/code>) et une liste de valeurs quotidiennes (<code>dataset<\/code>).<\/li>\n<\/ul>\n<p>La derni\u00e8re fonction du fichier <code>kinsta_utils.py<\/code> r\u00e9cup\u00e8re le nom du site.<\/p>\n<pre><code class=\"language-python\">def fetch_site_name():\n    url = f\"https:\/\/api.kinsta.com\/v2\/sites\/{KINSTA_SITE_ID}\"\n    \n    try:\n        response = requests.get(url, headers=get_headers())\n        if response.status_code == 200:\n            data = response.json()\n            site_data = data.get('site', {})\n            \n            site_label = site_data.get('display_name', 'Unknown Site')\n            \n            env_label = \"Unknown Env\"\n            envs = site_data.get('environments', [])\n            for env in envs:\n                if env.get('id') == KINSTA_ENV_ID:\n                    env_label = env.get('display_name')\n                    break\n            \n            return f\"{site_label} ({env_label})\"\n        else:\n            print(f\"Kinsta API Error: {response.status_code} - {response.text}\")\n    except Exception as e:\n        print(f\"Error fetching site name: {e}\")\n        \n    return \"Unknown Site\"<\/code><\/pre>\n<p>Ce code devrait \u00eatre explicite. Veuillez vous r\u00e9f\u00e9rer \u00e0 la r\u00e9f\u00e9rence de l&rsquo;API pour plus de d\u00e9tails sur le <a href=\"https:\/\/api-docs.kinsta.com\/api-reference\/wordpress-sites\/get-site-by-id\" target=\"_blank\" rel=\"noopener noreferrer\">point de terminaison <code>sites<\/code><\/a>.<\/p>\n<p>Il ne reste plus qu&rsquo;\u00e0 mettre en place le flux de travail.<\/p>\n<h3>Automatiser le flux de travail avec Python et Gemini<\/h3>\n<p>Le dernier fichier que vous devez cr\u00e9er est le moteur de votre application. Toujours dans le r\u00e9pertoire racine de votre projet GitHub, cr\u00e9ez un fichier <code>main.py<\/code>. Pour commencer, ajoutez le code suivant :<\/p>\n<pre><code class=\"language-python\">import os\nimport matplotlib\nmatplotlib.use('Agg')\nimport matplotlib.pyplot as plt\nfrom google.genai import Client\nfrom fpdf import FPDF, XPos, YPos\nfrom datetime import datetime, timedelta\nfrom kinsta_utils import fetch_kinsta_metric, format_bytes_to_mb, fetch_site_name\n\nREPORT_LANG = \"en\" \nMODEL_ID = \"gemini-2.5-flash\" \nGEMINI_API_KEY = os.getenv(\"GEMINI_API_KEY\")\nclient = Client(api_key=GEMINI_API_KEY)\n\ntoday = datetime.now()\ncurr_end_dt = today - timedelta(days=1)\ncurr_start_dt = today - timedelta(days=7)\nprev_end_dt = today - timedelta(days=8)\nprev_start_dt = today - timedelta(days=14)\n\nCURR_RANGE = f\"{curr_start_dt.strftime('%b %d')} - {curr_end_dt.strftime('%b %d')}\"\nPREV_RANGE = f\"{prev_start_dt.strftime('%b %d')} - {prev_end_dt.strftime('%b %d')}\"\n\nDATES = [\n    prev_start_dt.strftime(\"%Y-%m-%d\"), \n    prev_end_dt.strftime(\"%Y-%m-%d\"), \n    curr_start_dt.strftime(\"%Y-%m-%d\"), \n    curr_end_dt.strftime(\"%Y-%m-%d\")\n]\n\nCURR_DAYS_LABELS = [(curr_start_dt + timedelta(days=i)).strftime(\"%d %a\") for i in range(7)]\nPREV_DAYS_LABELS = [(prev_start_dt + timedelta(days=i)).strftime(\"%d %a\") for i in range(7)]\nX_AXIS_LABELS = [(curr_start_dt + timedelta(days=i)).strftime(\"%d\") for i in range(7)]<\/code><\/pre>\n<p>Voici comment le script est configur\u00e9 :<\/p>\n<ul>\n<li>Les d\u00e9clarations <code>import<\/code> chargent les biblioth\u00e8ques n\u00e9cessaires, et <code>matplotlib.use('Agg')<\/code> demande \u00e0 Python de g\u00e9n\u00e9rer les graphiques et de les garder en m\u00e9moire.<\/li>\n<li>Le bloc suivant d\u00e9finit la langue (<code>en<\/code>) et le mod\u00e8le (<code>gemini-2.5-flash<\/code>), puis initialise le client Google.<\/li>\n<li>Il d\u00e9finit ensuite des fen\u00eatres temporelles pour comparer les valeurs des sept derniers jours avec celles des sept jours pr\u00e9c\u00e9dents.<\/li>\n<li>Enfin, il d\u00e9finit les libell\u00e9s des tableaux et des graphiques.<\/li>\n<\/ul>\n<p>L&rsquo;\u00e9tape suivante consiste \u00e0 d\u00e9finir une classe <code>KinstaReport<\/code> pour g\u00e9n\u00e9rer des pages de rapport \u00e0 l&rsquo;aide de la biblioth\u00e8que FPDF :<\/p>\n<pre><code class=\"language-python\">class KinstaReport(FPDF):\n    def __init__(self, site_name=\"Unknown Site\"):\n        super().__init__()\n        self.site_name = site_name\n\n    def header(self):\n        self.set_font(\"Helvetica\", \"B\", 8)\n        self.set_text_color(150)\n        # Site name\n        self.cell(100, 10, f\"Site: {self.site_name}\", align=\"L\")\n        # Date generated\n        self.cell(0, 10, f\"Kinsta Analytics Report | Generated: {datetime.now().strftime('%Y-%m-%d')}\", \n                  align=\"R\", new_x=XPos.LMARGIN, new_y=YPos.NEXT)\n\n    def add_metric_page(self, title, chart_path, prev_vals, curr_vals, unit=\"\"):\n        self.add_page()\n        # Page title\n        self.set_font(\"Helvetica\", \"B\", 24)\n        self.set_text_color(83, 51, 237)\n        self.cell(0, 15, title, align=\"C\", new_x=XPos.LMARGIN, new_y=YPos.NEXT)\n        \n        # Subtitle\n        self.set_font(\"Helvetica\", \"I\", 10)\n        self.set_text_color(120)\n        self.cell(0, 5, f\"Comparison: {CURR_RANGE} vs {PREV_RANGE}\", align=\"C\", new_x=XPos.LMARGIN, new_y=YPos.NEXT)\n        \n        self.image(chart_path, x=10, y=42, w=190)\n        \n        # Data tables\n        self.set_y(150)\n        self.set_font(\"Helvetica\", \"B\", 10)\n        self.set_fill_color(245, 245, 255)\n        self.set_text_color(83, 51, 237)\n        \n        # Table header\n        col1, col2 = 35, 60\n        self.cell(col1, 10, \" Day (Prev)\", border=1, align='C', fill=True, new_x=XPos.RIGHT, new_y=YPos.TOP)\n        self.cell(col2, 10, f\"Value {unit}\", border=1, align='C', fill=True, new_x=XPos.RIGHT, new_y=YPos.TOP)\n        self.cell(col1, 10, \" Day (Curr)\", border=1, align='C', fill=True, new_x=XPos.RIGHT, new_y=YPos.TOP)\n        self.cell(col2, 10, f\"Value {unit}\", border=1, align='C', fill=True, new_x=XPos.LMARGIN, new_y=YPos.NEXT)\n        \n        self.set_font(\"Helvetica\", \"\", 10)\n        self.set_text_color(50)\n        for i in range(7):\n            # Zebra striping\n            fill = (i % 2 == 0)\n            if fill: self.set_fill_color(250, 250, 250)\n            else: self.set_fill_color(255, 255, 255)\n            \n            self.cell(col1, 9, f\" {PREV_DAYS_LABELS[i]}\", border=1, align='C', fill=fill, new_x=XPos.RIGHT, new_y=YPos.TOP)\n            self.cell(col2, 9, f\" {prev_vals[i]}\", border=1, align='C', fill=fill, new_x=XPos.RIGHT, new_y=YPos.TOP)\n            self.cell(col1, 9, f\" {CURR_DAYS_LABELS[i]}\", border=1, align='C', fill=fill, new_x=XPos.RIGHT, new_y=YPos.TOP)\n            self.cell(col2, 9, f\" {curr_vals[i]}\", border=1, align='C', fill=fill, new_x=XPos.LMARGIN, new_y=YPos.NEXT)<\/code><\/pre>\n<p>Nous n&rsquo;entrerons pas dans les d\u00e9tails de ce code. Pour plus d&rsquo;informations sur la biblioth\u00e8que FPDF, veuillez vous r\u00e9f\u00e9rer aux ressources en ligne :<\/p>\n<ul>\n<li><a href=\"https:\/\/py-pdf.github.io\/fpdf2\/Tutorial.html\">Tutoriel sur FPDF<\/a><\/li>\n<li><a href=\"https:\/\/py-pdf.github.io\/fpdf2\/Tables.html\">Cr\u00e9ation de tableaux<\/a><\/li>\n<li><a href=\"https:\/\/py-pdf.github.io\/fpdf2\/Images.html\">Ajout d&rsquo;images<\/a><\/li>\n<li><a href=\"https:\/\/py-pdf.github.io\/fpdf2\/Maths.html#charts-graphs\">Graphiques et diagrammes<\/a><\/li>\n<\/ul>\n<p>D\u00e9finissez ensuite la fonction <code>generated_chart<\/code>. Cette fonction convertit les donn\u00e9es brutes re\u00e7ues de Kinsta en graphiques.<\/p>\n<pre><code class=\"language-python\">def generate_chart(labels, curr, prev, title, ylabel, filename, is_bar=False):\n    plt.figure(figsize=(10, 5), dpi=100)\n    ax = plt.gca()\n    \n    ax.spines['top'].set_visible(False)\n    ax.spines['right'].set_visible(False)\n    ax.spines['left'].set_color('#dddddd')\n    ax.spines['bottom'].set_color('#dddddd')\n\n    if is_bar:\n        # Bar Chart for bandwidth\n        bars = plt.bar(labels, curr, color='#00c4b4', alpha=0.6, label='Current Period', width=0.6)\n        # Add labels above the bars\n        for bar in bars:\n            height = bar.get_height()\n            plt.text(bar.get_x() + bar.get_width()\/2., height + 0.02, f'{height}', ha='center', va='bottom', fontsize=8, color='#00a194')\n    else:\n        # Line chart for visits\n        plt.plot(labels, curr, color='#5333ed', marker='o', markersize=6, linewidth=3, label='Current', zorder=3)\n        plt.plot(labels, prev, color='#a1a1a1', linestyle='--', marker='x', markersize=5, linewidth=1.5, label='Previous', alpha=0.6)\n        \n        plt.fill_between(labels, curr, color='#5333ed', alpha=0.1)\n    \n    plt.title(title, fontsize=14, pad=20, color='#333333', fontweight='bold')\n    plt.ylabel(ylabel, color='#666666')\n    plt.xlabel(\"Day of Month\", color='#666666')\n    plt.legend(frameon=False, loc='upper right')\n    plt.grid(axis='y', linestyle='--', alpha=0.3)\n    plt.tight_layout()\n    plt.savefig(filename)\n    plt.close()<\/code><\/pre>\n<p>Cette fonction utilise la biblioth\u00e8que Matplotlib pour convertir les donn\u00e9es extraites de Kinsta en graphiques \u00e0 inclure dans le rapport PDF. Pour plus d&rsquo;informations sur l&rsquo;utilisation de la biblioth\u00e8que Matplotlib, veuillez vous r\u00e9f\u00e9rer \u00e0 la documentation en ligne :<\/p>\n<ul>\n<li><a href=\"https:\/\/matplotlib.org\/stable\/api\/pyplot_summary.html\" target=\"_blank\" rel=\"noopener noreferrer\">Matplotlib Pyplot<\/a><\/li>\n<li><a href=\"https:\/\/matplotlib.org\/stable\/users\/explain\/customizing.html\" target=\"_blank\" rel=\"noopener noreferrer\">Personnaliser Matplotlib<\/a><\/li>\n<\/ul>\n<p>Enfin, ajoutez la fonction qui combine toutes les parties que nous avons d\u00e9crites jusqu&rsquo;\u00e0 pr\u00e9sent.<\/p>\n<pre><code class=\"language-python\">def main():\n    site_display_name = fetch_site_name()\n\n    metrics = {\n        \"visits\": {\"title\": \"Site Visits\", \"unit\": \"\"},\n        \"bandwidth\": {\"title\": \"Server Bandwidth\", \"unit\": \"(MB)\"},\n        \"cdn-bandwidth\": {\"title\": \"CDN Bandwidth\", \"unit\": \"(MB)\"}\n    }\n    \n    report_data = {}\n    for key in metrics:\n        _, data_curr = fetch_kinsta_metric(key, DATES[2], DATES[3])\n        _, data_prev = fetch_kinsta_metric(key, DATES[0], DATES[1])\n        \n        curr_vals = []\n        prev_vals = []\n        for i in range(7):\n            c = float(data_curr[i]['value']) if i &lt; len(data_curr) else 0\n            p = float(data_prev[i]['value']) if i &lt; len(data_prev) else 0\n            \n            if \"bandwidth\" in key:\n                curr_vals.append(format_bytes_to_mb(c))\n                prev_vals.append(format_bytes_to_mb(p))\n            else:\n                curr_vals.append(int(c))\n                prev_vals.append(int(p))\n                \n        report_data[key] = {\"curr\": curr_vals, \"prev\": prev_vals}\n\n    pdf = KinstaReport(site_name=site_display_name)\n    \n    for key, info in metrics.items():\n        chart_file = f\"{key}_chart.png\"\n        generate_chart(X_AXIS_LABELS, report_data[key][\"curr\"], report_data[key][\"prev\"], \n                       f\"{info['title']} Trends\", \"Units\", chart_file, is_bar=(\"bandwidth\" in key))\n        pdf.add_metric_page(info[\"title\"], chart_file, report_data[key][\"prev\"], report_data[key][\"curr\"], info[\"unit\"])\n\n    # Executive Summary\n    pdf.add_page()\n    pdf.set_font(\"Helvetica\", \"B\", 20)\n    pdf.set_text_color(83, 51, 237)\n    pdf.cell(0, 15, \"Executive Summary\", align=\"C\", new_x=XPos.LMARGIN, new_y=YPos.NEXT)\n    \n    curr_visits = sum(report_data['visits']['curr'])\n    prev_visits = sum(report_data['visits']['prev'])\n    curr_bw = sum(report_data['bandwidth']['curr'])\n    prev_bw = sum(report_data['bandwidth']['prev'])\n\n    try:\n        summary_prompt = (\n            f\"Analyze Kinsta performance for site {site_display_name}. \"\n            f\"Current Period ({CURR_RANGE}): {curr_visits} visits, {curr_bw:.2f}MB server bandwidth. \"\n            f\"Previous Period ({PREV_RANGE}): {prev_visits} visits, {prev_bw:.2f}MB server bandwidth. \"\n            f\"Compare these periods and identify trends. Language: {REPORT_LANG}. Max 4 sentences.\"\n        )\n        response = client.models.generate_content(model=MODEL_ID, contents=summary_prompt)\n        summary = response.text\n    except Exception as e:\n        summary = f\"Analytical insights unavailable. Error: {str(e)}\"\n\n    pdf.set_y(40)\n    pdf.set_font(\"Helvetica\", \"\", 12)\n    pdf.set_text_color(0)\n    pdf.multi_cell(0, 8, summary)\n    \n    report_filename = f\"Kinsta_Report_{datetime.now().strftime('%Y-%m-%d')}.pdf\"\n    pdf.output(report_filename)\n    print(f\"Report generated: {report_filename}\")\n\nif __name__ == \"__main__\":\n    main()<\/code><\/pre>\n<p>Voici ce que fait ce code :<\/p>\n<ul>\n<li>La boucle <code>for<\/code> parcourt le tableau de <code>metrics<\/code> et interroge l&rsquo;API Kinsta deux fois : une fois pour la semaine en cours et une fois pour la semaine pr\u00e9c\u00e9dente.<\/li>\n<li>Si les donn\u00e9es concernent la bande passante, la fonction <code>format_bytes_to_mb()<\/code> convertit les donn\u00e9es brutes en Mo.<\/li>\n<li>La fonction <code>report_data()<\/code> stocke les donn\u00e9es r\u00e9cup\u00e9r\u00e9es.<\/li>\n<li><code>KinstaReport<\/code> cr\u00e9e ensuite un PDF pour chaque site.<\/li>\n<li>La boucle <code>for<\/code> suivante g\u00e9n\u00e8re des images PNG pour les graphiques et cr\u00e9e une nouvelle page pour chaque mesure.<\/li>\n<li>La section suivante g\u00e9n\u00e8re le r\u00e9sum\u00e9, calcule le nombre total de visites et le nombre total de m\u00e9gaoctets pour la p\u00e9riode, et envoie une invite dynamique \u00e0 Gemini 2.5 Flash. Enfin, la r\u00e9ponse est utilis\u00e9e pour compl\u00e9ter la derni\u00e8re page du PDF.<\/li>\n<li>Le script enregistre le document avec un nom de fichier qui inclut la date du jour.<\/li>\n<li>* La condition finale garantit que le processus ne s&rsquo;ex\u00e9cute que lorsque le script est ex\u00e9cut\u00e9 en tant que programme principal.<\/li>\n<\/ul>\n<p>Il est temps de cr\u00e9er et d&rsquo;ex\u00e9cuter votre application.<\/p>\n<h3>R\u00e9cup\u00e9ration de l&rsquo;artefact<\/h3>\n<p>Vous pouvez maintenant ex\u00e9cuter votre application. Sur la page de votre projet GitHub, cliquez sur l&rsquo;onglet <strong>Actions<\/strong>. Recherchez le nom de votre action dans le menu de gauche (dans notre exemple, il s&rsquo;agit de <strong>Generate Kinsta Analytics Report<\/strong>, comme sp\u00e9cifi\u00e9 dans votre fichier <code>generate_report.yml<\/code>).<\/p>\n<figure id=\"attachment_208765\" aria-describedby=\"caption-attachment-208765\" style=\"width: 1998px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208765 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/github-actions-tab.png\" alt=\"L'onglet Actions affiche une liste de flux de travail.\" width=\"1998\" height=\"1020\"><figcaption id=\"caption-attachment-208765\" class=\"wp-caption-text\">L&rsquo;onglet Actions affiche une liste de flux de travail.<\/figcaption><\/figure>\n<p>Ensuite, cliquez sur le menu <strong>Run workflow<\/strong> \u00e0 droite, puis sur le bouton vert <strong>Run workflow<\/strong> (seule la branche principale est actuellement disponible).<\/p>\n<figure id=\"attachment_208766\" aria-describedby=\"caption-attachment-208766\" style=\"width: 2558px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208766 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/run-workflow.png\" alt=\"Ex\u00e9cuter le flux de travail GitHub.\" width=\"2558\" height=\"1008\"><figcaption id=\"caption-attachment-208766\" class=\"wp-caption-text\">Ex\u00e9cuter le flux de travail GitHub.<\/figcaption><\/figure>\n<p>La page suivante montre le flux de travail actuel. Cliquez dessus pour afficher la liste des op\u00e9rations en cours.<\/p>\n<figure id=\"attachment_208767\" aria-describedby=\"caption-attachment-208767\" style=\"width: 1918px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208767 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/use-workflow-from-branch.png\" alt=\"Utiliser le flux de travail de la branche.\" width=\"1918\" height=\"884\"><figcaption id=\"caption-attachment-208767\" class=\"wp-caption-text\">Utiliser le flux de travail de la branche.<\/figcaption><\/figure>\n<p>La section <strong>Ex\u00e9cuter le script du rapport<\/strong> fournit une liste des op\u00e9rations effectu\u00e9es, tandis que la section <strong>T\u00e9l\u00e9verser le rapport<\/strong> fournit l&rsquo;URL de t\u00e9l\u00e9chargement de l&rsquo;artefact. Cliquez sur ce lien pour t\u00e9l\u00e9charger votre rapport au format PDF.<\/p>\n<figure id=\"attachment_208768\" aria-describedby=\"caption-attachment-208768\" style=\"width: 1554px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208768 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/generate-kinsta-analytics-report-workflow.png\" alt=\"La section T\u00e9l\u00e9verser le rapport fournit le lien vers le rapport PDF.\" width=\"1554\" height=\"816\"><figcaption id=\"caption-attachment-208768\" class=\"wp-caption-text\">La section T\u00e9l\u00e9verser le rapport fournit le lien vers le rapport PDF.<\/figcaption><\/figure>\n<p>Vous trouverez le m\u00eame lien dans la section <strong>Art\u00e9facts<\/strong>, au bas de la page <strong>R\u00e9sum\u00e9<\/strong> du flux de travail.<\/p>\n<figure id=\"attachment_208769\" aria-describedby=\"caption-attachment-208769\" style=\"width: 1788px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208769 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/run-report-script-upload-report.png\" alt=\"Actions Run Report Script et Upload Report.\" width=\"1788\" height=\"1310\"><figcaption id=\"caption-attachment-208769\" class=\"wp-caption-text\">Actions Run Report Script et Upload Report.<\/figcaption><\/figure>\n<p>Les images ci-dessous montrent le rapport complet, y compris le <strong>r\u00e9sum\u00e9<\/strong> g\u00e9n\u00e9r\u00e9 par Google AI.<\/p>\n<figure id=\"attachment_208770\" aria-describedby=\"caption-attachment-208770\" style=\"width: 2120px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208770 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/kinsta-analytics-report-1.png\" alt=\"Pages du rapport sur les visites de sites et la bande passante du serveur.\" width=\"2120\" height=\"1492\"><figcaption id=\"caption-attachment-208770\" class=\"wp-caption-text\">Pages du rapport sur les visites de sites et la bande passante du serveur.<\/figcaption><\/figure>\n<figure id=\"attachment_208771\" aria-describedby=\"caption-attachment-208771\" style=\"width: 2120px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-208771 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/04\/kinsta-analytics-report-2.png\" alt=\"Pages de rapport sur la bande passante CDN et le r\u00e9sum\u00e9 ex\u00e9cutif.\" width=\"2120\" height=\"1492\"><figcaption id=\"caption-attachment-208771\" class=\"wp-caption-text\">Pages de rapport sur la bande passante CDN et le r\u00e9sum\u00e9 ex\u00e9cutif.<\/figcaption><\/figure>\n<h2>Prochaines \u00e9tapes : Comment am\u00e9liorer l&rsquo;\u00e9volutivit\u00e9 et automatiser la livraison<\/h2>\n<p>Ce n&rsquo;est qu&rsquo;un avant-go\u00fbt de ce que l&rsquo;API Kinsta peut faire lorsqu&rsquo;elle est associ\u00e9e \u00e0 des outils d&rsquo;automatisation avanc\u00e9s tels que GitHub Actions. L&rsquo;int\u00e9gration de l&rsquo;IA va plus loin, transformant les chiffres bruts en rapports approfondis pr\u00eats \u00e0 \u00eatre partag\u00e9s avec vos clients.<\/p>\n<p>Vous pouvez am\u00e9liorer vos rapports de plusieurs fa\u00e7ons :<\/p>\n<ul>\n<li>Vous pouvez configurer votre application en ajoutant une ligne au fichier YAML (<code>schedule : '0 9 * * 1'<\/code>) pour g\u00e9n\u00e9rer le rapport tous les lundis matin \u00e0 9h00.<\/li>\n<li>Vous pouvez int\u00e9grer une biblioth\u00e8que comme <code>smtplib<\/code> ou un service comme SendGrid pour envoyer le rapport directement \u00e0 votre client.<\/li>\n<li>Si vous \u00eates une agence poss\u00e9dant des dizaines, voire des centaines de sites, vous pouvez mettre en \u0153uvre une boucle qui it\u00e8re sur une liste d&rsquo;identifiants de sites pour g\u00e9n\u00e9rer tous vos rapports en une seule fois.<\/li>\n<li>Vous pouvez enrichir le contenu de votre rapport en utilisant l&rsquo;API de Kinsta pour r\u00e9cup\u00e9rer des donn\u00e9es g\u00e9ographiques, des ventilations de code HTTP, des journaux de serveur et toute autre donn\u00e9e que vous souhaitez inclure. En analysant ces donn\u00e9es, l&rsquo;IA peut identifier les tentatives d&rsquo;attaque (codes 4xx) ou les pics de trafic provenant de r\u00e9gions inattendues.<\/li>\n<li>Vous pouvez affiner votre demande pour obtenir des r\u00e9ponses plus d\u00e9taill\u00e9es et plus compl\u00e8tes de l&rsquo;IA.<\/li>\n<li>Vous pouvez personnaliser le mod\u00e8le PDF avec les logos de votre agence et de votre client.<\/li>\n<\/ul>\n<p>Les rapports automatis\u00e9s r\u00e9duisent la charge de travail de votre \u00e9quipe, et la coh\u00e9rence et la pr\u00e9cision qu&rsquo;ils apportent renforcent la confiance et la fid\u00e9lit\u00e9 de vos clients.<\/p>\n<p>Vous voulez commencer \u00e0 automatiser vos rapports clients d\u00e8s maintenant ? <a href=\"https:\/\/kinsta.com\/fr\/tarifs\/\">Souscrivez au plan<\/a> qui correspond le mieux \u00e0 vos besoins et commencez \u00e0 construire avec l&rsquo;API Kinsta d\u00e8s aujourd&rsquo;hui.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pour les agences modernes, un syst\u00e8me de rapports coh\u00e9rent et de haute qualit\u00e9 est essentiel pour conserver la confiance des clients et les fid\u00e9liser \u00e0 long &#8230;<\/p>\n","protected":false},"author":36,"featured_media":83253,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1070,953,951],"class_list":["post-83252","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-agence","topic-api","topic-statistiques"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Automatisez les rapports clients gr\u00e2ce \u00e0 l&#039;API Kinsta et \u00e0 l&#039;IA de Google.<\/title>\n<meta name=\"description\" content=\"Transformez vos donn\u00e9es d&#039;h\u00e9bergement brutes en graphiques PDF professionnels et en synth\u00e8ses analytiques pilot\u00e9es par l&#039;IA gr\u00e2ce \u00e0 l&#039;API Kinsta et \u00e0 l&#039;IA de Google.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automatiser les rapports sur les clients avec l&#039;API Kinsta et Google AI\" \/>\n<meta property=\"og:description\" content=\"Transformez vos donn\u00e9es d&#039;h\u00e9bergement brutes en graphiques PDF professionnels et en synth\u00e8ses analytiques pilot\u00e9es par l&#039;IA gr\u00e2ce \u00e0 l&#039;API Kinsta et \u00e0 l&#039;IA de Google.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-08T14:13:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-11T13:58:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/05\/automate-client-reporting-with-kinsta-api-and-google-ai.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Carlo Daniele\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Transformez vos donn\u00e9es d&#039;h\u00e9bergement brutes en graphiques PDF professionnels et en synth\u00e8ses analytiques pilot\u00e9es par l&#039;IA gr\u00e2ce \u00e0 l&#039;API Kinsta et \u00e0 l&#039;IA de Google.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/05\/automate-client-reporting-with-kinsta-api-and-google-ai.png\" \/>\n<meta name=\"twitter:creator\" content=\"@carlodaniele\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Daniele\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"26 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"Automatiser les rapports sur les clients avec l&rsquo;API Kinsta et Google AI\",\"datePublished\":\"2026-05-08T14:13:59+00:00\",\"dateModified\":\"2026-05-11T13:58:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/\"},\"wordCount\":3402,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/05\/automate-client-reporting-with-kinsta-api-and-google-ai.png\",\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/\",\"name\":\"Automatisez les rapports clients gr\u00e2ce \u00e0 l'API Kinsta et \u00e0 l'IA de Google.\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/05\/automate-client-reporting-with-kinsta-api-and-google-ai.png\",\"datePublished\":\"2026-05-08T14:13:59+00:00\",\"dateModified\":\"2026-05-11T13:58:34+00:00\",\"description\":\"Transformez vos donn\u00e9es d'h\u00e9bergement brutes en graphiques PDF professionnels et en synth\u00e8ses analytiques pilot\u00e9es par l'IA gr\u00e2ce \u00e0 l'API Kinsta et \u00e0 l'IA de Google.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/05\/automate-client-reporting-with-kinsta-api-and-google-ai.png\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/05\/automate-client-reporting-with-kinsta-api-and-google-ai.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Automatiser les rapports sur les clients avec l&#8217;API Kinsta et Google AI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\",\"name\":\"Carlo Daniele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"caption\":\"Carlo Daniele\"},\"description\":\"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.\",\"sameAs\":[\"https:\/\/frammentidicodice.com\/\",\"https:\/\/x.com\/carlodaniele\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/carlodaniele\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Automatisez les rapports clients gr\u00e2ce \u00e0 l'API Kinsta et \u00e0 l'IA de Google.","description":"Transformez vos donn\u00e9es d'h\u00e9bergement brutes en graphiques PDF professionnels et en synth\u00e8ses analytiques pilot\u00e9es par l'IA gr\u00e2ce \u00e0 l'API Kinsta et \u00e0 l'IA de Google.","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:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/","og_locale":"fr_FR","og_type":"article","og_title":"Automatiser les rapports sur les clients avec l'API Kinsta et Google AI","og_description":"Transformez vos donn\u00e9es d'h\u00e9bergement brutes en graphiques PDF professionnels et en synth\u00e8ses analytiques pilot\u00e9es par l'IA gr\u00e2ce \u00e0 l'API Kinsta et \u00e0 l'IA de Google.","og_url":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2026-05-08T14:13:59+00:00","article_modified_time":"2026-05-11T13:58:34+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/05\/automate-client-reporting-with-kinsta-api-and-google-ai.png","type":"image\/png"}],"author":"Carlo Daniele","twitter_card":"summary_large_image","twitter_description":"Transformez vos donn\u00e9es d'h\u00e9bergement brutes en graphiques PDF professionnels et en synth\u00e8ses analytiques pilot\u00e9es par l'IA gr\u00e2ce \u00e0 l'API Kinsta et \u00e0 l'IA de Google.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/05\/automate-client-reporting-with-kinsta-api-and-google-ai.png","twitter_creator":"@carlodaniele","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Carlo Daniele","Dur\u00e9e de lecture estim\u00e9e":"26 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"Automatiser les rapports sur les clients avec l&rsquo;API Kinsta et Google AI","datePublished":"2026-05-08T14:13:59+00:00","dateModified":"2026-05-11T13:58:34+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/"},"wordCount":3402,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/05\/automate-client-reporting-with-kinsta-api-and-google-ai.png","inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/","url":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/","name":"Automatisez les rapports clients gr\u00e2ce \u00e0 l'API Kinsta et \u00e0 l'IA de Google.","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/05\/automate-client-reporting-with-kinsta-api-and-google-ai.png","datePublished":"2026-05-08T14:13:59+00:00","dateModified":"2026-05-11T13:58:34+00:00","description":"Transformez vos donn\u00e9es d'h\u00e9bergement brutes en graphiques PDF professionnels et en synth\u00e8ses analytiques pilot\u00e9es par l'IA gr\u00e2ce \u00e0 l'API Kinsta et \u00e0 l'IA de Google.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/05\/automate-client-reporting-with-kinsta-api-and-google-ai.png","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2026\/05\/automate-client-reporting-with-kinsta-api-and-google-ai.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/api-kinsta-et-google-ia\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/fr\/sujets\/api\/"},{"@type":"ListItem","position":3,"name":"Automatiser les rapports sur les clients avec l&#8217;API Kinsta et Google AI"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63","name":"Carlo Daniele","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","caption":"Carlo Daniele"},"description":"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.","sameAs":["https:\/\/frammentidicodice.com\/","https:\/\/x.com\/carlodaniele"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/carlodaniele\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/83252","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=83252"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/83252\/revisions"}],"predecessor-version":[{"id":83270,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/83252\/revisions\/83270"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/83252\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/83252\/translations\/it"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/83252\/translations\/fr"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/83252\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/83253"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=83252"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=83252"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=83252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}