انتقل إلى المحتوى
prodid

دليل الناشر

انشر منتجاتك

النشر إلى prodid يعني وضع ملفين على الويب وسجل واحد في DNS. على نطاقك الخاص لا تسجيل ولا مفتاح تحفظه: النطاق نفسه هو بيانات الاعتماد، وتغيير الملفات يغيّر ما نشرته أو يسحبه.

كيف ستنشر؟

الطريقة 1

النشر على نطاقك الخاص

ملفان وسجل DNS واحد. المنصة التي تنشر نيابة عن التجار تفعل الشيء نفسه على نطاق كل تاجر، فيحتفظ كل تاجر بهويته ومستوى ثقته.

أُنجزت 0 من 4 خطوات
x
  1. قدّم مستند الاكتشاف

    ملف واحد في مسار ثابت يسرد أماكن موجزات منتجاتك: https://acme.example/.well-known/prodid.json

    .well-known/prodid.jsonapplication/json
    {
    	"$type": "org.prodid.feed",
    	"version": 1,
    	"publisher": { "name": "Acme Tekstil", "contact": "data@acme.example" },
    	"license": "CC0-1.0",
    	"feeds": ["https://acme.example/prodid/items.ndjson"]
    }
    المثال الموجود في spec/fixtures/v1/examples/prodid.json، معروضًا من ذلك الملف مباشرة.
  2. قدّم موجزك

    الموجز بصيغة NDJSON: كائن JSON كامل في كل سطر، بترميز UTF-8، مفصولًا بأسطر جديدة. لا مصفوفة حوله ولا فواصل بين الأسطر. بهذا يمكن قراءة موجز فيه مليونا منتج سطرًا سطرًا، والسطر المعطوب يُفقد ذلك السطر فقط لا ما بعده.

    prodid/items.ndjsonapplication/x-ndjson
    {"$type":"org.prodid.item","key":"TJ-2041-NVY-M","brand":"Acme","name":"Trail Jacket","lang":"en","group":"TJ-2041","variant":{"color":"navy","size":"M"},"identifiers":[{"scheme":"gtin","value":"09506000134352"},{"scheme":"mpn","value":"TJ-2041-NVY-M"}],"markets":["TR","DE"],"properties":{"material":"100% recycled polyester","madeIn":"TR","weight":{"value":480,"unit":"g"}},"media":[{"url":"https://acme.example/img/tj2041-navy.webp","license":"CC-BY-4.0","kind":"image"}]}
    {"$type":"org.prodid.item","key":"TJ-2041-NVY-L","brand":"Acme","name":"Trail Jacket","lang":"en","group":"TJ-2041","variant":{"color":"navy","size":"L"},"identifiers":[{"scheme":"gtin","value":"09506000134406"},{"scheme":"mpn","value":"TJ-2041-NVY-L"}],"markets":["TR","DE"],"properties":{"material":"100% recycled polyester","madeIn":"TR","weight":{"value":505,"unit":"g"}},"media":[{"url":"https://acme.example/img/tj2041-navy.webp","license":"CC-BY-4.0","kind":"image"}]}
    {"$type":"org.prodid.item","key":"TJ-2041-OLV-M","brand":"Acme","name":"Trail Jacket","lang":"en","group":"TJ-2041","variant":{"color":"olive","size":"M"},"identifiers":[{"scheme":"gtin","value":"09506000134413"},{"scheme":"mpn","value":"TJ-2041-OLV-M"}],"markets":["TR"],"properties":{"material":"100% recycled polyester","madeIn":"TR","weight":{"value":480,"unit":"g"}},"media":[{"url":"https://acme.example/img/tj2041-olive.webp","license":"CC-BY-4.0","kind":"image"}]}
    ثلاثة متغيّرات لمنتج واحد من spec/fixtures/v1/examples/items.ndjson. تشترك في group واحد، فيبني الفهرس منه عائلة واحدة بثلاثة متغيّرات.
  3. اطالب بهويتك في DNS

    بعد أن تصبح الملفات متاحة، انشر سجلًا يسمّي نطاقك نفسه مضيفًا.

    _prodid.acme.example TXT
    _prodid.acme.example. IN TXT "v=prodid0; host=acme.example"
  4. أخبر الفهرس بأن شيئًا تغيّر

    اختياري. كل نطاق معروف يُعاد جلبه وفق جدول؛ والـ ping لا يفعل سوى تقديم الجلب التالي.

    اطلب من الفهرس تشغيل الاكتشاف الآن
    curl -X POST https://prodid.org/ping \
      -H 'content-type: application/json' \
      -d '{"domain": "acme.example"}'
    
    HTTP/1.1 202 Accepted
    Content-Type: application/json
    
    {"status":"accepted"}

الطريقة 2

فوّض الاستضافة واحتفظ بهويتك

