---
title: "مشاركة الروابط بأمان للمطورين | مدونة LinkPilot"
url: https://uselinkpilot.com/ar/blog/secure-link-sharing-for-developers
description: "دليل عملي لفرق الهندسة: متى تستخدم الروابط لمرة واحدة، وكيف تنشئها من السكربتات، وكيف تدمجها في استقبال الموظفين الجدد وفي CI."
lang: ar
---

الأمان (https://uselinkpilot.com/ar/blog/category/security)

# مشاركة الروابط بأمان للمطورين

دليل عملي لفرق الهندسة: متى تستخدم الروابط لمرة واحدة، وكيف تنشئها من السكربتات، وكيف تدمجها في استقبال الموظفين الجدد وفي CI.

W. Miller (https://uselinkpilot.com/ar/author/w-miller)26 مايو 2026 · آخر تحديث 22 أكتوبر 2026 · عن LinkPilot (https://uselinkpilot.com/ar/about)

إذا كنت مهندسًا، فمشاركة الأسرار تظهر عادة في ثلاثة مواضع: **استقبال الموظفين الجدد** و**التسليم إلى الموردين** و**الاستجابة للحوادث**. هذه نظرة من زاوية المطور: متى تلجأ إلى رابط لمرة واحدة، ومتى تستغني عنه، وكيف تكتب له سكربتًا دون أن يتسرب السر إلى سجل أوامر الطرفية في الطريق. ولتجربة الآلية أولًا، لا تحتاج أداة إنشاء الروابط السرية لمرة واحدة (https://uselinkpilot.com/ar/tools/free-secret-link-generator) المجانية إلى حساب.

## متى يستخدم المطور رابطًا لمرة واحدة؟

حين يكون شخص على طرف واحد على الأقل من التسليم، ولا ينبغي أن تبقى القيمة في أي مكان بعده. الحالات المعتادة:

- استقبال مهندس جديد ومعه أول مجموعة من بيانات الدخول.
- مشاركة كلمة مرور مؤقتة للمسؤول أثناء حادثة.
- تسليم رمز لمورد أو متعاقد لا ينبغي أن يبقى في خزنتك.
- تغيير بيانات دخول يجب أن تتوقف قيمتها القديمة عن العمل سريعًا.
- إرسال مفتاح API جهزته لعميل.

## متى لا تستخدم رابطًا لمرة واحدة

- **الأسرار بين الآلات.** الأداة الصحيحة هنا هي متغيرات بيئة CI (مثل أسرار GitHub Actions (https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions)) وKubernetes Secrets (https://kubernetes.io/docs/concepts/configuration/secret/) وبيانات الدخول الديناميكية في Vault. الرابط مخصص لتسليم القيمة من شخص إلى هذه الأنظمة.
- **بيانات دخول الفريق طويلة الأمد.** مكانها مدير كلمات المرور.
- **الإعدادات العامة.** لا تلبس إعدادات غير سرية ثوب السر. استخدم رابطًا عاديًا.

الحد الفاصل: إذا كان طرفا النقل آلتين، فاستخدم مخزن الأسرار في منصتك. وإذا كان أحد الطرفين على الأقل شخصًا، فالرابط لمرة واحدة هو عادة الأداة الأنظف.

| الموقف | الأداة الصحيحة |
| --- | --- |
| أول بيانات دخول لمهندس جديد | رابط سري لمرة واحدة |
| خط CI يحتاج إلى رمز نشر أثناء التشغيل | مخزن أسرار CI أو متغيرات البيئة |
| Pod يحتاج إلى كلمة مرور قاعدة بيانات | K8s secret أو external secrets operator |
| بيانات دخول للفريق يستخدمها خمسة أشخاص يوميًا | مدير كلمات المرور (خزنة مشتركة) |
| عميل يحتاج إلى مفتاح API الذي جُهز له | رابط سري لمرة واحدة |
| سر مطلوب داخل مستودع git | لا يوضع فيه أبدًا: أشر إلى مخزن أسرار، وأضف الفحص إلى CI |

## كتابة السكربت

لدى LinkPilot واجهة REST API (متاحة في كل الخطط، ومنها خطة Free). وهكذا يبدو إصدار سر من سكربت:

```bash
LP_KEY=lp_live_...

URL=$(curl -sS https://api.uselinkpilot.com/v1/secrets \
  -H "Authorization: Bearer $LP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "payload": "'"$NEW_DB_PASSWORD"'",
    "expires_in": 3600,
    "burn_after_read": true,
    "passphrase": "'"$ONBOARDING_PASSPHRASE"'"
  }' | jq -r '.url')

echo "Secret link: $URL"
```

مرّر عنوان URL هذا إلى أي قناة تسليم تستخدمها أصلًا: رسالة خاصة في Slack، أو البريد الإلكتروني، أو عنوان webhook في أداة استقبال الموظفين لديك.

### إبقاء المحتوى خارج قائمة العمليات

في المقتطف السابق عيب معروف: إدراج المحتوى داخل `-d` يضعه في سطر أوامر curl، فيستطيع أي مستخدم محلي قراءته عبر `ps` ما دام الطلب يعمل. ابنِ JSON بالأداة `jq` (https://jqlang.org/manual/) ومرّره عبر stdin باستخدام الخيار `-d @-` في curl (https://curl.se/docs/manpage.html#-d) بدلًا من ذلك:

```bash
set -euo pipefail

jq -n --arg payload "$NEW_DB_PASSWORD" \
      --arg pass "$ONBOARDING_PASSPHRASE" \
      '{payload: $payload, expires_in: 3600,
        burn_after_read: true, passphrase: $pass}' |
curl -sS https://api.uselinkpilot.com/v1/secrets \
  -H "Authorization: Bearer $LP_KEY" \
  -H "Content-Type: application/json" \
  -d @- | jq -r '.url'
```

ثلاث عادات تستحق أن تصبح تلقائية:

- تصل القيم عبر متغيرات البيئة أو أداة CLI لمدير أسرار، ولا تُكتب أبدًا في طرفية تفاعلية تحفظها في سجل الأوامر.
- يطبع السكربت _الرابط_، لا المحتوى أبدًا.
- `set -euo pipefail` حتى لا يمرر طلب API فاشل عنوانًا فارغًا إلى الخطوة التالية دون أن تنتبه.

## قالب لاستقبال الموظفين الجدد

نمط ينجح مع المهندسين الجدد في يومهم الأول:

1. ينشئ سكربت الاستقبال الحسابات ويستخرج بيانات الدخول لمرة واحدة.
2. ينشئ السكربت رابطًا سريًا لكل بيانات دخول، تنتهي صلاحيته بعد 4 ساعات، مع عبارة مرور مشتركة.
3. يرسل السكربت بريدًا إلكترونيًا فيه كل الروابط، ورسالة خاصة في Slack فيها عبارة المرور.
4. يفتح المهندس كل رابط وينسخ بيانات الدخول إلى مدير كلمات المرور لديه.
5. ما لم يُقرأ حتى نهاية اليوم يُبطَل ويُعاد إصداره حين يكون المهندس مستعدًا.

سبب هذه الإعدادات: مدة 4 ساعات تكفي صباح يوم أول عادي دون أن تبقى بيانات الدخول صالحة طوال الليل، وعبارة المرور تنتقل عبر قناة ثانية فلا يضر بريد أُعيد توجيهه أو وصل إلى غير صاحبه، والحذف بعد القراءة يعني أن صندوق بريد المهندس ينتهي يومه وليس فيه إلا عناوين معطلة.

قل للموظف الجديد صراحة: _«كل رابط يعمل مرة واحدة، فاحفظ القيمة في مدير كلمات المرور قبل إغلاق التبويب.»_ أكثر ما يفشل فيه الاستقبال هو مستلم يقرأ السر ثم يغلق التبويب ظانًا أنه يستطيع العودة إليه لاحقًا.

## دليل تشغيل لتغيير بيانات الدخول

تغيير كلمة مرور قاعدة بيانات مشتركة يتسلمها متعاقد أو زميل:

1. أنشئ كلمة المرور الجديدة وطبّقها في النظام المصدر (قاعدة البيانات، أو وحدة التحكم السحابية، أو حيثما كانت نسختها المعتمدة).
2. حدّث أولًا الأنظمة التي تستخدمها لديك (خزنة CI و K8s secret وإعدادات التطبيق) حتى لا يتعطل شيء أثناء التسليم إلى الشخص.
3. أنشئ رابطًا لمرة واحدة للقيمة الجديدة: حذف بعد القراءة، وانتهاء الصلاحية بعد 1 ساعة، وعبارة مرور.
4. سلّم الرابط وعبارة المرور عبر قناتين مختلفتين.
5. تحقق من حدث العرض في سجل التدقيق. لم يُعرض قبل انتهاء الصلاحية؟ أبطله وأصدر غيره، ولا تُعد إرسال الرابط نفسه أبدًا.
6. تأكد من تعطيل بيانات الدخول القديمة في المصدر.

لكل تغيير رابطه الخاص. الروابط مستقلة عن بعضها عمدًا، وهذه ميزة في التسليم وليست ميزة في الإدارة، لذلك يبقى _جدول_ التغيير في مدير كلمات المرور أو دليل التشغيل، لا في أداة الروابط.

## الاستجابة للحوادث

أثناء الحادثة تحتاج كثيرًا إلى تغيير بيانات دخول وتوزيع الجديدة على بضعة مستجيبين بسرعة. لا تلصقها في قناة الحادثة: هذه القناة تُسجَّل لأجل مراجعة ما بعد الحادثة، وسيصل السر إلى الملف المُصدَّر وإلى مستند المراجعة وإلى كل نظام حفظ يأتي بعدهما.

- غيّر بيانات الدخول في النظام المصدر.
- أصدر رابطًا سريًا تنتهي صلاحيته بعد 30 دقيقة.
- ضع الرابط في القناة، وأرسل عبارة المرور برسالة خاصة.
- بعد الحادثة، تأكد من أن الرابط حُذف نهائيًا أو أُبطل.

وهكذا تحوي مراجعة ما بعد الحادثة عنوانًا معطلًا بدل كلمة مرور مسؤول صالحة، ويعطي سجل التدقيق من يراجع التسلسل الزمني سجلًا دقيقًا من نوع «أُعيد إصدار بيانات الدخول في الساعة 14:32، وقُرئت في 14:33» دون جهد إضافي.

ملاحظة عن معاينات الروابط: تجلب تطبيقات المحادثة العناوين الملصقة لعرض معاينات لها. والرابط السري المصمم جيدًا يصمد أمام ذلك، لأن جلب المعاينة طلب `GET` بينما الإظهار طلب `POST` صريح. انظر فاحصات الروابط والأسرار لمرة واحدة (https://uselinkpilot.com/ar/blog/link-scanners-and-one-time-secrets) للتفاصيل الكاملة. وإذا كنت تقيّم أداة، فاختبر هذا قبل الحادثة لا أثناءها.

## ماذا يخبرك سجل التدقيق؟

هل قُرئ السر، ومتى، ومن أين تقريبًا، وهل حاول أحد عبارة مرور خاطئة. لكل سر في LinkPilot سجل أحداث: created و viewed و failed_passphrase و burned و expired و revoked. يُسجَّل كل عرض مع وقته، والموقع الجغرافي التقريبي حين يتوفر، ومعرّف المتصفح (user agent)، وعنوان IP مُجزَّأ (SHA-256 مع ملح يتغير يوميًا، ولا يُخزَّن عنوان IP الأصلي أبدًا). وفي الواقع يعطيك ذلك ثلاث إجابات تستطيع السكربتات وأدلة التشغيل الاعتماد عليها:

- **تأكيد التسليم**: حدث viewed يعني أن التسليم جرى.
- **رصد الشذوذ**: سلسلة من أحداث failed_passphrase أو عرض لا تعرفه إشارة إلى أن تغيّر بيانات الدخول فورًا.
- **سجل نظيف للمراجعات**: «سُلّم مرة، وقُرئ مرة، وحُذف نهائيًا» جملة يحبها المدققون.

## الحدود: ما لا تحله الروابط

- **ليست خزنة.** لا شيء في الرابط لمرة واحدة يدير الوصول المستمر أو جداول التغيير أو قوائم من يملك ماذا.
- **الرابط هو المفتاح.** تشفر LinkPilot النصوص في متصفحك ولا تتسلم المفتاح أبدًا، لكن هذا المفتاح ينتقل في الجزء الذي يلي علامة # في الرابط، فمن يحصل على الرابط كاملًا يستطيع قراءة السر، وإذا ضاع الرابط فلا يمكن استرجاع السر. وتُشفَّر الملفات المرفقة بالطريقة نفسها، لكن أسماءها وأحجامها غير مشفرة. لذلك تبقى الصلاحية القصيرة مع الحذف بعد القراءة مهمة. _تحديث، 29 سبتمبر 2026: كان هذا البند يقول سابقًا «ليست مشفرة من طرف إلى طرف»، وكان ذلك صحيحًا حتى ذلك التاريخ._ التفاصيل في صفحة بنية الأمان (https://uselinkpilot.com/ar/security-architecture).
- **لا تعالج انتشار الأسرار في الشيفرة.** المفاتيح المكتوبة مباشرة في المستودعات تحتاج إلى فحص وتغيير، لا إلى وسيلة تسليم أفضل.
- **لا تحمي الطرف الآخر.** بعد أن يقرأ شخص القيمة، اعتبرها موجودة حيثما وضعها.

جرّبها مجانًا، بدون تسجيل

### مولّد روابط سرية لمرة واحدة

شارك كلمة مرور أو ملاحظة عبر رابط يُفتح مرة واحدة.

فتح الأداة (https://uselinkpilot.com/ar/tools/free-secret-link-generator)

## قراءات ذات صلة

- كيف تشارك مفاتيح API بأمان: https://uselinkpilot.com/ar/blog/how-to-share-api-keys-securely
- الروابط منتهية الصلاحية: لماذا تهم المدد القصيرة: https://uselinkpilot.com/ar/blog/expiring-links-security
- بنية الأمان في LinkPilot: https://uselinkpilot.com/ar/security-architecture

## المراجع

- GitHub Docs، Using secrets in GitHub Actions (https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions).
- Kubernetes، Secrets (https://kubernetes.io/docs/concepts/configuration/secret/).
- jq، Manual (https://jqlang.org/manual/).
- curl، Manual page, `-d, --data` (https://curl.se/docs/manpage.html#-d).

## أدوات لهذا المقال

مولّد روابط سرية لمرة واحدة

شارك كلمة مرور أو ملاحظة عبر رابط يُفتح مرة واحدة.
https://uselinkpilot.com/ar/tools/free-secret-link-generator

رسالة ذاتية التدمير

أرسل ملاحظة تختفي بعد قراءتها مرة واحدة.
https://uselinkpilot.com/ar/tools/burn-after-read-secret

مولّد روابط تنتهي صلاحيتها

أنشئ روابط تتوقف عن العمل في وقت تحدده.
https://uselinkpilot.com/ar/tools/temporary-link

## الأسئلة الشائعة

### هل أستطيع إنشاء روابط سرية من سكربت؟

### هل يصح أن تبقى الأسرار في متغيرات البيئة داخل CI؟

### كيف أتعامل مع تغيير بيانات الدخول في السكربتات؟

### ألن يظهر السر في سجل أوامر الطرفية أو في قائمة العمليات؟

### كيف أتأكد من أن المستلم تسلّم بيانات الدخول فعلًا؟

## يرسل LinkPilot رابطًا سريًا يختفي بعد فتحه.

يُشفَّر في متصفحك، ويظهر محتواه مرة واحدة، ثم يُحذف نهائيًا. بدون حساب.

إنشاء رابط سري (https://uselinkpilot.com/ar/tools/free-secret-link-generator)

## اقرأ أيضًا

الأمان

### الروابط السرية أم مدير كلمات المرور؟

يحفظ مدير كلمات المرور بيانات دخول يستخدمها الفريق مرارًا، ويسلّمها الرابط السري لشخص واحد مرة واحدة. تحتاج معظم الفرق إلى الاثنين لمهام مختلفة.
https://uselinkpilot.com/ar/blog/secret-links-vs-password-managers

الأمان

### أدوات فحص الروابط والروابط السرية لمرة واحدة

الرابط لمرة واحدة الذي يُحذف عند أول طلب GET يفقد قيمته حين يعاينه Slack أو بوابة البريد. أعد البيانات الوصفية عند GET واحذف السر عند الإظهار الصريح فقط.
https://uselinkpilot.com/ar/blog/link-scanners-and-one-time-secrets

الأمان

### طريقة مشاركة مفاتيح API بأمان

لا تلصق مفتاح API في محادثة أو بريد. أرسله في رابط سري لمرة واحدة يُشفَّر في متصفحك ويُحذف بعد فتحه، ودوّر أي مفتاح سبق أن لصقته.
https://uselinkpilot.com/ar/blog/how-to-share-api-keys-securely

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "الرئيسية",
        "item": "https://uselinkpilot.com/ar"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "المدونة",
        "item": "https://uselinkpilot.com/ar/blog"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "مشاركة الروابط بأمان للمطورين",
        "item": "https://uselinkpilot.com/ar/blog/secure-link-sharing-for-developers"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://uselinkpilot.com/ar/blog/secure-link-sharing-for-developers#article",
    "headline": "مشاركة الروابط بأمان للمطورين",
    "description": "دليل عملي لفرق الهندسة: متى تستخدم الروابط لمرة واحدة، وكيف تنشئها من السكربتات، وكيف تدمجها في استقبال الموظفين الجدد وفي CI.",
    "inLanguage": "ar",
    "datePublished": "2026-05-26",
    "dateModified": "2026-10-22",
    "image": "https://uselinkpilot.com/logo-512.png",
    "author": {
      "@type": "Person",
      "@id": "https://uselinkpilot.com/author/w-miller#person",
      "name": "W. Miller",
      "url": "https://uselinkpilot.com/ar/author/w-miller",
      "worksFor": {
        "@type": "Organization",
        "name": "LinkPilot",
        "url": "https://uselinkpilot.com"
      }
    },
    "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/ar/blog/secure-link-sharing-for-developers"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "هل أستطيع إنشاء روابط سرية من سكربت؟",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "نعم. توفر LinkPilot واجهة REST API (في كل الخطط، ومنها خطة Free)، فتستطيع إصدار الأسرار من سكربتات استقبال الموظفين أو مهام CI أو أدواتك الداخلية. يعيد كل طلب عنوان URL تستطيع تمريره إلى البريد الإلكتروني أو Slack أو الرسائل النصية."
        }
      },
      {
        "@type": "Question",
        "name": "هل يصح أن تبقى الأسرار في متغيرات البيئة داخل CI؟",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "نعم، فهذه لا تزال الأداة الصحيحة أثناء تشغيل CI. استخدم الروابط السرية للتسليم من شخص إلى شخص (حين تعطي المهندس بيانات الدخول الأولى ليضعها في خزنة CI)، لا للمسار من آلة إلى آلة."
        }
      },
      {
        "@type": "Question",
        "name": "كيف أتعامل مع تغيير بيانات الدخول في السكربتات؟",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "أنشئ بيانات دخول جديدة في النظام المصدر، وضعها في رابط لمرة واحدة، وأرسل الرابط، ودع المستلم يحفظها في مدير كلمات المرور أو خزنة CI لديه. لا تُعد استخدام الروابط بين عمليات التغيير، فلكل تغيير رابطه الخاص."
        }
      },
      {
        "@type": "Question",
        "name": "ألن يظهر السر في سجل أوامر الطرفية أو في قائمة العمليات؟",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "هذا هو الخطر الحقيقي في السكربتات المكتوبة على عجل: يرى المستخدمون المحليون الآخرون وسائط سطر الأوامر عبر ps ما دام الأمر يعمل، والطرفيات التفاعلية تكتب ملفات سجل الأوامر. مرّر المحتوى عبر stdin (curl -d @-)، واحفظ مفاتيح API في متغيرات البيئة، لا في خيارات سطر الأوامر أبدًا."
        }
      },
      {
        "@type": "Question",
        "name": "كيف أتأكد من أن المستلم تسلّم بيانات الدخول فعلًا؟",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "راجع سجل تدقيق السر. حدث viewed أو burned مع وقته يؤكد التسليم، والسر الذي تنتهي صلاحيته دون حدث عرض يعني أن التسليم فشل، فأبطله وأصدر غيره بدل التخمين."
        }
      }
    ],
    "inLanguage": "ar"
  },
  {
    "@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"
    }
  }
]
```