Générez robots.txt avec des règles et un sitemap
Ce générateur de robots.txt transforme des consignes structurées destinées aux robots en un fichier propre, prêt à publier.
Lancer gratuitement
Ajoutez chaque agent utilisateur, indiquez si son chemin est autorisé ou interdit, puis fournissez l’URL absolue de votre sitemap XML. Le générateur valide chaque chemin, regroupe les règles d’un même robot, emploie la graphie canonique des directives et renvoie un texte brut déterministe avec des sauts de ligne sûrs. Il convient à la création d’une nouvelle politique, au remplacement d’un fichier manuel sujet aux erreurs ou à la production d’un robots.txt cohérent dans un processus de déploiement.
Décrivez l’accès des robots avec des règles explicites
Commencez par ajouter une ligne pour chaque décision concernant un robot et un chemin. L’agent utilisateur désigne le robot auquel l’instruction s’adresse ; utilisez un astérisque si la règle vaut pour tous les robots, ou saisissez un jeton précis lorsqu’un robot doit être traité différemment. Sélectionnez ensuite Allow ou Disallow et indiquez le motif de chemin concerné. Chaque chemin doit commencer par une barre oblique, y compris la racine elle-même. Cette contrainte repère une erreur fréquente dans robots.txt avant la publication. Les règles qui appartiennent au même agent utilisateur sont réunies dans un seul groupe même si leurs lignes ne se suivent pas dans les données saisies. L’ordre des groupes et des règles respecte leur première apparition. Ce classement stable simplifie la relecture et évite des différences inutiles entre deux générations identiques. Le générateur ne décide pas quelles zones doivent rester privées ou explorables : il restitue fidèlement votre politique. Vérifiez donc les chemins par rapport à l’organisation réelle des routes du site.
Comprenez la portée réelle du fichier généré
Un fichier robots.txt indique aux robots web coopératifs quels chemins d’URL ils peuvent demander. Ce n’est ni un système d’authentification, ni une liste de contrôle d’accès, ni un moyen de masquer des informations confidentielles. Une adresse interdite peut encore être découverte par des liens, et un client qui ignore le protocole peut la demander si le serveur n’impose pas une autorisation distincte. Pour toute ressource à protéger, utilisez les droits de l’application, un stockage privé ou des règles côté serveur. Dans un groupe d’agents utilisateurs, chaque robot interprète les motifs Allow et Disallow selon sa propre documentation, notamment avec des jokers ou des marqueurs de fin. Cet outil conserve le texte des chemins au lieu de deviner la priorité appliquée par un robot donné. Il refuse également les sauts de ligne intégrés aux noms, directives, chemins et au sitemap, afin qu’un champ ne puisse pas injecter d’enregistrements supplémentaires. Le résultat adopte la casse et les espacements usuels, sans ajouter de commentaire ni d’hypothèse.
Publiez le résultat et contrôlez-le en situation
Placez le contenu obtenu dans un fichier texte nommé robots.txt à la racine de l’origine web concernée, par exemple https://example.com/robots.txt. Le sitemap doit être une URL absolue en HTTP ou HTTPS ; le générateur la normalise avant d’ajouter la ligne Sitemap finale. Cette déclaration aide les robots à trouver le sitemap XML, même s’il se situe dans un chemin peu évident ou sur un autre hôte autorisé. Après le déploiement, ouvrez directement l’URL publique du robots.txt. Vérifiez que la réponse aboutit, qu’elle est servie en texte brut et qu’elle n’est remplacée ni par une page d’erreur, ni par une boucle de redirection, ni par un écran de connexion. Testez les chemins importants avec les outils d’inspection des moteurs et robots qui vous intéressent, car leur prise en charge et leurs règles de correspondance peuvent varier. Régénérez le fichier lorsque les routes, zones privées, protections de préproduction ou emplacements de sitemap changent. La sortie déterministe convient au suivi de versions et aux déploiements reproductibles.
Cas d’usage
Lancer un nouveau site
Créez une politique d’exploration lisible et une déclaration de sitemap avant d’ouvrir le domaine de production à l’indexation.
Uniformiser la configuration de déploiement
Produisez un robots.txt identique à partir de paramètres structurés dans chaque compilation reproductible.
Distinguer les politiques par robot
Regroupez les règles générales et les exceptions propres à un robot sans réorganiser manuellement des blocs de texte.
Questions fréquentes
Que se passe-t-il si le chemin d’une règle ne commence pas par une barre oblique ?
La demande échoue avec une erreur de saisie qui désigne la règle, et aucun contenu n’est produit.
Puis-je ajouter des règles pour plusieurs agents utilisateurs ?
Oui. Les règles sont regroupées par agent utilisateur selon l’ordre de leur première apparition.
Disallow protège-t-il les informations privées ?
Non. Robots.txt guide les robots coopératifs, mais n’assure aucune sécurité. Protégez les ressources sensibles par une autorisation côté serveur.
Où dois-je publier le contenu généré ?
Publiez-le sous le nom robots.txt à la racine de l’origine web dont il décrit la politique d’exploration.
Quelles URL de sitemap sont acceptées ?
Le sitemap doit posséder une URL absolue valide utilisant HTTP ou HTTPS.
Combien coûte l’API ?
L’API coûte $0.002 par demande. La version pour navigateur est accessible gratuitement sur cette page.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/web/robots-txt-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"rules":[{"user_agent":"*","directive":"allow","path":"/"},{"user_agent":"*","directive":"disallow","path":"/private/"},{"user_agent":"ResearchBot","directive":"disallow","path":"/"}],"sitemap_url":"https://example.com/sitemap.xml"}'const res = await fetch("https://api.kit.forhosting.com/web/robots-txt-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"rules": [
{
"user_agent": "*",
"directive": "allow",
"path": "/"
},
{
"user_agent": "*",
"directive": "disallow",
"path": "/private/"
},
{
"user_agent": "ResearchBot",
"directive": "disallow",
"path": "/"
}
],
"sitemap_url": "https://example.com/sitemap.xml"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/robots-txt-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"rules": [
{
"user_agent": "*",
"directive": "allow",
"path": "/"
},
{
"user_agent": "*",
"directive": "disallow",
"path": "/private/"
},
{
"user_agent": "ResearchBot",
"directive": "disallow",
"path": "/"
}
],
"sitemap_url": "https://example.com/sitemap.xml"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/robots-txt-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"rules":[{"user_agent":"*","directive":"allow","path":"/"},{"user_agent":"*","directive":"disallow","path":"/private/"},{"user_agent":"ResearchBot","directive":"disallow","path":"/"}],"sitemap_url":"https://example.com/sitemap.xml"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"rules":[{"user_agent":"*","directive":"allow","path":"/"},{"user_agent":"*","directive":"disallow","path":"/private/"},{"user_agent":"ResearchBot","directive":"disallow","path":"/"}],"sitemap_url":"https://example.com/sitemap.xml"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/robots-txt-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"rules": [
{
"user_agent": "*",
"directive": "allow",
"path": "/"
},
{
"user_agent": "*",
"directive": "disallow",
"path": "/private/"
},
{
"user_agent": "ResearchBot",
"directive": "disallow",
"path": "/"
}
],
"sitemap_url": "https://example.com/sitemap.xml"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.robots_txt_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
timeout_sec | 30 |
max_crawl_pages | 25 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |