ข้ามไปยังเนื้อหาหลัก

ติดตั้งใช้งานออฟไลน์

กลุ่มผู้อ่านเป้าหมาย: ผู้ดูแลระบบไอที (IT administrator) หรือผู้รับผิดชอบด้านเทคนิคที่ดูแลการติดตั้ง ส่วนผู้ใช้งานทั่วไปเพียงเปิด URL อินทราเน็ตที่ผู้ดูแลระบบจัดเตรียมไว้ก็พอ ไม่จำเป็นต้องอ่านเอกสารฉบับนี้

สถานการณ์ที่เหมาะสม: อินทราเน็ตขององค์กร เครือข่ายของหน่วยงานราชการ ระบบของธนาคารและสถาบันการเงิน สภาพแวดล้อมที่ต้องปฏิบัติตาม PDPA หรือกฎหมายคุ้มครองข้อมูลส่วนบุคคล สถานพยาบาลที่ดูแลข้อมูลผู้ป่วย เครือข่ายสถานศึกษา รวมถึงสภาพแวดล้อมอื่น ๆ ที่ ไม่สามารถหรือไม่สะดวกในการเข้าถึงอินเทอร์เน็ตภายนอก

ไม่มีแบ็กเอนด์ ไม่ต้องลงทะเบียน — ข้อมูลทั้งหมดเก็บไว้ในเบราว์เซอร์ของผู้ใช้แต่ละคน เมื่อติดตั้งเสร็จ ทีมงานในอินทราเน็ตเพียงเปิดเบราว์เซอร์ก็ใช้งานได้ทันที

วิธีการใช้งานของทีม

