Passer au contenu principal
Les endpoints de flux filtrés renvoient des Publications qui correspondent à un ensemble de règles appliquées au flux. Les règles sont composées d’opérateurs qui correspondent à différents attributs de Publication. Plusieurs règles peuvent être appliquées à l’aide de l’endpoint POST /tweets/search/stream/rules. Une fois que vous avez ajouté des règles et établi une connexion via GET /tweets/search/stream, seules les Publications correspondant à vos règles seront renvoyées. Il n’est pas nécessaire de vous déconnecter pour ajouter ou supprimer des règles.

Limites des règles

Les limites concernant le nombre de règles dépendent de votre niveau d’accès. Consultez l’introduction au flux filtré pour connaître les limites spécifiques.

Types d’opérateurs : autonomes et nécessitant une conjonction

Les opérateurs autonomes peuvent être utilisés seuls ou avec n’importe quel autre opérateur (y compris ceux qui nécessitent une conjonction). Par exemple, cette règle fonctionne parce que #hashtag est un opérateur autonome :
#xapiv2
Les opérateurs nécessitant une conjonction ne peuvent pas être utilisés seuls dans une règle ; ils ne peuvent être utilisés que lorsqu’au moins un opérateur autonome est inclus. En effet, utiliser uniquement ces opérateurs renverrait un volume extrêmement élevé de Publications. Par exemple, les règles suivantes ne sont pas prises en charge puisqu’elles ne contiennent que des opérateurs nécessitant une conjonction :
has:media
has:links OR is:retweet
Si nous ajoutons un opérateur isolé, comme l’expression "X data", la règle fonctionne correctement :
"X data" has:mentions (has:media OR has:links)

Opérateurs booléens et regroupement

Enchaînez plusieurs opérateurs à l’aide de ces outils :
OpérateurDescriptionExemple
AND (espace)Les Publications doivent répondre aux deux conditionssnow day #NoSchool correspond aux Publications contenant “snow” ET “day” ET #NoSchool
ORLes Publications doivent répondre à l’une ou l’autre conditiongrumpy OR cat OR #meme correspond aux Publications contenant “grumpy” OU “cat” OU #meme
NOT (tiret)Exclut les Publications correspondant à cette conditioncat #meme -grumpy correspond aux Publications contenant “cat” et #meme mais PAS “grumpy”
Grouping (parenthèses)Regroupez des opérateurs(grumpy cat) OR (#meme has:images) correspond à l’un ou l’autre groupe
Remarque sur les négations
  • Tous les opérateurs peuvent être niés, sauf sample:
  • L’opérateur -is:nullcast doit toujours être nié
  • Les opérateurs niés ne peuvent pas être utilisés seuls
  • Ne niez pas les opérateurs regroupés. Au lieu de skiing -(snow OR day OR noschool), utilisez skiing -snow -day -noschool

Ordre des opérations

Lorsque vous combinez AND et OR :
  1. Les opérateurs liés par l’opérateur logique AND sont d’abord combinés
  2. Puis, les opérateurs liés par l’opérateur logique OR sont appliqués
Exemples :
RequêteInterprété comme
apple OR iphone ipadapple OR (iphone ipad)
ipad iphone OR android(iphone ipad) OR android
Pour éliminer toute incertitude, utilisez des parenthèses :
(apple OR iphone) ipad
iphone (ipad OR android)

Ponctuation, signes diacritiques et sensibilité à la casse

Signes diacritiques : les règles de flux filtré contenant des accents ne font correspondre que les Publications qui contiennent également l’accent. Par exemple, diacrítica correspond à diacrítica mais pas à diacritica. Sensibilité à la casse : tous les opérateurs sont insensibles à la casse. La règle cat correspond à cat, CAT et Cat.
La recherche de Publications se comporte différemmentLors de la création de requêtes de recherche, les mots-clés avec accents correspondent aux Publications avec et sans accents. Par exemple, Diacrítica correspond à la fois à Diacrítica et Diacritica.

Correspondance des Quote Tweets

Lorsque vous utilisez le flux filtré, les opérateurs effectuent la correspondance à la fois sur le contenu du Quote Tweet et sur le contenu de la Publication originale qui a été citée.
Rechercher des Publications se comporte différemment — il ne fait correspondre que le contenu du Quote Tweet, et non celui de la Publication originale.

Spécificité et efficacité

L’utilisation d’opérateurs trop généraux, comme un seul mot-clé ou hashtag, n’est pas recommandée : ils correspondent à un volume massif de Publications et épuiseront rapidement votre connexion.
Conseils pour créer des règles efficaces :
  1. Commencez avec des critères précis, puis élargissez — Créez des règles ciblées qui renvoient des résultats pertinents
  2. Utilisez plusieurs opérateurs — Combinez des opérateurs pour affiner les résultats
  3. Surveillez votre nombre de caractères — L’ensemble de la chaîne de la règle est pris en compte dans cette limite
Exemple de progression :
# Too broad - 200,000+ Posts per day
happy

# Mieux - ajoute un filtre de langue et des exclusions
(happy OR happiness) lang:en -birthday -is:retweet

# Even better - 59 characters, more specific
(happy OR happiness) place_country:GB -birthday -is:retweet

Construire une règle de manière itérative

Étape 1 : Commencez par une règle de base

happy OR happiness

Étape 2 : Tester et affiner en fonction des résultats

Nous avons observé des Publications dans de nombreuses langues. Ajoutez un filtre de langue :
(happy OR happiness) lang:en
On reçoit des vœux d’anniversaire. Excluez-les, ainsi que les Retweets :
(happy OR happiness) lang:en -birthday -is:retweet

Étape 3 : élargir pour une meilleure couverture

Nous voulons couvrir un éventail plus large de sentiments. Ajoutez des mots-clés connexes :
(happy OR happiness OR excited OR elated) lang:en -birthday -is:retweet
Des Publications liées aux fêtes apparaissent. Excluez-les :
(happy OR happiness OR excited OR elated) lang:en -birthday -is:retweet -holidays

Ajout et suppression de règles

Utilisez POST /2/tweets/search/stream/rules pour ajouter ou supprimer des règles.

Ajout de règles

Envoyez un corps JSON add avec la propriété value (la règle) et, de manière facultative, tag (pour identifier les Publications correspondantes) :
curl -X POST "https://api.x.com/2/tweets/search/stream/rules" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "add": [
      {"value": "cat has:media", "tag": "cats with media"},
      {"value": "cat has:media -grumpy", "tag": "happy cats with media"},
      {"value": "meme", "tag": "funny things"},
      {"value": "meme has:images"}
    ]
  }'

