النسخة دون اتصال للنشر
الجمهور المستهدف: مسؤول تقنية المعلومات أو المسؤول التقني عن النشر. أما المستخدمون العاديون فيكفي أن يدخلوا إلى عنوان الشبكة الداخلية الذي نشره المسؤول، ولا حاجة لقراءة هذا الدليل.
سيناريوهات الاستخدام: الشبكات الداخلية للمؤسسات، الشبكات الحكومية، البيئات السرية والمصنفة، شبكات الجامعات، البنوك والمؤسسات المالية الخاضعة لمتطلبات صارمة لتوطين البيانات، شركات النفط والغاز، الجهات الدفاعية، وأي بيئة لا يمكن أو لا يُستحسن فيها الوصول إلى الإنترنت.
لا واجهة خلفية، ولا حاجة للتسجيل — كل البيانات تُحفظ محليًا في المتصفح. بعد النشر، يكفي أن يفتح أعضاء الفريق المتصفح في الشبكة الداخلية للاستخدام.
كيفية استخدام الفريق
النسخة دون اتصال هي موقع ثابت بالكامل (static). بعد نشرها على خادم الشبكة الداخلية، يصل إليها الأعضاء من المتصفح عبر العنوان الداخلي:
- المسؤول ينشر النسخة دون اتصال على خادم الشبكة الداخلية (مثل
http://192.168.1.100:3000) - أعضاء الفريق يفتحون هذا العنوان من المتصفح، ويمكنهم تصفح المطالبات والبحث فيها ونسخها
- مفضلات كل شخص ومطالباته الخاصة محفوظة في متصفحه، دون أن يؤثر أحدها على الآخر
- لا حاجة لتسجيل حساب، ولا لتثبيت أي برنامج — افتح واستخدم مباشرة
مكتبة المطالبات (المطالبات المختارة) هي بيانات ثابتة مُجمَّعة في وقت البناء (build time)، ويرى جميع المستخدمين نفس المحتوى. أما مفضلات كل مستخدم ومطالباته الخاصة والترتيب والعلامات، فتُحفظ في localStorage الخاص بمتصفحه، وكل واحدة مستقلة عن الأخرى.
الفرق عن النسخة عبر الإنترنت
| الوظيفة | النسخة عبر الإنترنت | النسخة دون اتصال |
|---|---|---|
| تصفح المطالبات والبحث والتصفية | ✅ | ✅ |
| نسخ المطالبات | ✅ | ✅ |
| إدارة المفضلة | تُحفظ على الخادم | تُحفظ محليًا في المتصفح |
| المطالبات المخصصة | تُحفظ على الخادم | تُحفظ محليًا في المتصفح |
| مجموعتي (فرز بالسحب، علامات) | ✅ | ✅ |
| دعم متعدد اللغات (18 لغة) | ✅ | ✅ |
| استيراد/تصدير البيانات | ✅ | ✅ (متوافق التنسيق) |
| صفحة تفاصيل المطالبة | ✅ | ✅ (بيانات ثابتة، بدون تعليقات) |
| تسجيل المستخدم/الدخول | ✅ | ❌ (لا حاجة لحساب) |
| قائمة مطالبات المجتمع/التصويت | ✅ | ❌ |
| التعليقات والملاحظات | ✅ | ❌ |
تخزين البيانات
بيانات كل مستخدم تُحفظ في localStorage الخاص بمتصفحه، ولا علاقة لها بالخادم:
| البيانات | مفتاح التخزين | الوصف |
|---|---|---|
| قائمة المفضلة | local_favorites | مصفوفة معرّفات المطالبات المفضّلة |
| المطالبات المخصصة | local_user_prompts | بيانات المطالبات التي أنشأها المستخدم |
| ترتيب العرض | local_myspace_order | ترتيب البطاقات داخل مجموعتي |
| العلامات المخصصة | local_custom_tags | تعريف العلامات وعلاقات إسنادها |
- سعة التخزين المحلي في المتصفح محدودة بنحو 5 ميغابايت، وهي كافية للاستخدام اليومي.
- مسح بيانات المتصفح يؤدي إلى فقدان البيانات الشخصية — يُوصى بعمل نسخ احتياطية دورية عبر «حسابي ← إدارة البيانات ← تصدير البيانات».
- عند تغيير الحاسوب أو المتصفح يلزم إعادة استيراد البيانات.
النشر
تعتمد النسخة دون اتصال على فرع offline. بعد أن يُكمل المسؤول النشر مرة واحدة، يستطيع أعضاء الفريق استخدامها دون أي إجراء إضافي.
النشر عبر Docker (موصى به)
أبسط طريقة للنشر، أمر واحد فقط لتشغيلها على خادم الشبكة الداخلية:
# استخدام صورة النسخة دون اتصال المُسبَقة البناء
docker run -d -p 3000:3000 --name aishort-offline ghcr.io/rockbenben/chatgpt-shortcut:offline
# أو استخدام Docker Hub
docker run -d -p 3000:3000 --name aishort-offline rockben/chatgpt-shortcut:offline
بعد النشر، يصل أعضاء الفريق إلى http://<عنوان IP للخادم>:3000 لاستخدامها.
باستخدام docker-compose:
services:
aishort-offline:
container_name: aishort-offline
image: ghcr.io/rockbenben/chatgpt-shortcut:offline
ports:
- "3000:3000"
restart: unless-stopped
البناء من الكود المصدري
إذا احتجت إلى تخصيص محتوى المطالبات أو تعديل الإعدادات:
# استنساخ فرع النسخة دون اتصال
git clone -b offline https://github.com/rockbenben/ChatGPT-Shortcut.git
cd ChatGPT-Shortcut
# تثبيت التبعيات
yarn
# التطوير المحلي
yarn start
# بناء نسخة بلغة واحدة (الصينية)
yarn build --locale zh-Hans
# بناء كل اللغات
yarn build
تكون مخرجات البناء في مجلد build/، ويمكن نشرها على أي خادم ملفات ثابتة (Nginx أو Apache أو Caddy وغيرها).
مثال لإعداد Nginx
server {
listen 3000;
server_name _;
root /path/to/build;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
النشر على المنصات
عند النشر على Vercel أو Cloudflare Pages وغيرها، يكفي اختيار فرع offline، وبقية الخطوات مطابقة للنسخة عبر الإنترنت — للتفاصيل راجع نشر المشروع.
استيراد البيانات وتصديرها
التصدير
ادخل إلى «حسابي ← إدارة البيانات ← تصدير البيانات»، وصدِّر مفضلاتك الشخصية ومطالباتك المخصصة إلى ملف JSON.
الاستيراد
يدعم استيراد ملفات JSON بالتنسيقات التالية:
- الملفات المُصدَّرة من النسخة دون اتصال: استعادة كاملة للمفضلات والمطالبات والترتيب والعلامات
- الملفات المُصدَّرة من النسخة عبر الإنترنت: تتم معالجتها تلقائيًا بشكل متوافق
- مطالبات المستخدم ← يتم دمجها محليًا (إزالة التكرار حسب العنوان)
- مفضلات المختارة (card) ← يتم دمجها مع المفضلة المحلية
- مفضلات المجتمع (community) ← تتحول تلقائيًا إلى مطالبات محلية مخصصة
- ترتيب MySpace ← يُستعاد محليًا
- العلامات المخصصة ← تُضاف بالدمج (دون استبدال الموجود)
الترحيل من النسخة عبر الإنترنت
- صدِّر البيانات من صفحة «حسابي» في النسخة عبر الإنترنت (aishort.top)
- استورد ملف JSON من «حسابي ← إدارة البيانات ← استيراد البيانات» في النسخة دون اتصال
- تتحول مفضلات المجتمع تلقائيًا إلى مطالبات محلية، وتُزامَن مفضلات المختارة بشكل طبيعي
الأسئلة الشائعة
كيف يستخدمها الفريق بعد النشر؟
بعد أن ينشرها المسؤول على خادم الشبكة الداخلية، يكفي إخبار أعضاء الفريق بعنوان الوصول (مثل http://192.168.1.100:3000). يفتحه كل واحد منهم في المتصفح — بدون تثبيت ولا تسجيل.
هل تتأثر بيانات الأشخاص ببعضها البعض؟
لا. مفضلات كل شخص ومطالباته الخاصة تُحفظ في localStorage الخاص بمتصفحه، وهي مستقلة تمامًا. أما الخادم فلا يحتوي إلا على مكتبة المطالبات المشتركة (للقراءة فقط).
هل يمكن أن تُفقد البيانات؟
العمليات التالية قد تؤدي إلى فقدان البيانات الشخصية:
- مسح بيانات المتصفح/ذاكرة التخزين المؤقت
- التصفح بوضع الخصوصية/التصفح المتخفي
- تغيير الحاسوب أو المتصفح
يُوصى بعمل نسخ احتياطية دورية للبيانات المهمة في ملف JSON عبر «حسابي ← إدارة البيانات ← تصدير البيانات».
هل يمكن مشاركة المطالبات المخصصة بين أعضاء الفريق؟
نعم. بعد أن يُصدِّر أحدهم ملف JSON، يستوردُه الآخرون من «حسابي ← إدارة البيانات ← استيراد البيانات»، ويتم إزالة التكرار تلقائيًا.
كيف أحدِّث مكتبة المطالبات؟
مكتبة المطالبات بيانات ثابتة مُجمَّعة في وقت البناء. طريقة التحديث:
- يجلب المسؤول أحدث كود من فرع
offline - يُعيد البناء والنشر (أو يسحب أحدث صورة Docker)
- يُنعش أعضاء الفريق المتصفح لرؤية المحتوى الجديد (دون تأثر بياناتهم الشخصية)
هل تنسيق بيانات النسخة دون اتصال متوافق مع النسخة عبر الإنترنت؟
نعم، متوافق. تنسيق JSON المُصدَّر واحد، ويمكن استيراده بين النسختين. تختلف معرّفات المطالبات (تستخدم النسخة عبر الإنترنت معرّفات الخادم، بينما تستخدم النسخة دون اتصال معرّفات زمنية)، لكن الاستيراد يُزيل التكرار حسب العنوان، فلا يحدث تعارض.