كثير من الشركات المصنّعة تملك نطاقًا لكنها لا تستطيع وضع ملفات عليه. الموجز مستضاف في مكان آخر والنطاق مُثبت عبر DNS، فتبقى هوية المصدر هي النطاق وتبقى الثقة verified. أنشئ الموقع على publish.prodid.org وأدخل نطاقك، فيعرض لك السجل الدقيق الذي تضيفه ويتحقق منه نيابة عنك.

كيف يبدو ذلك

أُنجزت 0 من 4 خطوات
x
  1. ارفع ملفاتك إلى دليل slug مستضاف

    ، مثل acme.prodid.org، الذي يقدّم مستند الاكتشاف والموجز معًا.

  2. سجل TXT على النطاق الذي تملكه

    يسمّي ذلك المضيف. مضيف لا عنوان URL، فلا يستطيع السجل أبدًا توجيه الزاحف إلى عنوان اعتباطي.

    _prodid.acme.example TXT
    _prodid.acme.example. IN TXT "v=prodid0; host=acme.prodid.org"
  3. مستند يشير إلى نطاقك.

    يقول DNS: «مستندي هناك»؛ ويقول المستند: «أنا أمثّل ذلك النطاق». المستند المفوَّض بلا domain يُرفض: الغياب لا يُعدّ موافقة أبدًا، وهذا ما يمنع أي أحد من توجيه سجل إلى موجز غيره.

    acme.prodid.org/.well-known/prodid.jsonapplication/json
    {
    	"$type": "org.prodid.feed",
    	"version": 1,
    	"domain": "acme.example",
    	"publisher": { "name": "Acme Tekstil", "contact": "data@acme.example" },
    	"license": "CC0-1.0",
    	"feeds": ["https://acme.prodid.org/feeds/items.ndjson"]
    }
    من spec/fixtures/v1/examples/prodid.delegated.json. الفرق الوحيد عن الطريقة 1 هو حقل domain، وهو هنا مطلوب.
  4. أنشئ موقعك

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

الطريقة 3

النشر دون نطاق

أُنجزت 0 من 1 خطوات
x
  1. أنشئ موقعك

    المنتج الذي لا يملك نطاقًا على الإطلاق ينشر باسمه على slug مستضاف <slug>.prodid.org. اطلبه على publish.prodid.org. هوية المصدر هي مضيف الـ slug، والثقة unverified لأنه لم يُثبت شيء عن أي نطاق. السجلات سجلات حقيقية: معرّفات وحلّ ونسبة إلى المصدر، كاملة.

تحقّق من نطاقك

انتهيت من النشر؟ أدخل نطاقك. يُطلب من الفهرس أن يفحصه الآن، وتنتقل إلى صفحة حالته الحيّة.

سيحدّث الزحف التالي الحالة خلال بضع دقائق.

افحص ملفاتك قبل الـ ping

يتحقق prodid-batch check من مستند الاكتشاف وكل موجز تمامًا كما يفعل الفهرس، دون رمز وصول ودون أن يسأل الفهرس عن شيء. يعمل من نسخة من المستودع باستخدام Bun 1.4.4. أعطه الملفات نفسها: المسار المنتهي بـ .json يُقرأ مستندًا واحدًا، وأي مسار آخر يُقرأ موجز NDJSON.

تحقّق مما تقدّمه كما يتحقق الفهرس
git clone https://github.com/productdevbook/prodid
cd prodid
bun install --frozen-lockfile
curl -fsSo prodid.json https://acme.example/.well-known/prodid.json
curl -fsSo items.ndjson https://acme.example/prodid/items.ndjson
bun apps/batch/src/cli.ts check prodid.json items.ndjson

prodid.json: ok, 1 record
items.ndjson: ok, 3 records

الملف السليم يطبع ok وعدد السجلات التي سيأخذها الفهرس منه. وإلا فيطبع سطرًا لكل مشكلة، بصيغة items.ndjson:12: message مع رقم سطر الموجز، وينتهي بحالة خروج غير صفرية. يقرأ الملفات، لا DNS ولا خادمك، فسجل TXT ونوع المحتوى وترويسات التخزين المؤقت في القائمة أعلاه تبقى عليك.

القواعد التي تُتحقق بها السجلات موجودة في المواصفة، والمخططات في /spec/schemas/v1، ومتجهات اختبار يقرؤها الحاسوب في /spec/fixtures/v1 لاختبار أداة التصدير لديك قبل أن يجلب أي أحد.

تُنشر المواصفة بالإنجليزية فقط، والنص الإنجليزي هو المرجع المُلزم.

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

مرجع

prodid مفتوح المصدر. ساعده على النمو.

ضع نجمة على المستودع ليجده الآخرون، أو أخبرنا بما هو خاطئ، أو أرسل إصلاحًا، أو راسلنا هنا دون حساب على GitHub.