---
title: "Créer des liens courts personnalisés et traçables par API"
url: https://uselinkpilot.com/fr/blog/developer-integration-for-creating-trackable-branded-links
description: "Intégrer la création de liens à votre produit : clés API, appel de création, idempotence, paramètres UTM, cas limites de redirection, webhooks et tests."
lang: fr
---

Suivi des liens (https://uselinkpilot.com/fr/blog/category/link-tracking)

# Intégration développeur pour créer des liens courts personnalisés et traçables: guide pratique

Intégrer la création de liens à votre produit: clés API, appel de création, idempotence, paramètres UTM, cas limites de redirection, webhooks et tests.

LinkPilot Team (https://uselinkpilot.com/fr/author/linkpilot-team) · Les personnes qui développent et exploitent LinkPilot chez TetraCore, LLC 26 octobre 2026 · À propos de LinkPilot (https://uselinkpilot.com/fr/about)

Un jour ou l’autre, une équipe cesse de créer ses liens à la main. Le produit a besoin d’un lien de partage par utilisateur, le CMS doit générer une URL courte à chaque publication d’article, l’outil de campagne veut un lien suivi par création publicitaire. Une intégration développeur pour créer des liens courts personnalisés et traçables fait du raccourcisseur une fonction que vos systèmes appellent.

Ce guide parcourt l’intégration de bout en bout: ce qu’il faut décider avant d’écrire du code, le fonctionnement de l’authentification et de l’appel de création, comment rendre les liens traçables sans casser l’attribution, les cas limites de redirection qui posent problème, la place des webhooks et la manière de tout tester. L’API de LinkPilot sert d’exemple concret; la logique s’applique à la plupart des plateformes.

## Décider d’abord de l’architecture

Quatre décisions, prises une fois pour toutes, évitent l’essentiel des reprises.

- **Quels systèmes créent des liens**, et sur quel déclencheur: un événement de publication, une action d’un utilisateur, l’enregistrement d’une fiche de campagne.
- **Quels champs les appelants contrôlent.** En général la destination et les tags; parfois un slug. Rarement le domaine, qui devrait être un paramètre propre à chaque espace de travail ou à chaque client.
- **Comment les données de campagne se traduisent en suivi.** La campagne, le canal et l’emplacement dans votre système deviennent des tags sur le lien et des paramètres UTM sur la destination. Fixez cette correspondance et placez-la dans une seule fonction.
- **Lien direct, lien profond ou solution de repli.** Un lien vers une application mobile a besoin d’une solution de repli web pour les personnes qui n’ont pas l’application. Décidez si c’est le raccourcisseur ou votre destination qui s’en charge.

Mettez ces décisions par écrit. L’intégration est surtout du code de liaison, et ce code doit rester banal.

## S’authentifier avec des clés à portée limitée

L’API de LinkPilot s’authentifie avec des clés de type bearer qui commencent par `lp_live_`, créées dans le tableau de bord et disponibles sur tous les forfaits, y compris Free. Chaque clé appartient à un espace de travail: une intégration d’agence utilise donc une clé par espace de travail client, et les liens arrivent par construction au bon endroit.

```bash
curl https://uselinkpilot.com/api/v1/me \
  -H "Authorization: Bearer lp_live_..."
```

`GET /me` renvoie l’espace de travail, le forfait, les limites, l’utilisation actuelle et le budget de requêtes de la clé. Appelez-le au démarrage et faites apparaître les limites dans vos propres logs, pour découvrir un plafond avant qu’une campagne ne le découvre à votre place.

Traitez la clé comme n’importe quel identifiant de production: stockez-la dans un gestionnaire de secrets, jamais dans un dépôt ni dans un bundle front-end, et quand vous devez la transmettre à la personne qui développe l’intégration, envoyez-la par un lien secret à usage unique (https://uselinkpilot.com/fr/tools/free-secret-link-generator). Le guide sur les clés API (https://uselinkpilot.com/fr/blog/how-to-share-api-keys-securely) couvre la transmission et la rotation.

## Créer le lien

L’appel de création prend la destination et quelques champs facultatifs.

```bash
curl -X POST https://uselinkpilot.com/api/v1/links \
  -H "Authorization: Bearer lp_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/launch?utm_source=newsletter&utm_medium=email&utm_campaign=oct-launch",
    "slug": "oct-launch-email",
    "domain": "go.example.com",
    "title": "October launch, newsletter",
    "tags": ["oct-launch", "email"]
  }'
```

La réponse contient l’identifiant du lien, l’URL courte et les métadonnées que vous avez envoyées. Stockez l’identifiant à côté de votre propre enregistrement: c’est lui qui servira plus tard à lire, modifier ou supprimer le lien. `GET /links` liste les liens du plus récent au plus ancien, avec une pagination par curseur (`{ data, next_cursor }`), et `GET /links/{id}` et `DELETE /links/{id}` agissent sur un lien précis.

Quelques règles qui gardent l’intégration fiable:

- **Construisez l’URL de destination dans le code**, paramètres UTM compris, à partir des champs de votre campagne. Les paramètres saisis à la main finissent par diverger. Le guide complet des paramètres UTM (https://uselinkpilot.com/fr/blog/utm-parameters-complete-playbook) fixe les conventions.
- **Laissez la plateforme générer les slugs**, sauf si un humain doit les lire. Quand vous définissez vous-même les slugs, dérivez-les de la campagne, du canal et de l’emplacement, en minuscules avec des tirets, et gérez un conflit en ajoutant un court suffixe puis en réessayant une seule fois.
- **Rendez la création idempotente.** Associez chaque création à l’identifiant de votre propre enregistrement, pour qu’une nouvelle tentative après un dépassement de délai retrouve le lien existant au lieu d’en créer un second. Si la plateforme ne propose pas de clé d’idempotence, cherchez votre tag ou votre slug avec `GET /links` avant de créer le lien.
- **Un traitement en masse, c’est une boucle avec temporisation.** Respectez le budget de requêtes indiqué par `/me`, temporisez en cas de 429 et consignez chaque échec avec l’enregistrement concerné.

Pour les scripts et l’outillage local, la CLI `linkpilot` disponible sur npm encapsule les mêmes appels, et le serveur `@uselinkpilot/mcp` les met à disposition des agents IA. Les deux sont open source sur GitHub, sous TetraCoreHQ.

## Rendre les liens traçables sans casser l’attribution

Chaque clic sur un lien créé par l’API est enregistré exactement comme pour un lien créé dans le tableau de bord: l’heure, le référent, l’appareil, le navigateur, le pays, la région, le signalement des bots et un hash salé à la place de l’adresse IP. Vous obtenez ainsi le décompte au niveau du lien. L’attribution sur la destination dépend toujours de l’arrivée intacte de l’URL.

- **Conservez les paramètres de requête à travers la redirection.** Testez un lien avec le vérificateur de redirections (https://uselinkpilot.com/fr/tools/redirect-checker) et vérifiez que les paramètres UTM figurent bien dans l’URL finale.
- **Évitez les chaînes.** Un lien court qui redirige vers une autre redirection perd des paramètres et de la vitesse. Pointez directement vers la page finale.
- **Décidez de ce que vous collectez.** Le pays et l’appareil relèvent des statistiques agrégées. Un lien par utilisateur relié à une fiche client est une donnée personnelle. Le guide moderne du suivi des liens (https://uselinkpilot.com/fr/blog/modern-link-tracking) liste ce qui est enregistré et ce qui ne l’est volontairement pas.
- **Fixez les attentes dans le produit.** Un nombre de clics n’est pas un nombre de conversions. Affichez les deux, avec des libellés clairs.

## Gérer les cas limites de redirection

- **Validation de la destination.** Avant de créer le lien, refusez les destinations qui ne sont pas en HTTPS, votre propre domaine de raccourcissement et tout ce qui figure sur une liste de blocage. Une redirection ouverte sur votre marque est un outil d’hameçonnage (phishing).
- **Liens expirés, désactivés ou introuvables.** Choisissez la page de repli au moment de créer le lien et configurez-la, pour qu’un lien de campagne mort mène à la page d’accueil plutôt qu’à une erreur. Pour les liens imprimés, préférez modifier la destination plutôt que de laisser le lien expirer.
- **Liens profonds.** Utilisez une destination qui détecte l’application et se rabat sur le web, ou une fonctionnalité de la plateforme prévue pour cela. Testez sur les deux systèmes d’exploitation, avec et sans l’application installée.
- **Encodage.** Encodez l’URL de destination avant de la placer dans le JSON, surtout quand elle contient sa propre chaîne de requête. Le double encodage est le bug habituel.
- **Localisation.** Si un même lien court sert plusieurs langues, faites la détection de langue sur la destination, pas dans le slug.

## Ajouter des webhooks pour les événements qui comptent

Les webhooks permettent au reste de votre stack de réagir à l’activité des liens sans interrogation périodique. LinkPilot signe chaque envoi avec un en-tête de signature HMAC et se déclenche sur le cycle de vie des liens (`link.created`, `link.updated`, `link.deleted`) et sur celui des secrets (`secret.created`, `secret.viewed`, `secret.burned`). Vérifiez la signature avant d’analyser le contenu, accusez réception rapidement, traitez depuis une file d’attente et stockez les identifiants d’événements pour que les renvois soient sans effet. Les données de clics forment un flux de reporting et non un webhook: lisez-les via les statistiques et les exports. Le guide des intégrations par webhook (https://uselinkpilot.com/fr/blog/how-to-choose-and-use-a-link-tracking-platform-with-webhook-integrations) explique comment construire le récepteur.

## Tester de bout en bout, puis continuer à surveiller

Avant que l’intégration ne touche une vraie campagne:

1. Créez un lien avec vos tags de test, dans un espace de travail de préproduction.
2. Vérifiez que la réponse contient l’identifiant et l’URL courte attendus.
3. Cliquez dessus depuis un téléphone et un ordinateur portable. Vérifiez la redirection, la présence des paramètres UTM à l’arrivée et les deux clics dans les statistiques, avec les bons types d’appareils.
4. Créez à nouveau le même enregistrement et vérifiez que vous obtenez le même lien, pas un doublon.
5. Supprimez-le et vérifiez que `link.deleted` arrive sur l’endpoint de votre webhook, si vous en utilisez un.

En production, surveillez trois choses: les taux d’erreur de l’API par code de statut, la latence de redirection mesurée par un contrôle synthétique, et un rapprochement hebdomadaire du nombre de liens entre vos enregistrements et `GET /links`. Renouvelez la clé API à intervalle régulier et à chaque départ d’un membre de l’équipe qui la détient.

Documentez l’intégration comme un produit interne: les champs qu’elle accepte, la règle des slugs, le comportement de repli, les limites indiquées par `/me` et la personne à contacter quand une campagne affiche zéro clic. La prochaine personne qui y touchera vous en sera reconnaissante, et ce sera souvent vous.

## Lectures complémentaires

- Comparatif des API de raccourcisseurs d’URL: Bitly, Dub, Short.io, TinyURL: https://uselinkpilot.com/fr/blog/url-shortener-api-comparison
- Comment choisir et utiliser une plateforme de suivi des liens avec intégrations par webhook: https://uselinkpilot.com/fr/blog/how-to-choose-and-use-a-link-tracking-platform-with-webhook-integrations
- Comment partager des clés API en toute sécurité: https://uselinkpilot.com/fr/blog/how-to-share-api-keys-securely
- Paramètres UTM: le guide complet 2026: https://uselinkpilot.com/fr/blog/utm-parameters-complete-playbook

## Outils pour cet article

Raccourcisseur d’URL gratuit

Transformez une URL longue en URL courte, avec le slug de votre choix.
https://uselinkpilot.com/fr/tools/url-shortener

Versions: Raccourcisseur de lien pour bio TikTok (https://uselinkpilot.com/fr/tools/url-shortener/tiktok-bio) · Raccourcisseur de lien pour bio Instagram (https://uselinkpilot.com/fr/tools/url-shortener/instagram-bio) · Raccourcisseur de lien pour publications LinkedIn (https://uselinkpilot.com/fr/tools/url-shortener/linkedin-post) · Raccourcisseur de liens X (Twitter) (https://uselinkpilot.com/fr/tools/url-shortener/twitter)

Générateur UTM

Créez en quelques secondes des URL balisées pour vos campagnes.
https://uselinkpilot.com/fr/tools/utm-builder

Versions: Générateur UTM pour LinkedIn (https://uselinkpilot.com/fr/tools/utm-builder/linkedin) · Générateur UTM pour Facebook (https://uselinkpilot.com/fr/tools/utm-builder/facebook) · Générateur UTM pour l’e-mail (https://uselinkpilot.com/fr/tools/utm-builder/email) · Générateur UTM pour Instagram (https://uselinkpilot.com/fr/tools/utm-builder/instagram) · Générateur UTM pour TikTok (https://uselinkpilot.com/fr/tools/utm-builder/tiktok) · Générateur UTM pour YouTube (https://uselinkpilot.com/fr/tools/utm-builder/youtube) · Générateur UTM pour Google Ads (https://uselinkpilot.com/fr/tools/utm-builder/google-ads) · Générateur UTM pour X (Twitter) (https://uselinkpilot.com/fr/tools/utm-builder/twitter) · Générateur UTM pour Reddit (https://uselinkpilot.com/fr/tools/utm-builder/reddit) · Générateur UTM pour Pinterest (https://uselinkpilot.com/fr/tools/utm-builder/pinterest)

Vérificateur de redirections

Retracez toute la chaîne de redirections d’une URL.
https://uselinkpilot.com/fr/tools/redirect-checker

Versions: Vérificateur de redirections pour liens d’affiliation (https://uselinkpilot.com/fr/tools/redirect-checker/affiliate-links) · Audit SEO des redirections (https://uselinkpilot.com/fr/tools/redirect-checker/seo-audit)

Vérificateur de clics sur les liens

Consultez les clics, les sites référents et les localisations d’un lien court.
https://uselinkpilot.com/fr/tools/link-analytics

Suggestions de liens intelligents

Suggestions de l’IA pour le nommage, la propreté des UTM et les domaines à votre marque.
https://uselinkpilot.com/fr/tools/smart-link-suggestions

## Questions fréquentes

### Qu’est-ce qu’un lien court personnalisé et traçable?

### Quels champs une API de création de liens doit-elle accepter?

### Comment une intégration doit-elle gérer les slugs en double?

### Pourquoi tester les paramètres de requête après la redirection?

### Que doit-il se passer quand un lien expire ou est supprimé?

### Les clics sur un lien prouvent-ils qu’une campagne a provoqué une conversion?

## Des liens mieux pilotés avec LinkPilot

Suivi des clics, UTM, QR codes, analyses par IA et rapports en marque blanche dans un seul espace de travail. Gratuit pour commencer.

Créer un compte gratuit (https://uselinkpilot.com/signup)

## À lire ensuite

Suivi des liens

### Suivi de liens personnalisé pour les équipes customer success: guide pratique

Où placer les liens CS, les suivre par compte sans données personnelles dans l’URL, lire les clics à côté de l’adoption, et les règles de confidentialité.
https://uselinkpilot.com/fr/blog/custom-link-tracking-for-customer-success-teams

Suivi des liens

### Raccourcisseur de liens sur domaine personnalisé avec rapports de clics

Critères de choix d’un raccourcisseur de liens sur domaine personnalisé avec rapports de clics, connexion du domaine par CNAME et lecture des statistiques.
https://uselinkpilot.com/fr/blog/custom-domain-link-shortener-with-click-reports

Suivi des liens

### Intégrer à Slack un raccourcisseur de liens à votre marque

Domaine personnalisé, application Slack qui raccourcit les liens et change les mots de passe collés en liens à usage unique, aperçus et suivi des clics.
https://uselinkpilot.com/fr/blog/how-to-integrate-a-branded-link-shortener-with-slack

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Accueil",
        "item": "https://uselinkpilot.com/fr"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Blog",
        "item": "https://uselinkpilot.com/fr/blog"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "Intégration développeur : créer des liens courts personnalisés traçables",
        "item": "https://uselinkpilot.com/fr/blog/developer-integration-for-creating-trackable-branded-links"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://uselinkpilot.com/fr/blog/developer-integration-for-creating-trackable-branded-links#article",
    "headline": "Intégration développeur : créer des liens courts personnalisés traçables",
    "description": "Intégrer la création de liens à votre produit : clés API, appel de création, idempotence, paramètres UTM, cas limites de redirection, webhooks et tests.",
    "inLanguage": "fr",
    "datePublished": "2026-10-26",
    "dateModified": "2026-10-26",
    "image": "https://uselinkpilot.com/logo-512.png",
    "author": {
      "@type": "Organization",
      "@id": "https://uselinkpilot.com/author/linkpilot-team#organization",
      "name": "LinkPilot Team",
      "url": "https://uselinkpilot.com/fr/author/linkpilot-team"
    },
    "publisher": {
      "@type": "Organization",
      "name": "LinkPilot",
      "url": "https://uselinkpilot.com",
      "logo": {
        "@type": "ImageObject",
        "url": "https://uselinkpilot.com/logo-512.png",
        "width": 512,
        "height": 512
      }
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://uselinkpilot.com/fr/blog/developer-integration-for-creating-trackable-branded-links"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Qu’est-ce qu’un lien court personnalisé et traçable ?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Une URL courte sur un domaine que vous contrôlez, qui redirige vers une destination et enregistre chaque clic au passage : l’heure, le référent, l’appareil, le pays et le signalement des bots. Créé par l’API, c’est le même objet qu’un lien créé dans le tableau de bord."
        }
      },
      {
        "@type": "Question",
        "name": "Quels champs une API de création de liens doit-elle accepter ?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "L’URL de destination, un slug facultatif, le domaine sur lequel servir le lien, un titre et des tags. Tout le reste, comme les paramètres UTM, se place dans l’URL de destination que vous transmettez. L’appel POST /links de LinkPilot prend exactement ces champs."
        }
      },
      {
        "@type": "Question",
        "name": "Comment une intégration doit-elle gérer les slugs en double ?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Traitez un conflit de slug comme une réponse normale, pas comme une erreur qui fait planter le programme. Laissez la plateforme générer le slug ou, en cas de conflit, ajoutez un court suffixe et réessayez une seule fois. N’écrasez jamais un lien existant sans le signaler."
        }
      },
      {
        "@type": "Question",
        "name": "Pourquoi tester les paramètres de requête après la redirection ?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Parce qu’une chaîne de redirections, une destination qui normalise les URL ou une plateforme qui supprime les paramètres inconnus peut faire disparaître vos paramètres UTM, et chaque clic n’est alors attribué à rien. Un seul test avec un vérificateur de redirections suffit à le détecter."
        }
      },
      {
        "@type": "Question",
        "name": "Que doit-il se passer quand un lien expire ou est supprimé ?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "L’URL courte doit mener à une page de repli adaptée, pas à une simple erreur. Choisissez la page de repli au moment de créer le lien et, pour les liens imprimés, préférez modifier la destination plutôt que de laisser le lien expirer."
        }
      },
      {
        "@type": "Question",
        "name": "Les clics sur un lien prouvent-ils qu’une campagne a provoqué une conversion ?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Non. Un clic montre qu’une personne a été envoyée vers une destination. Les conversions se mesurent sur la destination et se relient par le nom de campagne ou un identifiant signé. Présentez les deux côte à côte."
        }
      }
    ],
    "inLanguage": "fr"
  },
  {
    "@context": "https://schema.org",
    "@type": "SoftwareApplication",
    "@id": "https://uselinkpilot.com/#software",
    "name": "LinkPilot",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "Web",
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "url": "https://uselinkpilot.com",
    "offers": [
      {
        "@type": "Offer",
        "name": "Free",
        "price": "0",
        "priceCurrency": "USD",
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro",
        "price": "29",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "29",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency",
        "price": "299",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "299",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus",
        "price": "799",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "799",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro (yearly)",
        "price": "288",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "288",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency (yearly)",
        "price": "2988",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "2988",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus (yearly)",
        "price": "7980",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "7980",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Enterprise",
        "priceSpecification": {
          "@type": "PriceSpecification",
          "priceCurrency": "USD"
        },
        "url": "https://uselinkpilot.com/pricing"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "@id": "https://uselinkpilot.com/#organization",
    "name": "LinkPilot",
    "alternateName": "LinkPilot by TetraCore",
    "url": "https://uselinkpilot.com",
    "contactPoint": {
      "@type": "ContactPoint",
      "contactType": "customer support",
      "email": "support@uselinkpilot.com",
      "url": "https://uselinkpilot.com/support"
    },
    "parentOrganization": {
      "@type": "Organization",
      "@id": "https://tetracorehq.com/#organization",
      "name": "TetraCore",
      "url": "https://tetracorehq.com/"
    },
    "logo": {
      "@type": "ImageObject",
      "url": "https://uselinkpilot.com/logo-512.png",
      "width": 512,
      "height": 512
    },
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "sameAs": [
      "https://x.com/uselinkpilot",
      "https://www.linkedin.com/company/uselinkpilot",
      "https://facebook.com/uselinkpilot",
      "https://github.com/TetraCoreHQ/linkpilot-cli",
      "https://github.com/TetraCoreHQ/linkpilot-mcp",
      "https://www.npmjs.com/package/linkpilot",
      "https://www.npmjs.com/package/@uselinkpilot/sdk",
      "https://www.npmjs.com/package/@uselinkpilot/mcp",
      "https://chromewebstore.google.com/detail/linkpilot-short-links-and/mnmppadihpcncicldpkmgknhnjkondad",
      "https://addons.mozilla.org/en-US/firefox/addon/uselinkpilot/"
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "LinkPilot",
    "url": "https://uselinkpilot.com",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "https://uselinkpilot.com/blog?q={search_term_string}",
      "query-input": "required name=search_term_string"
    }
  }
]
```