วิธีออก Open Badges จาก CSV ในเวลาไม่ถึง 5 นาที
ทีละขั้นตอน: อัปโหลด CSV รายชื่อผู้รับ เลือกตราสัญลักษณ์ของคุณ แล้วกด Award หยุดชั่วคราวและทำต่อกลางชุดงานได้ ลองใหม่กับรายการที่ล้มเหลว ส่งออกผลลัพธ์ รองรับกลุ่ม 10 หรือ 10,000 คน
Nacho founded Badges Ninja to make issuing verifiable digital credentials as simple as a single API call — Open Badge v2.0 badges and certificates, minted, hosted, and verifiable without standing up your own issuer infrastructure.
หากคุณเคยออก credential ให้กลุ่มคนทีละคน คุณย่อมรู้ปัญหาดีอยู่แล้ว: วิธีนี้ขยายไม่ไหวเมื่อเกินราวสิบคน ก่อนจะกลายเป็นการนั่งคัดลอกและวางชื่อกับอีเมลกันทั้งบ่าย กลุ่ม bootcamp 40 คน รายชื่อผู้เข้าร่วมงานประชุม 500 คน หรือการอบรมพนักงานองค์กร 5,000 คน ล้วนต้องการสิ่งเดียวกัน นั่นคืออัปโหลดรายชื่อ เลือกตราสัญลักษณ์ คลิก Issue แล้วเดินจากไปได้เลย
นั่นคือสิ่งที่ Bulk Credentials บน https://badges.ninja ทำได้พอดี คู่มือนี้ครอบคลุมทั้งกระบวนการ: การเตรียม CSV ของคุณ การตั้งค่าชุดงาน การเฝ้าดูมันทำงาน และการจัดการกรณียุ่งเหยิงในโลกจริง เช่น แถวผู้รับที่พิมพ์ผิด ชุดงานที่ถูกขัดจังหวะกลางคัน หรือโปรแกรมที่ต้องการออกด้วยวิธีเดียวกันจากระบบของตัวเองแทนที่จะทำผ่านแดชบอร์ด
ก่อนเริ่ม: สิ่งที่คุณต้องมี
สองอย่าง ซึ่งคุณอาจมีอยู่แล้วทั้งคู่:
- ตราสัญลักษณ์หนึ่งอัน ออกแบบครั้งเดียวในเครื่องมือออกแบบเชิงภาพ แล้วนำกลับมาใช้ซ้ำกับผู้รับทุกคนในชุดงาน หากคุณยังไม่ได้สร้างสักอัน โปรดดูคู่มือของเราเรื่อง การออกแบบใบรับรองที่ตรวจสอบได้อันแรกของคุณ
- CSV รายชื่อผู้รับหนึ่งไฟล์ ประกอบด้วยชื่อ อีเมล และ (ถ้าต้องการ) วันที่ออก แค่นี้คือสคีมาทั้งหมด
คุณไม่จำเป็นต้องมีบัญชีผู้ออกแยกต่อผู้รับหนึ่งคน ไม่ต้องมีเมลเซิร์ฟเวอร์ และไม่ต้องเขียนโค้ดใดๆ ทุกอย่างในส่วนนี้เกิดขึ้นในแดชบอร์ด
ขั้นตอนที่ 1: เตรียม CSV ของคุณ
รูปแบบรายชื่อผู้รับถูกออกแบบให้เรียบง่ายที่สุดโดยตั้งใจ:
name,email,issued_on
Maria Gonzalez,maria@example.com,2026-07-01
David Kim,david@example.com,2026-07-01
Priya Patel,priya@example.com,
- name จำเป็น เติมลงในช่องผู้รับบน assertion และบนใบรับรอง
- email จำเป็น จะกลายเป็นตัวตนของผู้รับบน assertion ของ Open Badge v2.0 โดยถูกแฮชด้วย salt เฉพาะของแต่ละ credential ก่อนจัดเก็บ และไม่เคยถูกเก็บเป็นข้อความธรรมดา
- issued_on ถ้าต้องการ ปล่อยว่างไว้แล้วชุดงานจะใช้ช่วงเวลาที่ประมวลผลแต่ละแถว หรือกำหนดอย่างชัดเจนหากคุณกำลังย้อนบันทึกกลุ่มที่จริงๆ แล้วเรียนจบไปเมื่อเดือนที่แล้ว
เจ้าของโปรแกรมส่วนใหญ่ส่งออกข้อมูลนี้ตรงจากที่ที่พวกเขาติดตามการเรียนจบอยู่แล้ว ไม่ว่าจะเป็น Airtable, Google Sheets สเปรดชีตที่ผู้สอนส่งมอบมา หรือ CSV ที่ดึงจากสมุดคะแนนของ LMS ไม่ต้องมีเครื่องมือส่งออกพิเศษใดๆ CSV ใดก็ตามที่มีสามคอลัมน์นั้นก็ใช้ได้
กับดัก CSV ที่พบบ่อย (และวิธีที่ตัวอย่างช่วยดักจับ)
ปัญหาไม่กี่อย่างโผล่ขึ้นมาตลอดในรายชื่อผู้รับจากโลกจริง มักเป็นเพราะ CSV ถูกประกอบขึ้นจากการรวมชีตต้นทางสองหรือสามชีต:
- ช่องว่างท้ายที่อยู่อีเมล การคัดลอกและวางจากรายชื่อ PDF หรือการส่งออกจาก Google Form มักติดช่องว่างที่มองไม่เห็นมาด้วย มันดูปกติในเซลล์สเปรดชีตแต่จะไม่ผ่านการตรวจสอบอีเมลตอนอัปโหลด
- แถวซ้ำ ผู้รับคนเดียวกันปรากฏสองครั้งเพราะรายชื่อกลุ่มกับรายชื่อผู้ลงทะเบียนล่าช้าถูกต่อเข้าด้วยกันโดยไม่ได้ลบข้อมูลซ้ำ
- รูปแบบวันที่ไม่สอดคล้องกัน คอลัมน์หนึ่งเป็น
2026-07-01ปนกับ07/01/2026จากการส่งออกอีกชุด ยึดตาม ISO 8601 (YYYY-MM-DD) แล้วปัญหานี้จะหายไปโดยสิ้นเชิง - ตัวพิมพ์ใหญ่เล็กของหัวคอลัมน์ไม่ตรงกัน
EmailกับemailกับE-mailตัวแยกวิเคราะห์ผ่อนปรนกับรูปแบบทั่วไปหลายแบบ แต่ชื่อหัวคอลัมน์ที่กำหนดเองแบบเบ็ดเสร็จจะไม่ถูกจับคู่โดยอัตโนมัติ
ไม่มีปัญหาใดในนี้ที่ร้ายแรงถึงขั้นแก้ไม่ได้ ขั้นตอนตัวอย่าง (ด้านล่าง) นำแต่ละปัญหาขึ้นมาให้เห็นก่อนที่จะออกอะไรก็ตาม ดังนั้นการแก้ไขจึงเป็นแบบ “แก้สเปรดชีต แล้วอัปโหลดใหม่” แทนที่จะเป็น “มานั่งหาว่าใครในบรรดาผู้รับ 3,000 คนได้ตราสัญลักษณ์ที่เสีย”
ขั้นตอนที่ 2: ตั้งค่าชุดงาน
จากแดชบอร์ด เปิด Credentials → Bulk Credentials แล้วเลือกตราสัญลักษณ์ที่คุณกำลังจะออก นี่คือขั้นตอนที่คุณกำหนดทุกอย่างที่ใช้กับทั้งชุดงาน ได้แก่ ตัวตราสัญลักษณ์เอง วันที่ออกร่วมกันหากคุณไม่ได้ใส่วันที่รายแถวใน CSV และ (หากโปรไฟล์ผู้ออกของคุณมี) รหัสองค์กร LinkedIn ที่จะให้ผู้รับทุกคนเพิ่ม credential ลงในโปรไฟล์ของตนได้ในคลิกเดียว

