Die Textfocus-APIs ermöglichen es, verschiedene SEO- und semantische Analysen durchzuführen. Diese Dokumentation erklärt, wie man sie aufruft, welche Parameter sie haben und wozu sie dienen. APIs sind für Abonnenten der Pakete "Classic" und "Comfort" verfügbar.
Die Anzahl der API-Aufrufe ist im Classic-Paket auf 30 pro Tag und im Agency-Paket auf 1 pro Minute begrenzt.
Jede Anfrage verbraucht ein Guthaben auf Ihrem Konto.
Sie können Ihren API-Schlüssel unter Ihrem Konto finden.
Der optionale Parameter force_refetch (Wert 1) wird von allen APIs außer tf_langs und tf_robotstxt akzeptiert. Wenn er aktiviert ist, wird der Cache ignoriert und alle Berechnungen werden sofort neu durchgeführt. Mit Vorsicht zu verwenden: Dies erhöht die Antwortzeit und verbraucht ein Guthaben wie ein normaler Aufruf.
Diese APIs sind seit März 2025 öffentlich zugänglich. Wir wissen, wie wichtig es ist, dass die APIs reaktionsschnell sind und fehlerfrei antworten.
Wenn Sie trotz unserer Wachsamkeit auf Fehlercodes mit den APIs stoßen, kontaktieren Sie uns bitte. Wir werden unser Bestes tun, um Ihnen so schnell wie möglich zu antworten.
Das MCP-Protokoll (Model Context Protocol) ermöglicht es einem KI-Assistenten (Claude, Copilot, Cursor ...), die Textfocus-APIs während eines Gesprächs direkt aufzurufen, ohne dass Sie Daten kopieren und einfügen müssen.
So kann die KI eine SEO-Analyse durchführen, Suchvolumina ermitteln oder Wettbewerber vergleichen, anschließend die Ergebnisse auswerten und Empfehlungen aussprechen – und das alles in einem einzigen Schritt.
Textfocus bietet einen gehosteten MCP-Server an, der unter folgender Adresse erreichbar ist:
https://textfocus.onrender.com/ssehttps://textfocus.onrender.com/mcpIn beiden Fällen muss Ihr API-Schlüssel bei jeder Verbindung übermittelt werden.
Öffnen Sie die Konfigurationsdatei:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.jsonFügen Sie den folgenden Eintrag im Abschnitt mcpServers ein:
{
"mcpServers": {
"textfocus": {
"type": "sse",
"url": "https://textfocus.onrender.com/sse",
"headers": {
"X-API-Key": "Ihr API-Schlüssel"
}
}
}
}
Starten Sie Claude Desktop neu. Die Tools Textfocus (tf_seo, tf_keyword, tf_competition…) werden dann in der Liste der verfügbaren Tools (Hammer-Symbol) angezeigt.
Fügen Sie unter Einstellungen → Integrationen einen neuen MCP-Server mit der folgenden URL hinzu:
https://textfocus.onrender.com/mcp?key=Ihr API-Schlüssel
Die OAuth-Felder sind optional und können leer bleiben. Ihr Schlüssel wird direkt in der URL übermittelt.
Fügen Sie in der Claude-Code-Konfigurationsdatei (~/.claude.json oder in den Projekteinstellungen) Folgendes hinzu:
{
"mcpServers": {
"textfocus": {
"type": "sse",
"url": "https://textfocus.onrender.com/sse",
"headers": {
"X-API-Key": "Ihr API-Schlüssel"
}
}
}
}
Diese Editoren unterstützen entfernte MCP-Server über SSE. Geben Sie in deren MCP-Einstellungen Folgendes ein:
https://textfocus.onrender.com/sseX-API-Key: Ihr API-SchlüsselSobald die KI verbunden ist, stehen ihr folgende Tools zur Verfügung:
tf_endpoints — Liste aller verfügbaren Endpunkte mit ihren Parametern und den Kosten in Creditstf_langs — Liste der verfügbaren Sprachen und Märktetf_keyword — Suchvolumen, CPC und Schwierigkeitsgrad eines Keywordstf_related — Begriffe, die semantisch mit einem Schlüsselwort verbunden sindtf_semantic — Umfassende semantische Analyse (erwartetes Vokabular, TF-IDF)tf_seo — Umfassende SEO-Analyse einer Webseitetf_geo — IA-Ready-Score und GEO-Analyse einer Seitetf_robotstxt — Analyse der robots.txt-Datei einer Domaintf_lexical — Wortfeld einer Webseitetf_position — Platzierung einer Domain für ein Schlüsselworttf_competition — Wettbewerbsanalyse für ein Keywordtf_structured_data — Extraktion und Analyse strukturierter JSON-LD-Daten (Schema.org) einer SeiteJeder Werkzeugaufruf verbraucht ein Guthaben, genau wie ein herkömmlicher API-Aufruf.
Beschreibung : Gibt die Informationen des mit dem API-Schlüssel verknüpften Kontos zurück: Profil, Paket, AppSumo-Codes, verbleibende Guthaben und in den letzten 30 Tagen verbrauchte Guthaben.
Endpunkt : https://www.textfocus.net/apis/tf_account/
Methode : POST
Einstellungen :
key (String, Requisite) : API-Schlüssel.Dieser Endpunkt verbraucht kein Guthaben.
result.account.name — Name des Mitgliedsresult.account.email — E-Mail-Adresseresult.account.company, address, city, zip, country — Kontaktdatenresult.pack.name — Name des gebuchten Paketsresult.pack.recurring — Wiederholungsart (monatlich, jährlich, lebenslang, keine)result.pack.apiAccess — API-Zugriff aktiviertresult.pack.entitiesAccess — Zugriff auf die Erkennung benannter Entitätenresult.pack.translateAccess — Zur Übersetzungresult.pack.whiteLabel — White-Label-Funktion aktiviert (PDF-Exporte ohne Textfocus-Branding)result.pack.daysArchive — Aufbewahrungsdauer der Unterlagen (Tage)result.pack.nbCompeteMax — Maximale Anzahl der analysierbaren Wettbewerberresult.pack.nbSuggestMax — Maximale Anzahl semantischer Vorschlägeresult.pack.rateInterval / rateMax — API-Durchsatzgrenzen des Paketsresult.appSumoCodes — Liste der im Konto aktivierten AppSumo-Codes (Code, Typ)result.credits.remaining — Verbleibende Creditsresult.credits.consumed30days — Gesamtzahl der in den letzten 30 Tagen verbrauchten Creditsresult.credits.byType30days — Nutzung nach API-Typ in den letzten 30 TagenBeschreibung : Listet alle verfügbaren Endpunkte mit ihren Parametern, ihrer Beschreibung und ihren Kosten in Credits auf.
Endpunkt : https://www.textfocus.net/apis/tf_endpoints/
Methode : POST
Einstellungen :
key (String, Requisite) : API-Schlüssel.Dieser Endpunkt verbraucht kein Guthaben.
Beschreibung : Liefert eine Liste der verfügbaren Sprachen. Die zurückgegebenen Kennungen (Feld id) entsprechen den Sprach- und Marktcodes, die direkt im Parameter lang aller anderen APIs verwendet werden können (z. B. wird fr-CA in die ID des französischsprachigen kanadischen Marktes aufgelöst).
Endpunkt : https://www.textfocus.net/apis/tf_langs/
Methode : POST
Einstellungen :
key (String, Requisite) : API-Schlüssel.Beschreibung : Liefert Daten zu einem bestimmten Schlüsselwort (Suchvolumen, Kosten pro Klick usw.).
Endpunkt : https://www.textfocus.net/apis/tf_keyword/
Methode : POST
Einstellungen :
key (String, Requisite) : API-Schlüssel.lang (String, Requisite) : 5-stelliger Sprach- und Marktcode (z. B.: fr-FR, en-US, fr-CA) – empfohlenes Format zur Ausrichtung auf einen bestimmten Markt. Ein 2-stelliger Code (z. B.: fr) wird ebenfalls akzeptiert. Die vollständige Liste der verfügbaren Codes finden Sie unter tf_langs.keyword (array ou string, requis) : Liste von Schlüsselwörtern, die analysiert werden sollen.force_refetch (int, optional) : Setzen Sie 1, um den Cache zu umgehen und eine Neuberechnung zu erzwingen.Beispiel für eine JSON-Antwort :
{
"version": "1.0.3",
"params": {
"lang": "fr",
"keyword": ["agence en référencement", "agence seo"],
"key": "Ihr API-Schlüssel"
},
"result": {
"agence en référencement": {
"id": "agence en référencement",
"lang": "fr",
"cost": 13.06,
"concurrency": 6.00,
"volume": 27100,
"difficulty": 87
},
{
"id": "agence seo",
"lang": "fr",
"cost": 4.14,
"concurrency": 28.00,
"volume": 27100,
"difficulty": 87
}
},
"response": 200,
"message": "ok",
"timing": 0.020776,
"creditUsed": 1,
"method": "tf_keyword",
"credits": 294
}
Beschreibung : Liefert Begriffe zu einem bestimmten Stichwort.
Endpunkt : https://www.textfocus.net/apis/tf_related/
Methode : POST
key (String, Requisite) : API-Schlüssel.lang (String, Requisite) : 5-stelliger Sprach- und Marktcode (z. B.: fr-FR, en-US, fr-CA) – empfohlenes Format zur Ausrichtung auf einen bestimmten Markt. Ein 2-stelliger Code (z. B.: fr) wird ebenfalls akzeptiert. Die vollständige Liste der verfügbaren Codes finden Sie unter tf_langs.keyword (String, Requisite) : Zu analysierendes Schlüsselwort.force_refetch (int, optional) : Setzen Sie 1, um den Cache zu umgehen und eine Neuberechnung zu erzwingen.Beispiel für eine JSON-Antwort :
{
"version": "1.0.3",
"params": {
"lang": "fr",
"keyword": "agence seo",
"key": "Ihr API-Schlüssel"
},
"result": {
"semantic": {
"0": {
"id" : "agence seo",
"keyword" : "meilleure agence seo",
"lang" : "fr",
"type" : "match",
"ngram" : "3",
"cost" : "0.00",
"concurrency" : "2",
"volume" : "22200",
"intent" : "navigational",
"difficulty" : "19"
},
"1": {
"id" : "agence seo",
"keyword" : "agence seo lyon",
"lang" : "fr",
"type" : "match",
"ngram" : "3",
"cost" : "6.11",
"concurrency" : "18",
"volume" : "1600",
"intent" : "commercial",
"difficulty" : "56"
},
// Bis zu 100 Begriffe können zurückgegeben werden },
"response": 200,
"message": "ok",
"timing": 0.3334009999999999,
"creditUsed": 1,
"method": "tf_related",
"credits": 2947
}
Beschreibung : Führt eine vollständige SEO-Analyse einer Webseite durch.
Endpunkt : https://www.textfocus.net/apis/tf_seo/
Methode : POST
key (String, Requisite) : API-Schlüssel.lang (String, Requisite) : 5-stelliger Sprach- und Marktcode (z. B.: fr-FR, en-US, fr-CA) – empfohlenes Format zur Ausrichtung auf einen bestimmten Markt. Ein 2-stelliger Code (z. B.: fr) wird ebenfalls akzeptiert. Die vollständige Liste der verfügbaren Codes finden Sie unter tf_langs.keyword (String, Requisite) : Ziel-Schlüsselwort.url (String, Requisite) : URL der zu analysierenden Seite.force_refetch (int, optional) : Setzen Sie 1, um den Cache zu umgehen und eine Neuberechnung zu erzwingen.verbose (int, optional, Standardwert: 0) : Standardmäßig (0) wird die Antwort gekürzt: contentBrut und footerTxt werden ausgeschlossen, Wörter, die nur einmal in words vorkommen, werden herausgefiltert, und listPresence.footerTxt ist auf 20 Einträge begrenzt. Setzen Sie den Wert auf 1, um die vollständige Antwort zu erhalten.Beispiel für eine JSON-Antwort :
{
"version": "1.0.3",
"params": {
"lang": "fr",
"keyword": "agence seo",
"url": "https://beweb.fr/seo/",
"key": "Ihr API-Schlüssel"
},
"result": {
"packId": "14",
"nbCompeteMax": "50",
"url": "https://beweb.fr/seo/",
"urlDecode": "https://beweb.fr/seo/",
"nbH1": 1,
"entitiesNotSupported": false,
"typePage": "page",
"jsonLdType": "WebPage",
"firstWords": "vous cherchez [...] et une longue",
"footerTxt": "On nous demande [...]",
"host": "https://beweb.fr",
"urlWords": " beweb seo ",
"contentBrut": "Skip to content . AGENCE SEO . Pilotez votre référencement naturel. [...].",
"nbLinksOut": 16,
"nbLinksOutExt": 5,
"canon": "https://beweb.fr/seo/",
"title": "Agence SEO France - Référencement Naturel Google | BEWEB",
"description": "Besoin d'une agence SEO pour améliorer votre visibilité en ligne ? [...].",
"robots": "index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1",
"h1": "AGENCE SEO Pilotez votre référencement naturel",
"h2": [
"Les services de notre agence SEO Nos solutions pour développer votre référencement naturel",
"Besoin d'une agence SEO ? Contactez nos consultants dès maintenant"
],
"h3": [
"Audit SEO Trouver les freins au référencement",
"Recherche de mots clés Les bons mots pour être visible",
"Accompagnement SEO Etre accompagné sur la durée",
"Rédaction des balises Optimisation des balises SEO",
"Refonte SEO Guide / cahier des charges SEO",
"SEO Rennes Référencement en région rennaise",
"Voici quelques avis de nos clients",
"Ils font confiance à nos experts SEO",
"Profitez de l'expérience d'une agence SEO Pour augmenter votre trafic naturel et vos conversions",
"Référencement naturel de qualité Avec une agence proche de vous",
"Améliorez la visibilité de vos sites dès maintenant !",
"Nos dernières publications sur le SEO",
"Stratégie SEO : les 14 méthodes de travail que nous utilisons le plus en 2024",
"Stratégie SEO : les 14 méthodes de travail que nous utilisons le plus en 2024",
"Utiliser Looker Studio pour analyser les performances de vos pages",
"Utiliser Looker Studio pour analyser les performances de vos pages",
"Quand faire un audit seo ?",
"Quand faire un audit seo ?",
"Pourquoi utiliser les services de notre agence SEO ?"
],
"hn": [
{
"level": "1",
"tag": "h1",
"hn": " AGENCE SEO Pilotez votre référencement naturel"
},
{
"level": "2",
"tag": "h2",
"hn": " Les services de notre agence SEO Nos solutions pour développer votre référencement naturel"
},
{
"level": "3",
"tag": "h3",
"hn": "Audit SEOTrouver les freins au référencement"
},
{
"level": "3",
"tag": "h3",
"hn": "Recherche de mots clés Les bons mots pour être visible"
},
{
"level": "3",
"tag": "h3",
"hn": "Accompagnement SEO Etre accompagné sur la durée"
},
{
"level": "3",
"tag": "h3",
"hn": "Rédaction des balises Optimisation des balises SEO"
},
{
"level": "3",
"tag": "h3",
"hn": "Refonte SEO Guide / cahier des charges SEO"
},
{
"level": "3",
"tag": "h3",
"hn": "Référencement en région rennaise"
},
{
"level": "3",
"tag": "h3",
"hn": " Voici quelques avis de nos clients "
},
{
"level": "3",
"tag": "h3",
"hn": " Ils font confiance à nos experts SEO "
},
{
"level": "3",
"tag": "h3",
"hn": " Profitez de l'expérience d'une agence SEO Pour augmenter votre trafic naturel et vos conversions"
},
{
"level": "3",
"tag": "h3",
"hn": " Référencement naturel de qualité Avec une agence proche de vous"
},
{
"level": "3",
"tag": "h3",
"hn": " Améliorez la visibilité de vos sites dès maintenant ! "
},
{
"level": "4",
"tag": "h4",
"hn": "Privacy Overview"
}
],
"anchors": [
{
"anchor": "consultant seo",
"link": "https://beweb.fr/",
"rel": "",
"title": "Consultant SEO"
},
{
"anchor": "services seo",
"link": "https://beweb.fr/seo/",
"rel": "",
"title": "Services SEO"
},
{
"anchor": "services web",
"link": "https://beweb.fr/web/",
"rel": "",
"title": "Services Web"
},
{
"anchor": "plan du site",
"link": "https://beweb.fr/plan-du-site/",
"rel": "",
"title": ""
},
{
"anchor": "contactez-nous",
"link": "/contact/",
"rel": "",
"title": ""
},
{
"anchor": "",
"link": "#li-page-top",
"rel": "",
"title": ""
},
{
"anchor": "",
"link": "https://www.cookieyes.com/",
"rel": "",
"title": ""
}
],
"images": {
"https://beweb.fr/wp-content/uploads/2020/09/beweb-logo-60.png": {
"alt": "Consultant SEO : Expert référencement de site internet à Rennes",
"title": "",
"width": "",
"height": ""
},
"https://beweb.fr/wp-content/uploads/2020/11/3249202edit.png": {
"alt": "agence seo",
"title": "",
"width": "900",
"height": "574"
},
"https://beweb.fr/wp-content/uploads/2020/11/ubiqus-logo.png": {
"alt": "ubiqus logo",
"title": "",
"width": "261",
"height": "100"
},
"https://beweb.fr/wp-content/uploads/2020/11/idaos-logo.png": {
"alt": "idaos logo",
"title": "",
"width": "226",
"height": "100"
},
"https://beweb.fr/wp-content/uploads/2016/07/orange_obs.jpg": {
"alt": "",
"title": "",
"width": "194",
"height": "100"
},
"https://beweb.fr/wp-content/uploads/2016/07/lylo_2015.png": {
"alt": "",
"title": "",
"width": "121",
"height": "100"
},
"https://beweb.fr/wp-content/uploads/2016/07/Creative-Ingenierie-logo_165X165.jpg": {
"alt": "",
"title": "",
"width": "206",
"height": "100"
},
"https://beweb.fr/wp-content/uploads/2020/11/augmentez-votre-trafic-naturel.png": {
"alt": "Augmentez votre trafic naturel",
"title": "",
"width": "801",
"height": "555"
},
"https://beweb.fr/wp-content/uploads/2020/11/3339159small.png": {
"alt": "3339159small",
"title": "",
"width": "506",
"height": "555"
},
"https://beweb.fr/wp-content/uploads/2023/01/strategie-seo-300x300.jpg": {
"alt": "strategie seo",
"title": "",
"width": "",
"height": ""
},
"https://beweb.fr/wp-content/uploads/2020/11/3497813-300x300.jpg": {
"alt": "Utiliser Google Data Studio pour analyser les performances de vos pages",
"title": "",
"width": "",
"height": ""
},
"https://beweb.fr/wp-content/uploads/2020/08/seo-793030_1280-300x199.jpg": {
"alt": "Quand faire un audit seo",
"title": "",
"width": "",
"height": ""
},
"https://beweb.fr/wp-content/plugins/cookie-law-info/legacy/public/images/logo-cookieyes.svg": {
"alt": "CookieYes Logo",
"title": "",
"width": "",
"height": ""
}
},
"strong": [
"agence en référencement",
"stratégie de référencement",
"expertise référencement naturel",
"bons mots clés",
"bonnes pratiques de Google",
"mobile first",
"Sites internet gérés, créés ou optimisés",
"Sessions mensuelles cumulées sur nos sites",
"Mots clés surveillés",
"optimisation pour les moteurs de recherche",
"stratégie de référencement sur mesure",
"expérience",
"savoir-faire",
"équipe passionnée",
"stratégies innovantes",
"chaque entreprise est unique",
"simple et accessible",
"sur le long terme",
"durables et évolutives,",
"résultats qui durent"
],
"em": "Jean-Joseph Lattuada, Ouest-France",
"nbWords": 762,
"nbWordsAll": 1414,
"ratio": 6.91,
"pertinence": 54,
"nbWordsDistinct": 427,
"beginWith": {
"référencement": 19,
"agence": 12,
"seo": 8,
"naturel": 5,
"solutions": 5,
"cookies": 5,
"beweb": 5,
"web": 5,
"visibilité": 5,
"optimisation": 4,
"analyse": 4,
"google": 4
},
"langs": {
"country": "FR",
"langOfPage": "fr",
"headers-content-type": "text/html",
"meta-charset": "utf-8",
"headers-content-language": "non renseigné",
"meta-content-language": "non renseigné",
"meta-name-language": "non renseigné",
"html-lang": "fr-FR"
},
"nbPhrases": 49,
"nbPhrasesAll": 111,
"entities": [
{
"id": 0,
"type": [
"Number"
],
"matchingTokens": [
2
],
"entityId": "78",
"confidenceScore": 0.5,
"wikiLink": "",
"matchedText": "78",
"relevanceScore": 0,
"entityEnglishId": "",
"startingPos": 5,
"endingPos": 7,
"unit": "Number"
},
{
"id": 1,
"type": [
"Number"
],
"matchingTokens": [
1
],
"entityId": "6",
"confidenceScore": 0.5,
"wikiLink": "",
"matchedText": "06",
"relevanceScore": 0,
"entityEnglishId": "",
"startingPos": 2,
"endingPos": 4,
"unit": "Number"
},
{
"id": 2,
"matchingTokens": [
792
],
"entityId": "Algorithme",
"freebaseTypes": [
"/award/award_discipline",
"/education/field_of_study",
"/symbols/namesake",
"/book/book_subject"
],
"confidenceScore": 5.629,
"wikiLink": "http://fr.wikipedia.org/wiki/Algorithme",
"matchedText": "algorithmes",
"freebaseId": "/m/0jpv",
"relevanceScore": 0.2498,
"entityEnglishId": "Algorithm",
"startingPos": 5522,
"endingPos": 5533,
"wikidataId": "Q8366"
},
{
"id": 3,
"matchingTokens": [
808
],
"entityId": "Privacy",
"freebaseTypes": [
"/media_common/quotation_subject",
"/film/film_subject",
"/law/legal_subject",
"/book/book_subject"
],
"confidenceScore": 5.349,
"wikiLink": "http://en.wikipedia.org/wiki/Privacy",
"matchedText": "privacy",
"freebaseId": "/m/06804",
"relevanceScore": 0,
"entityEnglishId": "Privacy",
"startingPos": 5633,
"endingPos": 5640,
"wikidataId": "Q188728"
},
{
"id": 4,
"matchingTokens": [
812
],
"entityId": "Website",
"freebaseTypes": [
"/book/book_subject",
"/business/industry",
"/award/award_category",
"/dataworld/information_source",
"/fictional_universe/fictional_organization_type",
"/organization/non_profit_organization",
"/location/location",
"/internet/website_category",
"/award/award_discipline",
"/organization/contact_category",
"/business/business_location",
"/education/school_category",
"/organization/role",
"/business/employer",
"/organization/organization_sector"
],
"confidenceScore": 10.45,
"wikiLink": "http://en.wikipedia.org/wiki/Website",
"matchedText": "website",
"freebaseId": "/m/085n4",
"relevanceScore": 0,
"entityEnglishId": "Website",
"startingPos": 5656,
"endingPos": 5663,
"wikidataId": "Q35127"
},
{
"id": 5,
"matchingTokens": [
814
],
"entityId": "Cookie (informatique)",
"freebaseTypes": [
"/book/book_subject"
],
"confidenceScore": 3.079,
"wikiLink": "http://fr.wikipedia.org/wiki/Cookie_(informatique)",
"matchedText": "cookies",
"freebaseId": "/m/0d18sk",
"relevanceScore": 0.3457,
"entityEnglishId": "HTTP cookie",
"startingPos": 5669,
"endingPos": 5676,
"wikidataId": "Q178995"
},
{
"id": 6,
"matchingTokens": [
892,
893
],
"entityId": "Option de retrait dans l'Union européenne",
"confidenceScore": 1.016,
"wikiLink": "http://fr.wikipedia.org/wiki/Option_de_retrait_dans_l'Union_européenne",
"matchedText": "opt out",
"freebaseId": "/m/03cfnlw",
"relevanceScore": 0.1998,
"entityEnglishId": "Opt-outs in the European Union",
"startingPos": 6098,
"endingPos": 6105,
"wikidataId": "Q1349687"
},
{
"id": 7,
"matchingTokens": [
899,
900
],
"entityId": "Opt-out (marketing)",
"confidenceScore": 1.776,
"wikiLink": "http://fr.wikipedia.org/wiki/Opt-out_(marketing)",
"matchedText": "opting out",
"freebaseId": "",
"relevanceScore": 0.06177,
"entityEnglishId": "Opt-out",
"startingPos": 6128,
"endingPos": 6138,
"wikidataId": "Q1368455"
},
{
"id": 8,
"matchingTokens": [
907
],
"entityId": "Affect",
"confidenceScore": 0.9559,
"wikiLink": "http://fr.wikipedia.org/wiki/Affect",
"matchedText": "affect",
"freebaseId": "/m/09f7n8",
"relevanceScore": 0.1276,
"entityEnglishId": "Affect (psychology)",
"startingPos": 6168,
"endingPos": 6174,
"wikidataId": "Q159904",
"wikidataTypes": [
"Q96634632/psychology term",
"Q12812139/technical term"
]
},
{
"id": 9,
"matchingTokens": [
928
],
"entityId": "Analytics",
"freebaseTypes": [
"/organization/organization_sector",
"/business/competitive_space",
"/computer/software_genre",
"/internet/website_category",
"/book/book_subject",
"/business/industry",
"/media_common/quotation_subject"
],
"confidenceScore": 2.001,
"wikiLink": "http://en.wikipedia.org/wiki/Analytics",
"matchedText": "analytics",
"freebaseId": "/m/02gcn9",
"relevanceScore": 0,
"entityEnglishId": "Analytics",
"startingPos": 6296,
"endingPos": 6305,
"wikidataId": "Q485396",
"wikidataTypes": [
"Q105948247/knowledge system",
"Q1047113/specialty",
"Q2198779/unit",
"Q4671286/academic major",
"Q26256810/matter",
"Q11953984/linguistic unit",
"Q11862829/academic discipline",
"Q110403031/knowledge type",
"Q115786086/linguistic form",
"Q115372263/word or phrase",
"Q1128340/subject heading"
]
}
],
"opengraph": {
"og:locale": "fr_FR",
"og:type": "article",
"og:title": "Agence SEO France - Référencement Naturel Google | BEWEB",
"og:description": "Besoin d",
"og:url": "https://beweb.fr/seo/",
"og:site_name": "Consultant SEO : Expert référencement de site internet à Rennes"
},
"twitter": [],
"robotsTxtInfo": {
"code": 200,
"response": {},
"content": "User-agent: *\r\nDisallow:\r\n\r\n#test o2"
},
"nbImg": 13,
"nbImgNoAlt": 3,
"firstPerson": {
"notre": 10,
"nos": 13,
"nous": 31,
"mes": 1,
"me": 1,
"je": 2,
"ma": 1
},
"mykeyword": "",
"verif_presence": 1,
"words": {
"agence": 18,
"référencement": 27,
"naturel": 9,
"référencement naturel": 5,
"google": 9,
"beweb": 6,
"france": 1,
"besoin": 6,
"solutions": 6,
"accompagnement": 5,
"rédaction": 4,
"améliorer": 5,
"visibilité": 7,
"mesure": 3,
"optimisation": 7,
"audit": 7,
"bonne": 3,
"développer": 2,
"optimisé": 2,
"cherchez": 2,
"croissance": 2,
"saura": 1,
"proposons": 2,
"contact": 1,
"contactez": 1,
"rigueur": 1,
"choisir": 1,
"sérieux": 1,
"confiez": 1,
"large": 1,
"laissons": 1,
"proposé": 1,
"panel": 1,
"adaptées": 1,
"temps": 1,
"outils": 1,
"tracking": 1,
"paramétrage": 1,
"longue": 1,
"manager": 1,
"contenu": 2,
"client": 8,
"stratégie": 8,
"technique": 6,
"recherche": 6,
"analyse": 6,
"experience": 6,
"cookies": 6,
"balises": 5,
"travail": 5,
"objectif": 4,
"sites": 4,
"place": 4,
"these": 4,
"performance": 4,
"résultats": 4,
"website": 4,
"comprendre": 4,
"aider": 4
},
"optimise": {
"agence": 51,
"référencement": 50,
"naturel": 39,
"google": 28,
"beweb": 28,
"france": 23,
"besoin": 12,
"solutions": 11,
"audit": 7,
"visibilité": 7
},
"wordsOptimiseFor": {
"agence": 51,
"référencement": 50,
"naturel": 39,
"google": 28,
"beweb": 28,
"france": 23,
"besoin": 12,
"solutions": 11,
"audit": 7,
"visibilité": 7,
"améliorer": 7,
"mesure": 7,
"rédaction": 7,
"optimisation": 7,
"accompagnement": 7
},
"groupOptimiseFor": {
"agence": 51,
"référencement": 50,
"naturel": 39,
"google": 28,
"beweb": 28,
"france": 23,
"besoin": 12,
"solutions": 11,
"audit": 7,
"visibilité": 7,
"améliorer": 7,
"mesure": 7,
"rédaction": 7,
"optimisation": 7,
"accompagnement": 7
},
"lexies": {
"proposons": {
"4": "proposition",
"22": "viser",
"24": "mesure",
"26": "objectif",
"33": "agence",
"35": "contenu",
"43": "sites",
"47": "services",
"53": "concurrence",
"83": "option",
"164": "projet",
"197": "atteindre",
"201": "client",
"211": "découvrir",
"214": "devis",
"228": "gratuit",
"277": "accompagnement"
},
"référencement": [
"recherche",
"optimisation",
"visibilité",
"contenu",
"internet",
"visible",
"complexe",
"optimisé"
],
"solutions": [
"optimisation",
"analyse",
"efficace",
"simple",
"optimiser",
"amélioration",
"performance",
"référencement",
"stratégie",
"processus",
"adaptées"
],
"agence": {
"14": "entreprise",
"16": "client",
"32": "objectif",
"37": "secteur"
},
"naturel": {
"38": "simple",
"126": "migration",
"187": "recherche",
"195": "force"
},
"besoin": [
"amélioration",
"objectif",
"qualité",
"utile",
"entreprise",
"client",
"disponible",
"projet",
"bonne",
"adaptées"
],
"développer": {
"0": "croissance",
"1": "secteur",
"2": "trafic",
"3": "processus",
"4": "entreprise",
"6": "améliorer"
},
"mesure": [
"temps",
"point",
"secteur",
"stade",
"ligne",
"force",
"commun",
"durée",
"travail",
"processus",
"terme",
"nouveau",
"ensemble",
"photographe",
"studio",
"performance",
"ordinaire",
"longue"
],
"outils": {
"8": "analyse",
"75": "optimisation",
"77": "ergonomie",
"98": "guide",
"111": "simple"
},
"confiez": {
"7": "laisser",
"8": "confiance",
"24": "découvrir",
"34": "choisir",
"99": "enregistrer"
},
"rédaction": {
"13": "projet",
"14": "quotidien",
"17": "cahier"
},
"contact": {
"11": "direct"
},
"contactez": {
"20": "aider",
"54": "découvrir",
"118": "proposer",
"126": "rendre",
"127": "répondre",
"134": "savoir"
},
"sérieux": {
"41": "confiance",
"55": "gratuit"
},
"saura": {
"51": "montre",
"59": "commun",
"64": "découvrir",
"167": "disponibilité",
"193": "force",
"272": "point",
"279": "processus"
},
"laissons": {
"50": "cours",
"69": "mettre",
"88": "rendre",
"97": "découvrir",
"114": "maîtriser",
"188": "place",
"265": "aimons",
"271": "appliquer"
}
},
"listLexies": {
"agence": {
"ponderation": 51,
"color": "264653"
},
"référencement": {
"ponderation": 74,
"color": "287271"
},
"naturel": {
"ponderation": 39,
"color": "2A9D8F"
},
"besoin": {
"ponderation": 23,
"color": "8AB17D"
},
"solutions": {
"ponderation": 73,
"color": "E9C46A"
},
"mesure": {
"ponderation": 17,
"color": "EFB366"
},
"rédaction": {
"ponderation": 7,
"color": "F4A261"
},
"développer": {
"ponderation": 18,
"color": "EE8959"
},
"contact": {
"ponderation": 5,
"color": "E76F51"
},
"contactez": {
"ponderation": 5,
"color": "E97C61"
},
"proposons": {
"ponderation": 75,
"color": "f45b5b"
},
"sérieux": {
"ponderation": 5,
"color": "e4d354"
},
"confiez": {
"ponderation": 10,
"color": "413775"
},
"saura": {
"ponderation": 5,
"color": "e91e63"
},
"laissons": {
"ponderation": 5,
"color": "9c27b0"
},
"outils": {
"ponderation": 12,
"color": "90ed7d"
}
},
"lexiesOptimiseFor": {
"proposons": 75,
"référencement": 74,
"solutions": 73,
"agence": 51,
"naturel": 39,
"besoin": 23,
"développer": 18,
"mesure": 17,
"outils": 12
},
"listPresence": {
"title": {
"référencement naturel": 1,
"référencement": 1,
"agence": 1,
"google": 1,
"naturel": 1,
"beweb": 1,
"france": 1
},
"h1": {
"référencement naturel": 1,
"référencement": 1,
"agence": 1,
"naturel": 1
},
"h2": {
"référencement naturel": 1,
"référencement": 1,
"agence": 1,
"naturel": 1,
"solutions": 1,
"services": 1,
"développer": 1,
"besoin": 1,
"consultants": 1,
"contact": 1,
"contactez": 1
},
"strong": {
"référencement naturel": 1,
"référencement": 1,
"agence": 1,
"stratégie": 1,
"naturel": 1,
"google": 1,
"pratiques": 1,
"bonne": 1,
"mobile": 1,
"first": 1
},
"description": {
"agence": 1,
"stratégie": 1,
"visibilité": 1,
"besoin": 1,
"améliorer": 1,
"mesure": 1,
"ligne": 1
},
"h3": {
"référencement": 1,
"audit": 1,
"trouver": 1,
"freins": 1,
"recherche": 1,
"visible": 1,
"accompagnement": 1,
"accompagné": 1,
"durée": 1,
"optimisation": 1,
"balises": 1,
"rédaction": 1,
"charges": 1,
"refonte": 1,
"cahier": 1,
"guide": 1,
"rennes": 1,
"région": 1,
"rennaise": 1
},
"host": {
"beweb": 1
},
"url": {
"beweb": 1
},
"firstWords": {
"référencement": 1,
"agence": 1,
"google": 1,
"visibilité": 1,
"audit": 1,
"optimisation": 1,
"besoin": 1,
"beweb": 1,
"solutions": 1,
"accompagnement": 1,
"améliorer": 1,
"place": 1,
"rédaction": 1,
"bonne": 1,
"mesure": 1,
"proposer": 1,
"concrètes": 1,
"trafic": 1,
"internet": 1,
"cherchez": 1,
"optimisé": 1,
"contenu": 1,
"hasard": 1,
"proposons": 1,
"croissance": 1,
"rigueur": 1,
"choisir": 1,
"sérieux": 1,
"confiez": 1,
"saura": 1,
"large": 1,
"laissons": 1,
"panel": 1,
"adaptées": 1,
"temps": 1,
"outils": 1,
"tracking": 1,
"paramétrage": 1,
"manager": 1,
"proposé": 1,
"longue": 1
},
"footerTxt": {
"agence": 1,
"besoin": 1,
"beweb": 1,
"experts": 1,
"répondre": 1,
"rennes": 1,
"christophe": 1,
"consultants": 1,
"services": 1,
"contact": 1,
"contactez": 1,
"répond": 1
},
"em": {
"ouest": 1,
"france": 1,
"lattuada": 1,
"joseph": 1
}
},
"scoreSeo": 96.5,
"hnInFooter": []
},
"response": 200,
"message": "ok",
"timing": 0.3334009999999999,
"creditUsed": 1,
"method": "tf_related",
"credits": 2947
}
Beschreibung : Bietet eine semantische Analyse und stellt semantisches Vokabular bereit.
Endpunkt : https://www.textfocus.net/apis/tf_semantic/
Methode : POST
key (String, Requisite) : API-Schlüssel.lang (String, Requisite) : 5-stelliger Sprach- und Marktcode (z. B.: fr-FR, en-US, fr-CA) – empfohlenes Format zur Ausrichtung auf einen bestimmten Markt. Ein 2-stelliger Code (z. B.: fr) wird ebenfalls akzeptiert. Die vollständige Liste der verfügbaren Codes finden Sie unter tf_langs.keyword (String, Requisite) : Zu analysierendes Schlüsselwort.force_refetch (int, optional) : Setzen Sie 1, um den Cache zu umgehen und eine Neuberechnung zu erzwingen.callback (string, optionnel) : Callback-URL zum Abrufen der asynchronen Antwort. Die semantische Analyse kann bis zu 30 Sekunden dauern, daher kann es hilfreich sein, die Antwort über einen Callback zu steuern. Beispiel für eine JSON-Antwort :
{
"version": "1.0.3",
"params": {
"lang": "fr",
"keyword": "mini serre",
"key": "Ihr API-Schlüssel"
},
"result": {
"nbCompete": 34,
"nbFound": 119,
"nbWordsContentMoy": 904.6470588235294,
"nbWordsTitleMoy": 6.0588235294117645,
"semantic": {
"0": {
"id": "mini serre",
"keyword": "semis",
"kei": "100.00",
"ngram": "1",
"used": "82.35",
"occ": "105",
"omin": "1",
"omax": "36",
"omoy": "7.5",
"osd": "8.1",
"nbwmoy": "555",
"intitle": "14.71",
"inhn": "26.47",
"frequency": "22.85",
"tfidf": "0.0613",
"context": "a:3:{i:0;s:16:\"mini serre semis\";i:1;s:21:\"fleurs légumes semis\";i:2;s:16:\"serre semis pots\";}"
},
"1": {
"id": "mini serre",
"keyword": "plantes",
"kei": "99.11",
"ngram": "1",
"used": "73.53",
"occ": "97",
"omin": "1",
"omax": "44",
"omoy": "7.8",
"osd": "11.1",
"nbwmoy": "606",
"intitle": "0.00",
"inhn": "14.71",
"frequency": "16.74",
"tfidf": "0.0573",
"context": "a:3:{i:0;s:23:\"plantes fleurs légumes\";i:1;s:23:\"serre hivernage plantes\";i:2;s:24:\"hivernage plantes fleurs\";}"
},
"2": {
"id": "mini serre",
"keyword": "jardin",
"kei": "98.01",
"ngram": "1",
"used": "79.41",
"occ": "140",
"omin": "1",
"omax": "54",
"omoy": "12.0",
"osd": "11.9",
"nbwmoy": "605",
"intitle": "20.59",
"inhn": "38.24",
"frequency": "30.33",
"tfidf": "0.0694",
"context": "a:3:{i:0;s:17:\"mini serre jardin\";i:1;s:19:\"petite serre jardin\";i:2;s:26:\"serre jardin polycarbonate\";}"
},
"3": {
"id": "mini serre",
"keyword": "culture",
"kei": "95.93",
"ngram": "1",
"used": "76.47",
"occ": 83,
"omin": "1",
"omax": "23",
"omoy": "5.5",
"osd": "5.2",
"nbwmoy": "589",
"intitle": "14.71",
"inhn": "29.41",
"frequency": "19.50",
"tfidf": "0.0492",
"context": "a:3:{i:0;s:18:\"mini serre culture\";i:1;s:23:\"serre culture plastique\";i:2;s:13:\"serre culture\";}"
},
"4": {
"id": "mini serre",
"keyword": "balcon",
"kei": "77.62",
"ngram": "1",
"used": "47.06",
"occ": "24",
"omin": "1",
"omax": "6",
"omoy": "2.6",
"osd": "1.6",
"nbwmoy": "595",
"intitle": "0.00",
"inhn": "8.82",
"frequency": "4.29",
"tfidf": "0.0324",
"context": "a:3:{i:0;s:15:\"balcon terrasse\";i:1;s:13:\"serres balcon\";i:2;s:12:\"serre balcon\";}"
},
// Bis zu 100 Begriffe können zurückgegeben werden
}
},
"response": 200,
"message": "ok",
"timing": 0.020776,
"creditUsed": 1,
"method": "tf_keyword",
"credits": 2948
}
Beschreibung : Analyse der robots.txt-Datei einer Domain: Vorhandensein der XML-Sitemap, blockierte KI-Agenten, Content-Signale.
Endpunkt : https://www.textfocus.net/apis/tf_robotstxt/
Methode : POST
key (String, Requisite) : API-Schlüssel.url (String, Requisite) : URL der zu analysierenden Seite oder Domain.Beispiel für eine JSON-Antwort :
{
"version": "1.0.4",
"params": {
"url": "https://beweb.fr/seo/",
"key": "Ihr API-Schlüssel"
},
"result": {
"score": 75,
"issues": [
"Aucun Content Signal détecté dans le robots.txt"
],
"details": {
"sitemaps": [
"https://beweb.fr/sitemap.xml"
],
"blocked_bots": [],
"content_signals": {}
}
},
"response": 200,
"message": "ok",
"timing": 0.312,
"creditUsed": 1,
"method": "tf_robotstxt",
"credits": 293
}
result.score : Eine Bewertung von 0 bis 100, die die Barrierefreiheit der Website für KI-Agenten misst.result.issues : Liste der festgestellten Probleme (fehlende Sitemap, blockierte KI-Agenten, fehlende Content-Signale usw.).result.details.sitemaps : URLs der in der robots.txt angegebenen Sitemaps.result.details.blocked_bots : Liste der gesperrten KI-Agenten (GPTBot, Claude-Web, PerplexityBot usw.).result.details.content_signals : Erkannte Content-Signal-Richtlinien (ai-train, search, ai-input), siehe contentsignals.org.Beschreibung : Führt eine umfassende GEO-Optimierungsanalyse (Generative Engine Optimization) einer Webseite durch: Struktur der Überschriften, strukturierte Daten, Lesbarkeit, semantische Konsistenz, Leistung, Barrierefreiheit für KI-Agenten usw. Gibt einen Gesamtwert für die KI-Bereitschaft sowie Teilwerte für die einzelnen Bereiche aus.
Endpunkt : https://www.textfocus.net/apis/tf_geo/
Methode : POST
key (String, Requisite) : API-Schlüssel.url (String, Requisite) : URL der zu analysierenden Seite.force_refetch (int, optional) : Setzen Sie 1, um den Cache zu umgehen und eine Neuberechnung zu erzwingen.Beispiel für eine JSON-Antwort (gekürzt):
{
"version": "1.0.4",
"params": {
"url": "https://beweb.fr/seo/",
"key": "Ihr API-Schlüssel"
},
"result": {
"ia_ready_score": 68.4,
"geo_commentary": {
"comment": "Cette page présente une optimisation correcte pour les IA, mais plusieurs points méritent attention.",
"priority_text": "Les principaux axes d'amélioration sont la table des matières et les données structurées (Schema.org)."
},
"all_scores": {
"structure_score": 80,
"structured_data_score": 40,
"segmentation_markup_score": 75,
"readability_score": 70,
"semantic_coherence_score": 65,
"toc_score": 30,
"concise_answer_score": 60,
"images_score": 55,
"loading_score": 85,
"accessibility_score": 90,
"robots_txt_score": 75
},
"structure_and_accessibility": {
"structure": {
"analysis": {
"score": 80,
"issues": [],
"details": {
"nb_h1": 1,
"nb_h2": 2,
"h1_matches_topic": true
}
}
},
"structured_data": {
"analysis": {
"score": 40,
"issues": ["Aucun type Schema.org pertinent détecté (Article, FAQ, HowTo…)"],
"types": ["WebPage"]
}
},
"segmentation_markup": {
"analysis": {
"score": 75,
"issues": []
}
}
},
"content_clarity": {
"readability": {
"analysis": {
"score": 70,
"issues": [],
"details": {
"flesch_kincaid": 33.7,
"avg_sentence_length": 18.4
}
}
},
"concise_answer": {
"analysis": {
"score": 60,
"issues": ["Aucune réponse concise détectée en début de page"]
}
},
"semantic_coherence": {
"analysis": {
"score": 65,
"issues": [],
"details": {
"title_to_content": 0.82,
"description_to_content": 0.74
}
}
}
},
"seo_ia_optimization": {
"toc": {
"analysis": {
"score": 30,
"issues": ["Aucune table des matières cliquable détectée"]
}
}
},
"multimodality": {
"alt_tags": {
"analysis": {
"score": 55,
"issues": ["3 image(s) sans attribut alt"],
"details": {
"nb_images": 13,
"nb_missing_alt": 3
}
}
}
},
"performance": {
"fast_loading": {
"analysis": {
"score": 85,
"issues": [],
"details": {
"lcp_ms": 1276,
"ttfb_ms": 15,
"tti_ms": 199
}
}
},
"main_readability_accessibility": {
"analysis": {
"score": 90,
"issues": []
}
},
"robots_txt": {
"analysis": {
"score": 75,
"issues": ["Aucun Content Signal détecté dans le robots.txt"],
"details": {
"sitemaps": ["https://beweb.fr/sitemap.xml"],
"blocked_bots": [],
"content_signals": {}
}
}
}
},
"res": {
"url": "https://beweb.fr/seo/",
"urlDecode": "https://beweb.fr/seo/",
"title": "Agence SEO France - Référencement Naturel Google | BEWEB",
"description": "Besoin d'une agence SEO pour améliorer votre visibilité en ligne ?",
"h1": "AGENCE SEO Pilotez votre référencement naturel",
"h2": ["Les services de notre agence SEO", "Besoin d'une agence SEO ?"],
"nbWords": 762,
"host": "https://beweb.fr",
"whatIsAbout": ["référencement", "agence", "naturel", "google", "seo", "visibilité"]
},
"lang": "fr",
"country": "fr",
"resume_ia": "Cette page présente l'agence SEO Beweb, spécialisée dans le référencement naturel en France..."
},
"response": 200,
"message": "ok",
"timing": 4.21,
"creditUsed": 1,
"method": "tf_geo",
"credits": 292
}
result.ia_ready_score : Gesamtbewertung „IA-Ready“ von 0 bis 100, gewichtet über alle Kriterien hinweg.result.geo_commentary : Eine detaillierte Erläuterung der Gesamtbewertung und der drei wichtigsten Verbesserungsbereiche.result.all_scores : Einzelbewertungen nach Bereichen (Struktur, strukturierte Daten, Lesbarkeit, semantische Konsistenz, Inhaltsverzeichnis, Bilder, Ladezeit, Barrierefreiheit, robots.txt).result.structure_and_accessibility : Modul 1 – Struktur der Hn-Überschriften, Schema.org, Aufteilung der Inhalte.result.content_clarity : Modul 2 – Flesch-Kincaid-Lesbarkeitsindex, prägnante Antworten, semantische Kohärenz zwischen Titel und Inhalt.result.seo_ia_optimization : Modul 3 – Anklickbares Inhaltsverzeichnis, interne Links, Tonfall des Inhalts.result.multimodality : Modul 4 – Alt-Attribute für Bilder, Bildunterschriften, figure- und figcaption-Tags.result.performance : Modul 5 – Core Web Vitals (LCP, TTI, TTFB), Barrierefreiheit bei SSR, Analyse der robots.txt-Datei.result.res : Metadaten der analysierten Seite (Titel, Beschreibung, H1, H2, Wortanzahl, Hauptthemen).result.resume_ia : Automatische, KI-generierte Zusammenfassung der Seite (verfügbar für kostenpflichtige Pakete).Hinweis: Diese API führt eine gründliche Analyse durch, die je nach der analysierten Seite zwischen 3 und 10 Sekunden dauern kann.
Beschreibung : Wettbewerbsanalyse für ein bestimmtes Keyword: Ruft die Seiten ab, die in den Google-Suchergebnissen ganz oben stehen, und berechnet deren SEO-Kennzahlen (SEO-Score, semantischer Score, Wortanzahl, Relevanz, Seitentyp). Die Analyse ist umfassend: Noch nicht analysierte Seiten werden abgerufen und sofort berechnet.
Endpunkt : https://www.textfocus.net/apis/tf_competition/
Methode : POST
Einstellungen :
key (String, Requisite) : API-Schlüssel.lang (String, Requisite) : 5-stelliger Sprach- und Marktcode (z. B.: fr-FR, en-US, fr-CA) – empfohlenes Format zur Ausrichtung auf einen bestimmten Markt. Ein 2-stelliger Code (z. B.: fr) wird ebenfalls akzeptiert. Die vollständige Liste der verfügbaren Codes finden Sie unter tf_langs.keyword (String, Requisite) : Ziel-Schlüsselwort.force_refetch (int, optional) : Setzen Sie den Wert auf 1, um den Cache zu umgehen und die Neuberechnung aller gleichzeitig angezeigten Seiten zu erzwingen.callback (string, optionnel) : URL de callback (webhook) pour recevoir la réponse de façon asynchrone. Recommandé : l'analyse peut prendre jusqu'à 2 minutes selon le nombre de pages à récupérer. Lorsque ce paramètre est fourni, la réponse immédiate confirme la mise en file d'attente (message: "callback is queued") ; le résultat complet est ensuite envoyé en POST à l'URL fournie une fois le calcul terminé.Beispiel für eine JSON-Antwort :
{
"version": "1.0.4",
"params": {
"lang": "fr",
"keyword": "agence seo",
"key": "Ihr API-Schlüssel"
},
"result": {
"keyword": "agence seo",
"lang": "fr",
"nbCompete": 10,
"competitors": [
{
"url": "https://www.optimize360.fr/agence-seo/",
"position": 1,
"title": "Agence SEO - Optimize 360",
"h1": "Agence SEO Optimize 360",
"nbWords": 312,
"nbWordsAll": 687,
"pertinence": 45,
"scoreSeo": 87.5,
"scoreSemantic": 62.3,
"typePage": "page"
},
{
"url": "https://www.primelis.com/agence-seo/",
"position": 2,
"title": "Agence SEO - Primelis",
"h1": "Votre agence SEO",
"nbWords": 489,
"nbWordsAll": 1102,
"pertinence": 44,
"scoreSeo": 91.0,
"scoreSemantic": 71.8,
"typePage": "page"
}
// Bis zu nbCompeteMax Teilnehmer, je nach Ihrem Abonnement ]
},
"response": 200,
"message": "ok",
"timing": 12.4,
"creditUsed": 1,
"method": "tf_competition",
"credits": 291
}
result.nbCompete : Anzahl der analysierten Wettbewerber.result.competitors[].url : URL des Mitbewerbers.result.competitors[].position : Platzierung in den Google-Suchergebnissen.result.competitors[].title : Titel-Tag der Seite.result.competitors[].h1 : Inhalt von H1.result.competitors[].nbWords : Anzahl der aussagekräftigen Wörter (ohne Stoppwörter).result.competitors[].nbWordsAll : Gesamtzahl der Wörter.result.competitors[].pertinence : Verhältnis von aussagekräftigen Wörtern zu Gesamtwörtern in Prozent.result.competitors[].scoreSeo : Gesamt-SEO-Wert von 0 bis 100.result.competitors[].scoreSemantic : Semantischer Wert im Vergleich zum Ziel-Schlüsselwort (0 bis 100).result.competitors[].typePage : Erkannter Seitentyp (Seite, Artikel, E-Commerce usw.).Hinweis: Diese API kann je nach Anzahl der zu analysierenden Seiten zwischen 5 und 30 Sekunden dauern. Seiten, die kürzlich bereits analysiert wurden, werden aus dem Cache bereitgestellt.
Beschreibung : Extrahiert und analysiert strukturierte JSON-LD-Daten (Schema.org) einer Webseite. Gibt die rohen JSON-LD-Blöcke, die erkannten Schema.org-Typen und eine umfassende Analyse der Qualität der strukturierten Daten zurück.
Endpunkt : https://www.textfocus.net/apis/tf_structured_data/
Methode : POST
key (String, Requisite) : API-Schlüssel.url (String, Requisite) : URL der zu analysierenden Seite.force_refetch (int, optional) : Setzen Sie 1, um den Cache zu umgehen und eine Neuberechnung zu erzwingen.Beispiel für eine JSON-Antwort :
{
"version": "1.0.4",
"params": {
"url": "https://beweb.fr/seo/",
"key": "Ihr API-Schlüssel"
},
"result": {
"jsonLd": [
{
"@context": "https://schema.org",
"@type": "Article",
"name": "Agence SEO Paris",
"description": "Optimisation SEO pour votre site web"
}
],
"jsonLdType": ["Article"],
"analysis": {
"score": 60,
"types_found": ["Article"],
"issues": ["Missing recommended property: author"],
"recommendations": ["Add author property to Article schema"]
}
},
"response": 200,
"message": "ok",
"timing": 1.24,
"creditUsed": 1,
"method": "tf_structured_data",
"credits": 292
}
result.jsonLd : Übersicht über die auf der Seite gefundenen rohen JSON-LD-Blöcke.result.jsonLdType : Liste der erkannten Schema.org-Typen (Article, Product, FAQPage, BreadcrumbList usw.).result.analysis.score : Qualitätsbewertung der strukturierten Daten auf einer Skala von 0 bis 100.result.analysis.types_found : Auf der Seite vorhandene Schema.org-Typen.result.analysis.issues : Liste der festgestellten Probleme (fehlende erforderliche Eigenschaften, Formatierungsfehler usw.).result.analysis.recommendations : Empfehlungen zur Verbesserung strukturierter Daten.Beschreibung : Gibt den Verlauf der SEO-Analysen einer zuvor analysierten URL zurück: SEO-Wert, Leistungswert, semantischer Wert, KI-Wert, Wortanzahl und Datum jedes Eintrags.
Endpunkt : https://www.textfocus.net/apis/tf_history/
Methode : POST
key (String, Requisite) : API-Schlüssel.url (String, Requisite) : URL, für die Sie den Analyseverlauf abrufen möchten.Beispiel für eine JSON-Antwort :
{
"version": "1.0.4",
"params": {
"url": "https://beweb.fr/seo/",
"key": "Ihr API-Schlüssel"
},
"result": {
"url": "https://beweb.fr/seo/",
"keyword": "agence seo",
"session": "a1b2c3d4e5f6",
"snapshots": [
{
"date": "2024-09-01 10:15:00",
"scoreSeo": 72.5,
"scorePerf": 65.0,
"scoreSem": 58.3,
"scoreIa": 61.0,
"nbwordsall": 1240
},
{
"date": "2025-01-15 14:30:00",
"scoreSeo": 78.2,
"scorePerf": 70.1,
"scoreSem": 63.5,
"scoreIa": 67.4,
"nbwordsall": 1350
}
]
},
"response": 200,
"message": "ok",
"timing": 0.08,
"creditUsed": 0,
"method": "tf_history",
"credits": 292
}
result.url : URL analysiert.result.keyword : Mit der Analyse verknüpftes Ziel-Schlüsselwort.result.session : Sitzungs-ID der Analyse.result.snapshots[].date : Aufnahmedatum (JJJJ-MM-TT HH:MM:SS).result.snapshots[].scoreSeo : Gesamt-SEO-Wert von 0 bis 100.result.snapshots[].scorePerf : Leistungsbewertung von 0 bis 100.result.snapshots[].scoreSem : Semantischer Wert von 0 bis 100.result.snapshots[].scoreIa : KI-Wert von 0 bis 100.result.snapshots[].nbwordsall : Gesamtwortzahl der Seite zum aktuellen Zeitpunkt.Hinweis: Der Verlauf ist nur verfügbar, wenn die Seite mindestens einmal über Ihr Konto gecrawlt wurde. Die Daten sind in aufsteigender Reihenfolge nach Datum sortiert.
Beschreibung : Analysiert die mobile Leistung einer Seite mithilfe von Google Lighthouse / PageSpeed Insights. Gibt die Gesamtleistungsbewertung und die Core Web Vitals zurück: FCP, LCP, TBT, CLS, Speed Index, TTI und TTFB.
Endpunkt : https://www.textfocus.net/apis/tf_perf/
Methode : POST
key (String, Requisite) : API-Schlüssel.url (String, Requisite) : URL der zu analysierenden Seite.force_refetch (int, optional) : Setzen Sie den Wert auf 1, um den Cache zu umgehen (Gültigkeit: 60 Minuten).Beispiel für eine JSON-Antwort :
{
"version": "1.0.4",
"params": {
"url": "https://beweb.fr/seo/",
"key": "Ihr API-Schlüssel"
},
"result": {
"url": "https://beweb.fr/seo/",
"scorePerf": 72.0,
"strategy": "MOBILE",
"metrics": {
"first-contentful-paint": { "value": 1820, "score": 75, "unit": "ms" },
"largest-contentful-paint": { "value": 3200, "score": 48, "unit": "ms" },
"total-blocking-time": { "value": 240, "score": 62, "unit": "ms" },
"cumulative-layout-shift": { "value": 0.04, "score": 90, "unit": "" },
"speed-index": { "value": 2900, "score": 71, "unit": "ms" },
"interactive": { "value": 4100, "score": 55, "unit": "ms" },
"server-response-time": { "value": 310, "score": 85, "unit": "ms" }
}
},
"response": 200,
"message": "ok",
"timing": 8.4,
"creditUsed": 1,
"method": "tf_perf",
"credits": 291
}
result.scorePerf : Gesamtbewertung der mobilen Leistung auf einer Skala von 0 bis 100.result.strategy : Analysestrategie (immer MOBIL).result.metrics[key].value : Bruttowert der Metrik (in Millisekunden, außer CLS, das keine Einheit hat).result.metrics[key].score : Bewertung von 0 bis 100 für diese Kennzahl.result.metrics[key].unit : Einheit: ms für die meisten Metriken, leere Zeichenfolge für CLS.Hinweis: Die Ergebnisse werden 60 Minuten lang zwischengespeichert. Verwenden Sie force_refetch=1, um eine neue Analyse zu erzwingen.
Beschreibung : Extrahiert alle ausgehenden Links einer Seite: Ankertext, aufgelöste URL (relativ → absolut), rel-Attribut, Position auf der Seite (Hauptbereich, Navigation, Fußzeile, Nebenbereich, Kopfzeile, Breadcrumb) und Typ (intern oder extern).
Endpunkt : https://www.textfocus.net/apis/tf_links/
Methode : POST
key (String, Requisite) : API-Schlüssel.url (String, Requisite) : URL der zu analysierenden Seite.force_refetch (int, optional) : Setzen Sie den Wert auf 1, um den Cache der Seite zu umgehen.Beispiel für eine JSON-Antwort :
{
"version": "1.0.4",
"params": {
"url": "https://beweb.fr/seo/",
"key": "Ihr API-Schlüssel"
},
"result": {
"url": "https://beweb.fr/seo/",
"total": 34,
"internal": 22,
"external": 12,
"links": [
{
"url": "https://beweb.fr/audit-seo/",
"anchor": "audit seo",
"rel": null,
"title": null,
"location": "main",
"type": "internal"
},
{
"url": "https://www.google.fr/",
"anchor": "google",
"rel": "nofollow",
"title": "Google",
"location": "footer",
"type": "external"
}
]
},
"response": 200,
"message": "ok",
"timing": 1.8,
"creditUsed": 1,
"method": "tf_links",
"credits": 290
}
result.total : Gesamtzahl der eindeutigen Links (URL + Ankertext).result.internal : Anzahl der internen Links (gleiche Domain).result.external : Anzahl externer Links (andere Domain).result.links[].url : Aufgelöste absolute URL des Links.result.links[].anchor : Ankertext (in Kleinbuchstaben).result.links[].rel : Wert des Attributs rel (nofollow, sponsored…) oder null.result.links[].title : Wert des Attributs title oder null.result.links[].location : Bereich der Seite, in dem sich der Link befindet: main, nav, footer, aside, header oder breadcrumb.result.links[].type : internal (gleiche Domain) oder external.Hinweis: Die HTTP-Codes der einzelnen Links werden nicht geprüft (um Dutzende zusätzlicher Anfragen zu vermeiden). Seitenanker (#...), mailto:- und tel:-Links werden ausgeschlossen.
Beschreibung : Massen-On-Page-SEO-Audit: Analysiert bis zu 50 URLs nacheinander und sendet die zusammengefassten Ergebnisse an eine Callback-URL. Credits werden nur für erfolgreich analysierte Seiten verbraucht.
Endpunkt : https://www.textfocus.net/apis/tf_seo_bulk/
Methode : POST
key (String, Requisite) : API-Schlüssel.urls[] (array, erforderlich) : Liste der zu analysierenden URLs (maximal 50). Im Formular-Datenbereich den Schlüssel urls[] für jede URL wiederholen.callback (String, Requisite) : Die URL Ihres Webhooks, der die konsolidierten Ergebnisse am Ende der Verarbeitung per HTTP-POST (JSON) empfängt.keyword (string, optionnel) : Ziel-Keyword, das auf alle URLs angewendet wird (aktiviert das On-Page-Scoring für das Keyword).force_refetch (int, optional) : Setzen Sie die Werte auf 1, um den Cache für alle URLs zu umgehen.{
"response": 202,
"message": "processing started",
"urls_count": 5
}
{
"response": 200,
"method": "tf_seo_bulk",
"processed": 4,
"errors": 1,
"skipped": 0,
"credits_consumed": 4,
"timing": 38.2,
"results": [
{
"url": "https://example.com/page-1",
"status": "ok",
"scoreSeo": 67.3,
"scoreSem": 52.0,
"title": "Titre de la page",
"h1": "Titre H1",
"description": "Meta description...",
"nbMots": 842
},
{
"url": "https://example.com/page-unreachable",
"status": "error",
"error": "analysis returned no result"
}
]
}
processed : Anzahl der erfolgreich analysierten URLs (= verbrauchte Credits).errors : Anzahl der fehlgeschlagenen URLs (Seite nicht erreichbar oder keine Ergebnisse).skipped : Anzahl der nicht verarbeiteten URLs (Guthaben während der Verarbeitung aufgebraucht).skip_reason : Vorhanden, wenn skipped > 0. Wert: insufficient_credits.credits_consumed : Gesamtzahl der belasteten Gutschriften (entspricht processed).results[].scoreSeo : Gesamt-SEO-Wert von 0 bis 100.results[].scoreSem : Semantischer Wert von 0 bis 100.results[].title : Inhalt des Tags <title>.results[].h1 : Inhalt des Tags <h1>.results[].description : Inhalt der Meta-Beschreibung.results[].nbMots : Anzahl der relevanten Wörter auf der Seite.Hinweis: Die Wartezeit zwischen den einzelnen URLs beträgt 1 Sekunde. Bei 50 URLs kann die Verarbeitung mehrere Minuten dauern. Stellen Sie sicher, dass Ihr Callback-Endpunkt POST-Anfragen mit dem Content-Type: application/json akzeptiert.
Einige APIs, wie z. B. tf_semantic, können eine asynchrone Verarbeitung erfordern.
In diesem Fall kann ein Callback festgelegt werden, der die Antwort auf Ihrem Server empfängt.
<?php
public function my_callback(){
log_message('error', 'Call of my_callback');
$payload = file_get_contents('php://input');
log_message('error', 'Content : '. $payload);
print_r($payload);
}
?>