

# Comment rapprocher les compteurs publics de X de votre propre export statistique

Vérifiez que la publication, la définition, la période couverte et l’heure d’observation correspondent avant de conclure à une divergence entre 2 relevés.

Un relevé est une valeur issue d’une source à un moment donné. Faire un rapprochement consiste à consigner ce qui correspond, ce qui diffère par son périmètre et ce qui reste inconnu. Le périmètre désigne ce qu’un chiffre comprend. Il couvre l’indicateur, les publications et la période. Une période est délimitée par un début et une fin.

Un instantané public ne permet pas de reconstituer un rapport mensuel de compte manquant. Un instantané est un relevé des compteurs publics à un moment donné. Distinguez une différence de périmètre que vous pouvez expliquer d’une différence que vous ne pouvez pas expliquer.

## Étapes de comparaison

### 1. Définissez le besoin auquel le rapport doit répondre.

Un registre de publications publiques permet de documenter les publications connues que vous pouvez consulter maintenant. Un registre contient une ligne par publication. Il ne permet pas de remplir toutes les colonnes d’un rapport privé. Il ne permet pas de recréer les données d’un mois antérieur que vous n’avez pas enregistrées.

Décrivez votre besoin en une ligne. Si vous avez besoin d’un rapport complet du compte pour un mois passé, arrêtez-vous. Indiquez qu’un instantané public ne permet pas de fournir ce rapport. Si vous disposez déjà d’un export, vous pouvez continuer. Cet export doit concerner des publications publiques connues.

### 2. Commencez par relever les données d’une publication publique connue.