นี่เป็นจังหวะที่ดีในการตรวจสอบอีกครั้งว่าตราสัญลักษณ์ที่คุณเลือกคือเวอร์ชันสุดท้ายจริง เพราะผู้รับจะเห็นภาพและเกณฑ์ที่แนบอยู่ ณ ขณะที่คุณออก ไม่ใช่สิ่งที่คุณอัปเดตในภายหลัง
ขั้นตอนที่ 3: อัปโหลดและดูตัวอย่าง
วาง CSV ของคุณลงไป แล้วแพลตฟอร์มจะแยกวิเคราะห์มัน แสดงตารางตัวอย่างให้คุณดู และทำเครื่องหมายทุกสิ่งที่มันประมวลผลไม่ได้ ไม่ว่าจะเป็นอีเมลที่ขาดหาย วันที่รูปแบบผิดเพี้ยน หรือแถวซ้ำ ไม่มีอะไรถูกออกจนกว่าคุณจะยืนยันตัวอย่าง

ขั้นตอนตัวอย่างนี้สำคัญกว่าที่เห็น การพิมพ์ผิดในแถวเดียวของ CSV ที่มี 2,000 แถวนั้นมองด้วยตาเปล่าแล้วพลาดได้ง่าย และการดักจับมันก่อนที่ 1,999 แถวที่ถูกต้องจะถูกออกไปแล้ว ย่อมถูกกว่ามากเมื่อเทียบกับการมาพยายามแก้ย้อนหลัง แก้แถวที่ถูกทำเครื่องหมายในสเปรดชีตของคุณ อัปโหลดใหม่ แล้วตัวอย่างจะอัปเดต
ขั้นตอนที่ 4: รันชุดงาน
กด Issue แล้วชุดงานจะเริ่มประมวลผล แถบความคืบหน้าจะติดตามแถวที่เสร็จเทียบกับแถวที่เหลือ และชุดงานทำงานฝั่งเซิร์ฟเวอร์ คุณไม่จำเป็นต้องเปิดแท็บทิ้งไว้ และการปิดแล็ปท็อปกลางชุดงานก็ไม่ทำให้ตำแหน่งของคุณหายไป
ส่วนสุดท้ายนี้ควรพูดให้ชัด เพราะมันคือรายละเอียดที่สำคัญจริงๆ สำหรับกลุ่มขนาดใหญ่: สถานะของชุดงานอยู่บนเซิร์ฟเวอร์ ไม่ใช่ในเบราว์เซอร์ของคุณ หากการเชื่อมต่อของคุณหลุด แล็ปท็อปของคุณเข้าโหมดหลับ หรือคุณแค่ปิดแท็บเพราะมีประชุมเริ่มขึ้น ชุดงานก็ยังทำงานต่อไป (หรือทำต่อจากตรงที่หยุดไว้พอดีหากคุณหยุดชั่วคราวไว้) แทนที่จะเริ่มใหม่จากศูนย์ สำหรับกลุ่ม bootcamp 40 คน นี่เป็นสิ่งที่มีก็ดี แต่สำหรับการปล่อยใช้งานระดับองค์กร 5,000 แถว มันคือความต่างระหว่าง “มันทำงานได้เอง” กับ “ต้องมีใครสักคนมานั่งเฝ้าแท็บเบราว์เซอร์ยี่สิบนาที”
คุณยังสามารถหยุดชุดงานที่กำลังรันโดยตั้งใจได้ด้วย สมมติว่ามีคนแจ้งว่าข้อความเกณฑ์ของตราสัญลักษณ์ต้องปรับกลางการรัน 3,000 แถว ก็แก้ปัญหา แล้วทำต่อโดยไม่ต้องออกซ้ำแถวที่เสร็จไปแล้ว
ขั้นตอนที่ 5: จัดการความล้มเหลว
รายชื่อผู้รับจริงย่อมมีแถวที่ไม่ดี เช่น โดเมนอีเมลที่พิมพ์ผิด ช่องชื่อที่จริงๆ แล้วว่างเปล่า หรือรายการซ้ำจากการรวมชีตที่ส่งออกมาสองชุด เมื่อแถวหนึ่งล้มเหลว ชุดงานจะไม่หยุด มันประมวลผลส่วนที่เหลือต่อไปและทำเครื่องหมายความล้มเหลวไว้ให้ตรวจสอบภายหลัง คุณจะได้ไฟล์ส่งออกผลลัพธ์ที่แสดงชัดเจนว่าแถวใดสำเร็จและแถวใดไม่สำเร็จ คุณจึงแก้เฉพาะแถวที่ล้มเหลวและรันชุดงานติดตามผลเล็กๆ อีกครั้งได้ แทนที่จะต้องตรวจทั้งรายชื่อใหม่ทั้งหมด
เรื่องนี้สำคัญต่อนิสัยการส่งออก CSV ที่พบได้ทั่วไปอยู่แล้วบน แดชบอร์ด credential คุณสามารถดึง CSV ของสิ่งที่ถูกออกจริงได้ทุกเมื่อ นำไปเทียบกับรายชื่อต้นทางของคุณ และรู้ได้อย่างแม่นยำว่าใครยังต้องได้ตราสัญลักษณ์
เส้นทาง API: กระบวนการเดียวกัน ไม่ต้องใช้แดชบอร์ด
ทุกอย่างข้างต้นตั้งอยู่บนสมมติฐานว่ามีคนนั่งอยู่ที่แดชบอร์ดคลิกไล่ตามตัวช่วยสร้าง หากการเรียนจบของคุณอยู่ในระบบใดระบบหนึ่งอยู่แล้ว เช่น LMS, CRM หรือระบบอัตโนมัติของสเปรดชีต คุณสามารถขับเคลื่อนกระบวนการออก credential แบบกลุ่มเดียวกันได้โดยตรงจาก Awards API
การเรียกออกขั้นต่ำต่อผู้รับหนึ่งคนมีหน้าตาแบบนี้:
curl -X POST https://api.badges.ninja/awards \
-H "X-Api-Key: bws_1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d" \
-H "Content-Type: application/json" \
-d '{
"badgeId": "badge_9f8e7d6c5b4a",
"recipient": {
"name": "Maria Gonzalez",
"email": "maria@example.com"
},
"issuedOn": "2026-07-01T00:00:00Z"
}'
หรือใน Python โดยวนซ้ำผ่านแถวที่อ่านจาก CSV ไฟล์เดียวกับที่คุณจะอัปโหลดด้วยมือ:
import csv
import requests
API_KEY = "bws_1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d"
BADGE_ID = "badge_9f8e7d6c5b4a"
with open("recipients.csv") as f:
for row in csv.DictReader(f):
requests.post(
"https://api.badges.ninja/awards",
headers={"X-Api-Key": API_KEY},
json={
"badgeId": BADGE_ID,
"recipient": {"name": row["name"], "email": row["email"]},
"issuedOn": row.get("issued_on") or None,
},
)
วิธีนี้คุ้มค่าที่จะหันไปใช้เมื่อการออก credential ถูกกระตุ้นด้วยสิ่งอื่นโดยสิ้นเชิง เช่น webhook การเรียนจบคอร์ส การเปลี่ยนสถานะใน CRM หรือการส่งฟอร์ม แทนที่จะเป็นคนที่ส่งออก CSV ด้วยมือ เราอธิบายการยืนยันตัวตนและรูปแบบคำขอ/การตอบกลับฉบับเต็มไว้ใน คู่มือเริ่มต้นใช้งาน API อย่างรวดเร็ว ทุก credential ที่สร้างด้วยวิธีนี้เหมือนกับที่สร้างผ่านตัวช่วยสร้างของแดชบอร์ดทุกประการ ทั้ง assertion ของ Open Badge v2.0 เดียวกัน URL ตรวจสอบเดียวกัน และใบรับรอง PDF เดียวกัน
ตัวช่วยสร้างบนแดชบอร์ด กับ API: จริงๆ แล้วคุณต้องการแบบไหน
| Dashboard Bulk Credentials | Awards API | |
|---|---|---|
| เหมาะที่สุดสำหรับ | ชุดงานครั้งเดียวหรือเป็นครั้งคราว (การจบหลักสูตรของกลุ่ม การเข้าร่วมงานประชุม) | ตัวกระตุ้นที่เกิดซ้ำ (ทุกการเรียนจบคอร์ส ทุกการซื้อ) |
| ความพยายามในการตั้งค่า | ไม่มี ส่งออก CSV แล้วอัปโหลด | งานผสานรวมครั้งเดียว (webhook หรือสคริปต์) |
| ใครเป็นคนรัน | เจ้าของโปรแกรม ไม่ต้องเขียนโค้ด | ใครก็ตามที่เป็นเจ้าของระบบที่กระตุ้น |
| การจัดการความล้มเหลว | ตัวอย่าง + การส่งออกผลลัพธ์รายแถว | สถานะ HTTP ต่อคำขอ จัดการในลอจิกลองใหม่ของคุณเอง |
ทีมส่วนใหญ่เริ่มด้วยตัวช่วยสร้างบนแดชบอร์ดเพราะมันไม่ต้องการอะไรมากไปกว่า CSV และจะย้ายไปใช้ API ก็ต่อเมื่อชุดงานเดียวกันถูกรันด้วยมือมาแล้วสามสี่ครั้งและรูปแบบนั้นคุ้มค่าต่อการทำให้เป็นอัตโนมัติอย่างชัดเจน
ความเป็นส่วนตัว: อะไรที่ถูกจัดเก็บจริงๆ
CSV ของชื่อและอีเมลคือข้อมูลส่วนบุคคล และควรรู้ว่ามันเกิดอะไรขึ้นหลังการอัปโหลด ที่อยู่อีเมลของผู้รับไม่เคยถูกจัดเก็บเป็นข้อความธรรมดาบนตัว credential เลย มันถูกแฮชด้วย salt เฉพาะของแต่ละ credential ในฐานะส่วนหนึ่งของ assertion ของ Open Badge v2.0 โดยเป็นไปตามรูปแบบตัวตนผู้รับ hashed ของข้อกำหนด ค่าแฮชนั้นแหละคือสิ่งที่ผู้ตรวจสอบนำไปตรวจ ไม่ใช่ที่อยู่ดิบ ส่วนช่องชื่อจะถูกจัดเก็บตามที่กรอกเข้ามา เพราะตั้งใจให้มองเห็นได้บนใบรับรองและหน้าตรวจสอบ หากแถวใดต้องแก้ไขหลังการออก ซึ่งที่พบบ่อยที่สุดคือชื่อที่สะกดผิด คุณสามารถแก้ไขหรือเพิกถอน credential รายอันนั้นได้จาก แดชบอร์ด credential โดยไม่ต้องแตะส่วนที่เหลือของชุดงาน
หลังชุดงาน: แจ้งผู้รับ
การออกตราสัญลักษณ์กับการบอกผู้รับให้ทราบเป็นสองขั้นตอนที่ต่างกัน หาก CSV ของคุณยังไม่ได้กระตุ้นอีเมลผ่านระบบของคุณเอง กระบวนการแชร์แบบกลุ่มของแดชบอร์ดจะให้คุณเลือกหลาย credential ที่คุณเพิ่งสร้างและส่งอีเมลแชร์ที่ปรับให้เป็นส่วนตัวไปยังทั้งหมดในครั้งเดียว โปรดดู การส่งอีเมลแชร์แบบกลุ่ม สำหรับคู่มือฉบับเต็ม รวมถึงวิธีที่การปรับให้เป็นส่วนตัวรายผู้รับ (ชื่อ ภาพตราสัญลักษณ์ ลิงก์ตรวจสอบ) ถูกแทนที่โดยอัตโนมัติ
เมื่อไรที่ Bulk Credentials คือเครื่องมือที่เหมาะสม
การออกแบบกลุ่มเป็นทางเลือกที่ถูกต้องเมื่อกรอบคิดแบบ “ชุดงาน” เข้ากับโลกจริง เช่น กลุ่มที่เรียนจบในวันเดียวกัน งานประชุมที่เพิ่งจบไป หรือการอบรมที่กำลังจะถึงกำหนดเส้นตายด้านการปฏิบัติตามข้อกำหนด แต่หากคุณกำลังออก credential แบบครั้งคราวตามที่แต่ละหมุดหมายถูกบรรลุ เช่น การเลื่อนตำแหน่งครั้งเดียว การจบโครงการหนึ่งโครงการ ฟอร์ม credential เดี่ยว จะเร็วกว่าการมานั่งประกอบ CSV แถวเดียว
สำหรับอะไรก็ตามที่เกิดซ้ำ เช่น คอร์สเดียวกันที่จัดทุกเดือน หรือกระบวนการ onboarding ที่ทยอยเข้ามาเรื่อยๆ เส้นทาง API ข้างต้นคุ้มค่าที่จะตั้งค่าเพียงครั้งเดียว มันเปลี่ยน “รัน bulk credentials ด้วยมือทุกกลุ่ม” ให้กลายเป็น “การเรียนจบออก credential ให้โดยอัตโนมัติอยู่แล้ว” ซึ่งเป็นเวอร์ชันของเวิร์กโฟลว์นี้ที่เจ้าของโปรแกรมส่วนใหญ่ต้องการจริงๆ หลังจากชุดงานที่ทำด้วยมือครั้งที่สองหรือสาม
พร้อมออก credential ที่ตรวจสอบได้อันแรกของคุณแล้วหรือยัง เริ่มใช้ฟรีที่ badges.ninja ทั้งเครื่องมือออกแบบเชิงภาพ หน้าตรวจสอบสาธารณะ ใบรับรอง PDF และเอาต์พุต Open Badge v2.0 ไม่ต้องใช้บัตรเครดิต
บทความนี้จัดทำขึ้นอย่างไร
บางบทความในบล็อกนี้ร่างขึ้นด้วยความช่วยเหลือของผู้ช่วย AI จากนั้นทีมงาน Badges Ninja จะตรวจสอบ ยืนยันข้อเท็จจริง และแก้ไขก่อนเผยแพร่ ตัวอย่างโค้ดและราคาทุกรายการได้รับการตรวจสอบกับผลิตภัณฑ์จริง อ่านเพิ่มเติมเกี่ยวกับกระบวนการด้านบรรณาธิการและ AI ของเราได้ที่ หน้ากระบวนการด้านบรรณาธิการ .

เกี่ยวกับผู้เขียน
Nacho Coll
Founder & Engineer at Badges Ninja
Nacho founded Badges Ninja to make issuing verifiable digital credentials as simple as a single API call — Open Badge v2.0 badges and certificates, minted, hosted, and verifiable without standing up your own issuer infrastructure. Writes about the Open Badges spec, credential verification, and running a credentialing platform serverless on AWS, from the operator side of the wire.