Suppression de règles

Soumettez un corps de requête JSON delete avec les id des règles à supprimer :
curl -X POST "https://api.x.com/2/tweets/search/stream/rules" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "delete": {
      "ids": [
        "1165037377523306498",
        "1165037377523306499"
      ]
    }
  }'

Exemples de règles

Suivi d’une catastrophe naturelle

Faites correspondre les Publications d’agences météorologiques concernant l’ouragan Harvey :
{
  "value": "-is:retweet has:geo (from:NWSNHC OR from:NHC_Atlantic OR from:NWSHouston OR from:NWSSanAntonio OR from:USGS_TexasRain OR from:USGS_TexasFlood OR from:JeffLindner1)",
  "tag": "Hurricane Harvey - weather agencies with geo"
}

Analyse des sentiments pour #nowplaying

Sentiment positif :
{
  "value": "#nowplaying (happy OR exciting OR excited OR favorite OR fav OR amazing OR lovely OR incredible) (place_country:US OR place_country:MX OR place_country:CA) -horrible -worst -sucks -bad -disappointing",
  "tag": "#nowplaying positive"
}
Sentiment négatif :
{
  "value": "#nowplaying (horrible OR worst OR sucks OR bad OR disappointing) (place_country:US OR place_country:MX OR place_country:CA) -happy -exciting -excited -favorite -fav -amazing -lovely -incredible",
  "tag": "#nowplaying negative"
}

Utiliser les annotations de Publication

Trouvez des Publications en japonais à propos d’animaux de compagnie (hors chats) avec des images en utilisant l’opérateur context: : Commencez par utiliser la consultation de Publication avec tweet.fields=context_annotations pour identifier les ID domain.entity :
  • Chats : domain 66, entity 852262932607926273
  • Animaux de compagnie : domain 65, entity 852262932607926273
{
  "value": "context:65.852262932607926273 -context:66.852262932607926273 -is:retweet has:images lang:ja",
  "tag": "Japanese pets with images - no cats"
}

Prochaines étapes

Référence des opérateurs

Liste complète des opérateurs disponibles

Démarrage rapide du flux filtré

Connectez-vous à votre flux

Exemples de code

Exemples de code dans plusieurs langages