เวอร์ชันออฟไลน์เป็นเว็บไซต์แบบ static ล้วน เมื่อติดตั้งบนเซิร์ฟเวอร์อินทราเน็ตแล้ว สมาชิกในทีมเข้าถึง URL อินทราเน็ตผ่านเบราว์เซอร์ได้ทันที:

  1. ผู้ดูแลระบบ ติดตั้งเวอร์ชันออฟไลน์ลงบนเซิร์ฟเวอร์อินทราเน็ต (เช่น http://192.168.1.100:3000)
  2. สมาชิกในทีม เปิด URL ดังกล่าวบนเบราว์เซอร์ เพื่อเรียกดู ค้นหา และคัดลอก prompt ได้ทันที
  3. คอลเลกชันและ prompt ที่กำหนดเองของแต่ละคน เก็บไว้ในเบราว์เซอร์ของตนเอง แยกจากกันโดยสิ้นเชิง
  4. ไม่ต้องลงทะเบียนบัญชี ไม่ต้องติดตั้งซอฟต์แวร์ใด ๆ เปิดแล้วใช้ได้เลย

สถาปัตยกรรมข้อมูลของเวอร์ชันออฟไลน์: เซิร์ฟเวอร์อินทราเน็ตเครื่องเดียวให้บริการคลัง prompt ที่ใช้ร่วมกันแบบอ่านอย่างเดียว ส่วนคอลเลกชัน, prompt, ลำดับ และแท็กของผู้ใช้แต่ละคนเก็บไว้ใน localStorage ของเบราว์เซอร์ตนเอง แยกจากกันโดยอิสระ ไม่ต้องมีบัญชี

คำแนะนำ

คลัง prompt (prompt ที่คัดสรร) เป็นข้อมูล static ที่ถูก bundle ตอนสร้าง build ดังนั้นผู้ใช้ทุกคนจะเห็นเนื้อหาเหมือนกัน ส่วนคอลเลกชัน, prompt ที่กำหนดเอง, การเรียงลำดับ และแท็กของผู้ใช้แต่ละคน จะเก็บไว้ใน localStorage ของเบราว์เซอร์ตนเอง แยกจากกันโดยอิสระ

ความแตกต่างกับเวอร์ชันออนไลน์

ฟังก์ชันเวอร์ชันออนไลน์เวอร์ชันออฟไลน์
เรียกดู / ค้นหา / กรอง promptใช่ใช่
คัดลอก promptใช่ใช่
จัดการคอลเลกชันเก็บที่เซิร์ฟเวอร์เก็บที่เบราว์เซอร์
Prompt ที่กำหนดเองเก็บที่เซิร์ฟเวอร์เก็บที่เบราว์เซอร์
คอลเลกชันของฉัน (ลากวางจัดเรียง, แท็ก)ใช่ใช่
รองรับหลายภาษา (18 ภาษา)ใช่ใช่
นำเข้า / ส่งออกข้อมูลใช่ใช่ (รูปแบบใช้ร่วมกันได้)
หน้ารายละเอียด promptใช่ใช่ (ข้อมูล static, ไม่มีคอมเมนต์)
ลงทะเบียน / เข้าสู่ระบบใช่ไม่ (ไม่ต้องมีบัญชี)
รายการ prompt ชุมชน / โหวตใช่ไม่
คอมเมนต์และความคิดเห็นใช่ไม่

การจัดเก็บข้อมูล

ข้อมูลของผู้ใช้แต่ละคนถูกเก็บไว้ใน localStorage ของ เบราว์เซอร์ตนเอง โดยไม่เกี่ยวข้องกับเซิร์ฟเวอร์:

ข้อมูลคีย์ที่เก็บคำอธิบาย
รายการคอลเลกชันlocal_favoritesอาร์เรย์ของ ID prompt ที่รวบรวมไว้
Prompt ที่กำหนดเองlocal_user_promptsข้อมูล prompt ที่ผู้ใช้สร้างขึ้น
ลำดับการแสดงผลlocal_myspace_orderลำดับการ์ดในคอลเลกชันของฉัน
แท็กที่กำหนดเองlocal_custom_tagsคำจำกัดความและการกำหนดแท็ก
ข้อควรระวัง
  • พื้นที่จัดเก็บของเบราว์เซอร์มีขีดจำกัดประมาณ 5MB ซึ่งเพียงพอต่อการใช้งานทั่วไป
  • การล้างข้อมูลเบราว์เซอร์จะทำให้ข้อมูลส่วนตัวสูญหาย — แนะนำให้สำรองข้อมูลเป็นประจำผ่าน "บัญชีของฉัน → การจัดการข้อมูล → ส่งออก"
  • เมื่อเปลี่ยนเครื่องคอมพิวเตอร์หรือเบราว์เซอร์ ต้องนำเข้าข้อมูลใหม่

การติดตั้ง

เวอร์ชันออฟไลน์อยู่บน branch ที่ชื่อ offline หลังจากผู้ดูแลระบบติดตั้งเรียบร้อยแล้วครั้งเดียว สมาชิกในทีมก็ใช้งานได้โดยไม่ต้องดำเนินการอะไรเพิ่มเติม

ติดตั้งด้วย Docker (แนะนำ)

วิธีติดตั้งที่ง่ายที่สุด เพียงคำสั่งบรรทัดเดียวก็รันบนเซิร์ฟเวอร์อินทราเน็ตได้:

# ใช้ image เวอร์ชันออฟไลน์ที่สร้างไว้แล้ว
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

สร้างจาก source code

หากต้องการปรับแต่งเนื้อหา prompt หรือแก้ไขการตั้งค่า:

# Clone branch ออฟไลน์
git clone -b offline https://github.com/rockbenben/ChatGPT-Shortcut.git
cd ChatGPT-Shortcut

# ติดตั้ง dependencies
yarn

# พัฒนาในเครื่อง
yarn start

# Build เฉพาะภาษาเดียว (ภาษาไทย)
yarn build --locale th

# Build ทุกภาษา
yarn build

ผลลัพธ์จากการ build จะอยู่ในไดเรกทอรี build/ และสามารถนำไปติดตั้งบน static file server ใดก็ได้ (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 หรือแพลตฟอร์มอื่นที่คล้ายกัน เพียงเลือก branch offline ส่วนขั้นตอนอื่น ๆ เหมือนกับเวอร์ชันออนไลน์ ดูรายละเอียดเพิ่มเติมที่ การติดตั้งโปรเจกต์

นำเข้าและส่งออกข้อมูล

ส่งออก

ไปที่ "บัญชีของฉัน → การจัดการข้อมูล → ส่งออก" เพื่อบันทึกคอลเลกชันส่วนตัวและ prompt ที่กำหนดเองเป็นไฟล์ JSON

นำเข้า

รองรับการนำเข้าไฟล์ JSON รูปแบบดังต่อไปนี้:

  • ไฟล์ที่ส่งออกจากเวอร์ชันออฟไลน์: กู้คืนคอลเลกชัน, prompt, ลำดับ และแท็กได้ครบถ้วน
  • ไฟล์ที่ส่งออกจากเวอร์ชันออนไลน์: ระบบจะประมวลผลให้เข้ากันได้โดยอัตโนมัติ
    • Prompt ของผู้ใช้ → รวมเข้ากับข้อมูลในเครื่อง (ตัดซ้ำตามชื่อเรื่อง)
    • คอลเลกชันที่คัดสรร (card) → รวมเข้ากับคอลเลกชันในเครื่อง
    • คอลเลกชันชุมชน (community) → แปลงเป็น prompt ที่กำหนดเองในเครื่องโดยอัตโนมัติ
    • การเรียงลำดับ MySpace → กู้คืนในเครื่อง
    • แท็กที่กำหนดเอง → เพิ่มต่อท้าย (ไม่เขียนทับของเดิม)

ย้ายข้อมูลจากเวอร์ชันออนไลน์

  1. ส่งออกข้อมูลจากหน้า "บัญชีของฉัน" บนเวอร์ชันออนไลน์ (aishort.top)
  2. นำเข้าไฟล์ JSON ดังกล่าวจาก "บัญชีของฉัน → การจัดการข้อมูล → นำเข้า" บนเวอร์ชันออฟไลน์
  3. คอลเลกชันชุมชนจะถูกแปลงเป็น prompt ในเครื่องโดยอัตโนมัติ ส่วนคอลเลกชันที่คัดสรรจะซิงค์ตามปกติ

คำถามที่พบบ่อย

หลังติดตั้งแล้วทีมงานใช้งานอย่างไร?

หลังผู้ดูแลระบบติดตั้งบนเซิร์ฟเวอร์อินทราเน็ตเรียบร้อยแล้ว เพียงแจ้ง URL การเข้าใช้งาน (เช่น http://192.168.1.100:3000) ให้ทีมงานทราบ แต่ละคนเปิดผ่านเบราว์เซอร์ ไม่ต้องติดตั้งโปรแกรม ไม่ต้องลงทะเบียน

ข้อมูลของแต่ละคนจะกระทบกันหรือไม่?

ไม่กระทบกัน คอลเลกชันและ prompt ที่กำหนดเองของแต่ละคนเก็บไว้ใน localStorage ของเบราว์เซอร์ตนเอง แยกจากกันโดยสิ้นเชิง บนเซิร์ฟเวอร์มีเพียงคลัง prompt ที่ใช้ร่วมกัน (อ่านอย่างเดียว)

ข้อมูลจะสูญหายหรือไม่?

การกระทำต่อไปนี้จะทำให้ข้อมูลส่วนตัวสูญหาย:

  • ล้างข้อมูล/แคชของเบราว์เซอร์
  • ใช้โหมดส่วนตัว/ไม่ระบุตัวตน
  • เปลี่ยนเครื่องคอมพิวเตอร์หรือเบราว์เซอร์

แนะนำให้สำรองข้อมูลที่สำคัญเป็นประจำในรูปแบบไฟล์ JSON ผ่าน "บัญชีของฉัน → การจัดการข้อมูล → ส่งออก"

แชร์ prompt ที่กำหนดเองภายในทีมได้หรือไม่?

ทำได้ คนใดคนหนึ่งส่งออกเป็นไฟล์ JSON แล้วสมาชิกคนอื่นนำเข้าผ่าน "บัญชีของฉัน → การจัดการข้อมูล → นำเข้า" ก็ใช้ได้ ระบบจะตัดข้อมูลซ้ำให้อัตโนมัติ

อัปเดตคลัง prompt อย่างไร?

คลัง prompt เป็นข้อมูล static ที่ bundle ตอนสร้าง build วิธีอัปเดต:

  1. ผู้ดูแลระบบดึงโค้ดล่าสุดจาก branch offline
  2. Build และติดตั้งใหม่ (หรือดึง Docker image ล่าสุด)
  3. สมาชิกในทีมเพียงรีเฟรชเบราว์เซอร์ก็จะเห็นเนื้อหาใหม่ (ข้อมูลส่วนตัวไม่ได้รับผลกระทบ)

รูปแบบข้อมูลของเวอร์ชันออฟไลน์เข้ากันได้กับเวอร์ชันออนไลน์หรือไม่?

เข้ากันได้ รูปแบบ JSON ที่ส่งออกเหมือนกัน สามารถนำเข้าสองทิศทางระหว่างสองเวอร์ชันได้ ID ของ prompt จะแตกต่างกัน (เวอร์ชันออนไลน์ใช้ server-side ID ส่วนเวอร์ชันออฟไลน์ใช้ ID ที่อิงตาม timestamp) แต่การนำเข้าจะตัดข้อมูลซ้ำตามชื่อเรื่อง จึงไม่เกิดปัญหาขัดแย้งกัน