Un Actor est un programme hébergé de collecte de données. Une Task est un ensemble de paramètres d’entrée enregistré pour cet Actor. L’Actor [X Post Metrics](https://apify.com/chronometrica/x-post-metrics) collecte des lignes de données publiques. Vous effectuez la comparaison. L’Actor n’attribue pas de catégorie au résultat. Une Task enregistrée fournit les paramètres d’entrée de départ. Elle ne prouve pas que la comparaison est automatique.

La version publique 1.0.4 sert de référence pour ces règles relatives aux champs. Cette version accepte `startUrls` avec 1 à 1 000 URL de statut de publications publiques connues. Une URL de statut est l’adresse Web d’une publication. Ici, une publication est un message public sur X possédant sa propre URL de statut. X est le site public accessible à l’adresse x.com.

Vérifiez une exécution dans cet ordre. Commencez par la Task enregistrée. Remplacez l’exemple par votre URL de test. Examinez ensuite les champs natifs de la ligne. Consultez ensuite `postMetricStatus` pour chaque indicateur. Lisez enfin le récapitulatif de l’exécution. Ne placez pas le récapitulatif de l’exécution dans la ligne de la publication.

Les paramètres d’entrée actuels de la Task enregistrée sont un exemple :

```json
{
  "startUrls": [
    "https://x.com/OpenAI/status/2074907025537224840",
    "https://x.com/OpenAI/status/2074907027378511884",
    "https://x.com/OpenAI/status/2074907031862190406"
  ]
}
```

Étapes de comparaison

Ces 3 URL sont des exemples. Remplacez-les par des publications publiques que vous connaissez. Un test pilote est votre première exécution à petite échelle. Utilisez une seule URL pour ce test. Une seule URL permet de limiter la taille du test.

Cet Actor ne parcourt pas le fil de publications d’un profil. Il ne produit pas de rapport de compte sur une plage de dates. Il n’accède pas aux statistiques privées. Il ne récupère pas un historique que vous n’avez pas enregistré. Il ne collecte pas les publications protégées. Une publication protégée n’est pas publique. Il n’utilise pas les données de connexion d’un compte. Ces données sont les mots de passe ou autres informations secrètes utilisées pour se connecter.

Chaque URL d’entrée produit une ligne correspondant à une tentative de collecte. Cette ligne comprend `status` et `statusReason`, même lorsque des informations utiles manquent. `status` indique l’état final de cette ligne. `statusReason` en donne brièvement la raison. Un compteur manquant n’est pas égal à zéro. Zéro est un nombre renvoyé. La valeur null signifie que la valeur n’était pas disponible.

Vérifiez 4 éléments sur la ligne du test pilote avant de vous y fier. Vérifiez que `postId` et `postUrl` correspondent à la publication demandée. Vérifiez `status`. Vérifiez `observedAt`. Vérifiez `postMetricStatus` pour chaque indicateur que vous utiliserez. `observedAt` est l’heure d’observation. L’heure d’observation est le moment où le compteur a été relevé. L’heure de publication est le moment où la publication a été publiée. Ne confondez pas ces heures.

Les champs natifs de la ligne sont `inputUrl`, `postUrl`, `postId`, `profileId`, `views`, `likes`, `replies`, `reposts`, `quotes`, `bookmarks`, `profileFollowers`, `postMetricStatus`, `status`, `statusReason` et `observedAt`.

`inputUrl` est l’URL que vous avez envoyée. `postUrl` est l’URL de la publication indiquée sur la ligne. `postId` est l’identifiant de la publication. `profileId` est l’identifiant du compte. Un compteur est un nombre enregistré pour cette publication ou ce compte. `views` compte les événements de vue publics. La ligne contient aussi `likes`, `replies`, `reposts`, `quotes` et `bookmarks`. Un J’aime indique qu’une personne a aimé la publication. Une réponse est un message en réponse à la publication. Une republication est un partage de la publication. Une citation est un partage accompagné de texte. Un signet est une publication enregistrée. N’additionnez pas ces compteurs ici. Cette méthode ne calcule aucun taux à partir de ces compteurs.

`profileFollowers` est le nombre public d’abonnés de ce compte au moment indiqué par `observedAt`. Un abonné est un compte qui suit le profil. N’utilisez pas `profileFollowers` comme nombre de vues d’une publication.

La précision indique si un nombre est exact, arrondi ou de précision inconnue. `postMetricStatus` donne cette précision pour chaque indicateur renvoyé. Conservez la précision avec le nombre. Si un indicateur manque, laissez-le manquant. N’inscrivez pas 0 pour combler cette absence.

Un contrôle est une exécution vérifiée sur des données publiques, utilisée pour voir quels champs sont renvoyés. Un contrôle public actuel a renvoyé les champs d’identification et de temps demandés. Ces champs comprennent `postId`, `postUrl`, `profileId`, l’heure de publication et `observedAt`. Il a aussi renvoyé `views`, `likes`, `replies`, `reposts`, `quotes`, `bookmarks` et `profileFollowers`. Son champ `status` avait la valeur ok.

Chaque indicateur renvoyé dans `postMetricStatus` avait la valeur present/exact/public_post.

| Indicateur renvoyé | postMetricStatus du contrôle |
| --- | --- |
| views | present/exact/public_post |
| likes | present/exact/public_post |
| replies | present/exact/public_post |
| reposts | present/exact/public_post |
| quotes | present/exact/public_post |
| bookmarks | present/exact/public_post |

La valeur present signifie que l’indicateur figurait sur la ligne. La valeur exact signifie que la valeur de ce contrôle était exacte. `public_post` signifie que la source était une publication publique. Ce contrôle montre que les compteurs publics peuvent être collectés. Il ne montre pas qu’un compteur public est égal à une valeur d’un export privé. Votre propre exécution peut donner un résultat différent. Examinez votre propre ligne. Ne recopiez pas l’état du contrôle sur une publication que ce contrôle n’a pas consultée.

Le récapitulatif de l’exécution n’est pas une ligne de publication. Ses champs sont `inputCount`, `datasetRows`, `usefulRows`, `billableRows`, `failedRows`, `statusCounts` et `stopReason`.

`inputCount` compte les URL d’entrée. `datasetRows` compte les lignes écrites. `usefulRows` compte les lignes contenant des informations utiles. `billableRows` compte les lignes que l’exécution marque comme facturables. `failedRows` compte les lignes en échec. `statusCounts` regroupe les nombres de lignes par état. `stopReason` indique pourquoi l’exécution s’est arrêtée. Ne collez aucune de ces valeurs dans une cellule de vues d’une publication. Cet article n’invente pas ces nombres. Aucun prix n’est indiqué ici.

### 3. Consignez les données de votre export déjà en votre possession.

Un export est un fichier issu d’un rapport statistique que vous avez le droit d’utiliser. Un rapport autorisé est un rapport que vous avez le droit d’utiliser. N’utilisez un export que si vous en avez le droit. Cette méthode ne récupère pas d’export privé depuis X. Elle ne remplace pas gratuitement un tableau de bord. Elle ne contourne pas les règles d’accès.

Les anciennes publications publiques ne déterminent ni le prix ni les conditions d’accès actuels à X Analytics. Consultez [Alternatives aux statistiques Twitter](https://www.reddit.com/r/Twitter/comments/1e5a688/alternatives_for_twitter_analytics/) et [Statistiques X (Twitter)](https://www.reddit.com/r/Twitter/comments/1abvw05/x_twitter_analytics/). Si vous ne disposez pas déjà du rapport, laissez les données de ce côté comme inconnues.

Si vous disposez d’un rapport autorisé, recopiez les éléments suivants depuis ce rapport. Recopiez l’identifiant de la publication. Recopiez le nom de l’indicateur. Recopiez sa définition depuis les notes du rapport. Recopiez la plage de dates et le fuseau horaire. Recopiez l’heure d’extraction. L’heure d’extraction est le moment où le fichier du rapport a été obtenu. Si le rapport précise le périmètre payant ou organique, recopiez aussi cette information. Le périmètre payant couvre les publications sponsorisées. Le périmètre organique couvre les publications que le rapport indique comme non sponsorisées. Si le rapport ne précise pas cette répartition, ne l’inventez pas.

Ne supposez pas qu’une colonne nommée impressions correspond aux vues publiques. Ne considérez pas le total d’un compte comme le total d’une seule publication. Utilisez la définition du rapport. Si la définition manque, la comparaison reste indéterminée.

### 4. Faites correspondre les lignes à partir de l’identifiant de la publication.

Faites correspondre `postId` à l’identifiant de la publication dans votre export. Ne vous fondez pas sur le titre ou le texte. 2 publications différentes peuvent employer les mêmes mots. Une publication dont la légende a changé peut conserver le même identifiant. L’identifiant est la clé de correspondance.

Conservez une ligne publique qui n’a pas de ligne correspondante dans le rapport. Conservez une ligne du rapport qui n’a pas de ligne publique correspondante. Laissez comme inconnu un identifiant que vous ne pouvez pas lire. Ne transformez pas une correspondance absente en 0.

Certaines lignes du rapport portent sur un compte et une période. Une telle ligne couvre plusieurs publications sur une période donnée. Ne la reliez pas à une seule publication. Ne considérez pas le chiffre du compte comme celui de cette publication. Indiquez le niveau d’agrégation sur la ligne. Le niveau d’agrégation précise si la ligne représente une publication, un jour ou un compte.

### 5. Déterminez les périmètres avant de comparer les chiffres.

Attribuez une seule étiquette de périmètre à la paire de valeurs.

`same_metric_scope` signifie que la définition de l’indicateur, la publication et la période couverte correspondent.

`different_metric_scope` signifie que vous pouvez montrer que la définition ou la période diffère.

`definition_unknown` signifie qu’une définition nécessaire manque.

Un compteur public cumulé indique le total au moment du relevé. Le cumul signifie que les événements s’ajoutent depuis la publication jusqu’à `observedAt`. Un rapport sur une période sélectionnée indique ce qui s’est produit pendant cette seule période. Une période qui se termine hier peut donner un chiffre différent d’un total relevé aujourd’hui. Ces 2 chiffres répondent à des questions différentes.

Les vues publiques sont des événements de vue. X indique qu’elles peuvent inclure des vues répétées et la propre vue de l’auteur. Elles ne représentent pas des personnes distinctes comptées une seule fois. Consultez l’[aide actuelle sur le nombre de vues](https://help.x.com/en/using-x/view-counts) avant d’utiliser `views`. Cette page n’établit pas d’équivalence entre `views` et tous les indicateurs d’un export. Si votre export utilise une autre définition, reprenez les termes de cet export. Si vous ne pouvez pas consulter sa définition, utilisez `definition_unknown`.

Les mises à jour peuvent avoir du retard. Un retard signifie que le relevé le plus récent ne comprend pas encore un événement récent. N’attribuez pas l’écart à un retard sans preuve. Une supposition n’est pas une preuve.

### 6. Calculez un écart uniquement lorsque la comparaison le permet.

Si la définition et la période correspondent suffisamment, vous pouvez calculer l’écart entre les valeurs affichées. Utilisez une simple soustraction.

```text
displayed difference = public value - owned value
observed counter delta = later saved public value - earlier saved public value
```

Étapes de comparaison

Conservez la précision à côté du résultat. Si `postMetricStatus` n’indique pas une valeur exacte, ne qualifiez pas le résultat d’exact. Si la valeur publique est arrondie, une correspondance exacte peut être impossible. Si l’une des valeurs manque, ne calculez pas l’écart.

[2 instantanés publics enregistrés](/fr/articles/evolution-metriques-publications-facebook/) ne peuvent montrer qu’une variation entre ces moments enregistrés. Une variation observée du compteur correspond à ce changement. Elle n’existe que pour les moments que vous avez enregistrés. N’inventez pas de valeur de référence antérieure. Une valeur de référence est un relevé de départ. Vous ne pouvez pas reconstituer un mois manquant en devinant une valeur de départ.

Un compteur peut diminuer lorsque X le corrige. Une variation négative peut être réelle. N’attribuez pas chaque baisse à une erreur de lecture du fichier.

Si les périmètres ne correspondent pas, vous pouvez tout de même présenter la soustraction comme un calcul arithmétique. Indiquez qu’il s’agit d’un calcul arithmétique. Ne le présentez pas comme une explication de la cause.

### 7. Classez le résultat.

Utilisez une seule catégorie de résultat pour la comparaison que vous pouvez étayer.

`explained_scope_difference` signifie que vous pouvez désigner une différence de périmètre connue. Cette catégorie n’explique pas toute l’ampleur d’un écart chiffré.

`timing_or_precision_limit` signifie que les heures diffèrent ou que la précision empêche une correspondance exacte. Utilisez cette catégorie uniquement lorsque vous pouvez démontrer cette limite.

`comparable_values` signifie que la publication, la définition et la période couverte correspondent suffisamment pour comparer les 2 chiffres. Une correspondance sur une ligne ne prouve pas que le rapport entier est complet.

`unresolved_difference` signifie que vous ne pouvez pas étayer une explication. Laissez la cause comme inconnue.

Une fraude signifierait que les chiffres ont été falsifiés. Un écart ne prouve pas une fraude. Il ne prouve pas que le surplus a été payé. Il ne prouve pas que l’outil statistique est défectueux. Il ne prouve pas que X a masqué la publication. Ne retenez une explication que si les 2 pièces justificatives l’étayent. Une pièce justificative est la ligne publique ou la ligne du rapport en votre possession. Si la définition manque, la cause reste inconnue.

### 8. Fournissez le tableau par publication et une courte note.

Utilisez une ligne par publication. Indiquez l’identifiant de la publication et les 2 sources. Indiquez l’heure de publication et l’heure d’observation dans des cellules séparées. Indiquez le nom de l’indicateur, sa définition, la période et la précision. Signalez toute valeur manquante comme telle. Indiquez l’étiquette de périmètre et la catégorie de résultat. Si un écart chiffré reste inexpliqué, précisez-le dans la note.

Si vous ne disposez que de lignes publiques, présentez ces lignes et les limites indiquées ci-dessus. Ne prétendez pas fournir des impressions mensuelles. Ne prétendez pas fournir une portée unique. Ne prétendez pas fournir un total d’interactions issu de données privées. Ne prétendez pas fournir un retour sur campagne. Ne transformez pas les compteurs en taux.

Terminez la note par un indicateur sur une publication. Cette ligne permet soit une comparaison, soit un constat non résolu. Ne transformez pas un écart inexpliqué en explication de sa cause.

## Registre fictif de publications

Les 5 publications ci-dessous sont entièrement fictives. Elles ne constituent pas un résultat du produit. Ce ne sont pas des lignes issues de l’Actor. Dans cet exemple fictif, aucun tableau de bord n’a été remplacé. Aucun export privé n’a été récupéré. L’heure de publication n’est pas indiquée. Ne recopiez pas une heure d’observation dans la cellule de l’heure de publication. Ne transformez pas un nombre de vues en nombre de personnes distinctes comptées une seule fois.

P1 à P5 sont des identifiants de publication fictifs. Aucune de ces publications ne provient d’un export réel.

| Publication | Heure de publication | Indicateur public | Valeur publique | Heure d’observation publique | Définition publique | Période publique | Précision publique | Indicateur du rapport en votre possession | Valeur du rapport en votre possession | Heure du rapport en votre possession | Définition du rapport en votre possession | Période du rapport en votre possession | Périmètre | Calcul arithmétique | Résultat |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| P1 | non indiquée | views | 1 500 | 13 octobre à 10:00 UTC | événements de vue publics | cumul jusqu’à l’heure d’observation | non précisée | impressions | 1 200 | non indiquée | impressions documentées pour la période indiquée | du 1 au 12 octobre ; fuseau horaire non indiqué | different_metric_scope | 1 500 - 1 200 = 300 | explained_scope_difference pour le périmètre uniquement ; l’écart de 300 n’est pas entièrement expliqué |
| P2 | non indiquée | views | 1 000 puis 1 200 | 13 octobre à 10:00 UTC et 13 octobre à 12:00 UTC | nombre exact de vues publiques cumulées | cumul jusqu’à chaque relevé enregistré | exacte | aucune ligne de rapport en votre possession | aucune ligne de rapport en votre possession | aucune ligne de rapport en votre possession | aucune ligne de rapport en votre possession | aucune ligne de rapport en votre possession | même définition des vues publiques à 2 moments enregistrés | 1 200 - 1 000 = 200 | variation observée du compteur entre ces 2 moments enregistrés uniquement |
| P3 | non indiquée | views | null, et non 0 | non indiquée | les vues publiques n’étaient pas disponibles | non disponible | sans objet | non indiqué | 500 | non indiquée | non indiquée | non indiquée | valeur publique manquante ; le périmètre n’est donc pas établi | ne pas calculer | comparaison impossible faute de valeur publique ; il ne s’agit pas d’un écart de -500 |
| P4 | non indiquée | non indiqué | 2 000 | non indiquée | non indiquée | non indiquée | inconnue | non indiqué | non indiquée | non indiquée | définition manquante | non indiquée | definition_unknown | ne pas calculer | unresolved_difference |
| P5 | non indiquée | compteur documenté | 250 | même moment que le relevé du rapport en votre possession ; heure exacte non indiquée | même compteur documenté que dans le rapport en votre possession | même période que dans le rapport en votre possession ; dates non indiquées | aucune précision indiquée au-delà de la valeur 250 | compteur documenté | 250 | même moment que le relevé public ; heure exacte non indiquée | même périmètre documenté du compteur | même période que du côté public ; dates non indiquées | same_metric_scope | 250 - 250 = 0 | comparable_values pour ce compteur uniquement |

UTC est la référence horaire utilisée pour P1 et P2. Elle ne suit pas l’heure d’été locale.

P1 présente une différence de périmètre connue. La cellule publique contient les vues cumulées relevées le 13 octobre à 10:00 UTC. La cellule du rapport en votre possession contient les impressions du 1 au 12 octobre. Les vues et les impressions sur une période ne sont pas le même indicateur. Un total allant jusqu’au 13 octobre et une période qui se termine le 12 octobre ne couvrent pas la même période. C’est pourquoi l’étiquette de périmètre est `different_metric_scope`. La catégorie de résultat `explained_scope_difference` porte uniquement sur ce constat de périmètre.

La soustraction 1 500 - 1 200 = 300 est un calcul arithmétique. Elle ne correspond pas à 300 impressions manquantes vérifiées. Elle ne prouve pas une erreur de collecte. Ces 2 pièces justificatives ne permettent pas de décomposer les 300. Vous ne savez pas combien de vues ont eu lieu le 13 octobre. Vous ne savez pas combien étaient des vues répétées ou des vues de l’auteur lui-même. Vous ne savez pas quelle part de ces 300 tient à une différence dans la règle de comptage des impressions. Laissez cette partie sans explication.

P2 présente 2 relevés publics exacts de vues cumulées. Le 13 octobre à 10:00 UTC, le compteur affiche 1 000. Le 13 octobre à 12:00 UTC, il affiche 1 200. La variation observée du compteur est de 1 200 - 1 000 = 200. C’est la variation affichée entre 2 moments enregistrés. Il ne s’agit pas de 200 personnes distinctes comptées une seule fois. Il ne s’agit pas d’un rapport mensuel reconstitué. Dans cet exemple fictif, aucune ligne de rapport en votre possession ne correspond à P2. N’inventez pas de valeur de départ avant 10:00. Ne décrivez pas l’évolution entre les 2 heures. Vous n’avez pas enregistré les relevés intermédiaires.

P3 présente une valeur null pour les vues publiques et une valeur de 500 dans le rapport. La valeur null signifie que le compteur de vues publiques n’était pas disponible. Elle ne signifie pas zéro vue. Puisque la valeur publique manque, vous ne faites pas de soustraction. 500 - 0 est une équation incorrecte. 0 - 500 est également incorrect. Il n’y a pas d’écart de -500. La valeur du rapport reste du côté du rapport. Ce n’est pas un total de vues publiques. Ce résultat indique que la comparaison est impossible faute de valeur publique. Il ne constitue pas une catégorie définitive de divergence.

P4 affiche une valeur publique de 2 000 dont la précision est inconnue. Le rapport ne fournit aucune définition. Les noms des indicateurs, les heures et les périodes ne sont pas indiqués. L’étiquette de périmètre est `definition_unknown`. Vous ne pouvez pas étayer une cause. Le résultat est `unresolved_difference`. Ne supposez pas un arrondi. Ne supposez pas un retard. N’inventez pas un second nom d’indicateur.

P5 utilise le même compteur documenté, le même périmètre et le même moment des 2 côtés. Les 2 valeurs sont de 250. L’écart affiché est de 250 - 250 = 0. L’étiquette de périmètre est `same_metric_scope`. Le résultat est `comparable_values`. Ce résultat porte uniquement sur ce compteur. Il ne montre pas que chaque publication d’un rapport a été vérifiée. Il ne montre pas que tous les autres indicateurs de P5 correspondent. Il ne montre pas que le rapport est complet.

## Prochaine action

Déterminez le périmètre d’un indicateur sur une publication que vous connaissez. Utilisez le même identifiant de publication, la définition et la période couverte. Si l’écart n’est pas expliqué, laissez-le non résolu. Collectez les données publiques avec l’[Actor X Post Metrics](https://apify.com/chronometrica/x-post-metrics). Commencez avec la [Task X Post Analytics Snapshot](https://apify.com/chronometrica/x-post-metrics/examples/x-post-analytics-snapshot). Remplacez les URL d’exemple par une seule URL de publication publique connue.

## Sources et lectures complémentaires

- [Actor X Post Metrics](https://apify.com/chronometrica/x-post-metrics)
- [Task X Post Analytics Snapshot](https://apify.com/chronometrica/x-post-metrics/examples/x-post-analytics-snapshot)
- [Nombre de vues](https://help.x.com/en/using-x/view-counts)
- [Alternatives aux statistiques Twitter](https://www.reddit.com/r/Twitter/comments/1e5a688/alternatives_for_twitter_analytics/)
- [Statistiques X (Twitter)](https://www.reddit.com/r/Twitter/comments/1abvw05/x_twitter_analytics/)