Πώς να εκδώσετε Open Badges από ένα CSV σε λιγότερο από 5 λεπτά

Βήμα προς βήμα: ανεβάστε ένα CSV με παραλήπτες, επιλέξτε το σήμα σας, πατήστε Έκδοση. Παύση και συνέχιση στη μέση της παρτίδας, επανάληψη αποτυχιών, εξαγωγή αποτελεσμάτων. Λειτουργεί για ομάδες των 10 ή των 10.000.

Nacho Coll Από Ενημερώθηκε 9 λεπτά ανάγνωσης
Βήμα προς βήμα: ανεβάστε ένα CSV με παραλήπτες, επιλέξτε το σήμα σας, πατήστε Έκδοση. Παύση και συνέχιση στη μέση της παρτίδας, επανάληψη αποτυχιών, εξαγωγή αποτελεσμάτων. Λειτουργεί για ομάδες των 10 ή των 10.000.

Αν έχετε ποτέ εκδώσει credentials σε μια ομάδα έναν παραλήπτη τη φορά, γνωρίζετε ήδη το πρόβλημα: δεν κλιμακώνεται πέρα από περίπου δέκα άτομα προτού μετατραπεί σε ένα ολόκληρο απόγευμα αντιγραφής και επικόλλησης ονομάτων και email. Μια ομάδα bootcamp 40 ατόμων, μια λίστα συμμετεχόντων συνεδρίου 500 ατόμων ή μια εταιρική εκπαίδευση 5.000 ατόμων χρειάζονται όλες το ίδιο πράγμα — ανεβάστε μια λίστα, επιλέξτε ένα σήμα, κάντε κλικ στο Έκδοση και απομακρυνθείτε.

Αυτό ακριβώς κάνει το Bulk Credentials στο https://badges.ninja. Αυτός ο οδηγός καλύπτει ολόκληρη τη ροή: την προετοιμασία του CSV σας, τη διαμόρφωση της παρτίδας, την παρακολούθηση της εκτέλεσής της και τη διαχείριση των μπερδεμένων πραγματικών περιπτώσεων — μια γραμμή παραλήπτη με τυπογραφικό λάθος, μια παρτίδα που διακόπτεται στα μισά, ή ένα πρόγραμμα που θέλει να εκδίδει με τον ίδιο τρόπο από τα δικά του συστήματα αντί από τον πίνακα ελέγχου.

Πριν ξεκινήσετε: Τι χρειάζεστε

Δύο πράγματα, τα οποία πιθανότατα έχετε ήδη:

  1. Ένα σήμα — σχεδιασμένο μία φορά στον οπτικό σχεδιαστή και επαναχρησιμοποιούμενο για κάθε παραλήπτη της παρτίδας. Αν δεν έχετε φτιάξει ακόμη ένα, δείτε τον οδηγό μας για τον σχεδιασμό του πρώτου σας επαληθεύσιμου πιστοποιητικού.
  2. Ένα CSV με παραλήπτες — όνομα, email και (προαιρετικά) μια ημερομηνία έκδοσης. Αυτό είναι όλο το σχήμα.

Δεν χρειάζεστε λογαριασμό εκδότη ανά παραλήπτη, διακομιστή αλληλογραφίας ή οποιονδήποτε κώδικα. Όλα σε αυτήν την ενότητα γίνονται στον πίνακα ελέγχου.

Βήμα 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 — κατακερματισμένο (hashed) με ένα salt ανά credential προτού αποθηκευτεί, ποτέ αποθηκευμένο σε απλό κείμενο.
  • issued_on — προαιρετικό. Αφήστε το κενό και η παρτίδα χρησιμοποιεί τη στιγμή που επεξεργάζεται κάθε γραμμή· ορίστε το ρητά αν συμπληρώνετε αναδρομικά μια ομάδα που στην πραγματικότητα ολοκλήρωσε τον προηγούμενο μήνα.

Οι περισσότεροι υπεύθυνοι προγραμμάτων το εξάγουν απευθείας από όπου κιόλας παρακολουθούν τις ολοκληρώσεις — Airtable, Google Sheets, ένα υπολογιστικό φύλλο που παρέδωσε ένας εκπαιδευτής, ή ένα CSV που τραβήχτηκε από το βαθμολόγιο ενός LMS. Δεν απαιτείται κάποιο ειδικό εργαλείο εξαγωγής· οποιοδήποτε CSV με αυτές τις τρεις στήλες λειτουργεί.

Συνηθισμένες παγίδες CSV (και πώς τις εντοπίζει η προεπισκόπηση)

Μια χούφτα προβλήματα εμφανίζονται συνεχώς σε πραγματικές λίστες παραληπτών, συνήθως επειδή το CSV συναρμολογήθηκε συγχωνεύοντας δύο ή τρία φύλλα προέλευσης:

  • Κενά στο τέλος των διευθύνσεων email — μια αντιγραφή-επικόλληση από μια λίστα PDF ή μια εξαγωγή Google Form συχνά κουβαλάει ένα αόρατο κενό. Φαίνεται εντάξει σε ένα κελί υπολογιστικού φύλλου αλλά αποτυγχάνει στην επικύρωση email κατά τη μεταφόρτωση.
  • Διπλότυπες γραμμές — ο ίδιος παραλήπτης να εμφανίζεται δύο φορές επειδή μια λίστα ομάδας και μια λίστα καθυστερημένων εγγραφών ενώθηκαν χωρίς αφαίρεση διπλοτύπων.
  • Ασυνεπείς μορφές ημερομηνίας — μια στήλη με 2026-07-01 αναμεμειγμένη με 07/01/2026 από μια διαφορετική εξαγωγή. Μείνετε στο ISO 8601 (YYYY-MM-DD) και αυτό εξαφανίζεται εντελώς.
  • Ασυμφωνίες στα κεφαλαία/πεζά των επικεφαλίδωνEmail έναντι email έναντι E-mail. Ο αναλυτής είναι επιεικής με τις συνηθισμένες παραλλαγές, αλλά ένα εντελώς προσαρμοσμένο όνομα επικεφαλίδας δεν αντιστοιχίζεται αυτόματα.

Κανένα από αυτά δεν είναι μοιραίο — το βήμα προεπισκόπησης (παρακάτω) αναδεικνύει το καθένα προτού εκδοθεί οτιδήποτε, οπότε η διόρθωση είναι «επεξεργαστείτε το υπολογιστικό φύλλο, ξανα-ανεβάστε» αντί για «βρείτε ποιος από τους 3.000 παραλήπτες πήρε ένα χαλασμένο σήμα».

Βήμα 2: Διαμορφώστε την παρτίδα

Από τον πίνακα ελέγχου, ανοίξτε Credentials → Bulk Credentials και επιλέξτε το σήμα που εκδίδετε. Αυτό είναι το βήμα όπου ορίζετε οτιδήποτε ισχύει για ολόκληρη την παρτίδα: το ίδιο το σήμα, μια κοινή ημερομηνία έκδοσης αν δεν βάζετε ημερομηνίες ανά γραμμή στο CSV, και (αν το προφίλ εκδότη σας έχει ένα) το LinkedIn organization ID που θα επιτρέψει σε κάθε παραλήπτη να προσθέσει το credential στο προφίλ του με ένα κλικ.

Bulk Credentials — βήμα 1, διαμόρφωση

Αυτή είναι μια καλή στιγμή να ελέγξετε ξανά ότι το σήμα που επιλέξατε είναι η τελική έκδοση — οι παραλήπτες θα δουν όποια εικόνα και κριτήρια είναι συνημμένα σε αυτό τη στιγμή που εκδίδετε, όχι όποια το ενημερώσετε αργότερα.

Βήμα 3: Μεταφόρτωση και προεπισκόπηση

Ρίξτε μέσα το CSV σας και η πλατφόρμα το αναλύει, σας δείχνει έναν πίνακα προεπισκόπησης και επισημαίνει οτιδήποτε δεν μπορεί να επεξεργαστεί — ένα email που λείπει, μια κακοσχηματισμένη ημερομηνία, μια διπλότυπη γραμμή. Τίποτα δεν εκδίδεται μέχρι να επιβεβαιώσετε την προεπισκόπηση.

Bulk Credentials — βήμα 2, μεταφόρτωση

Αυτό το βήμα προεπισκόπησης μετράει περισσότερο απ’ όσο φαίνεται. Ένα τυπογραφικό λάθος σε μία γραμμή ενός CSV 2.000 γραμμών είναι εύκολο να ξεφύγει από το μάτι, και είναι πολύ φθηνότερο να το εντοπίσετε προτού εκδοθούν ήδη 1.999 σωστές γραμμές παρά να προσπαθήσετε να το ξεδιπλώσετε μετά. Διορθώστε τις επισημασμένες γραμμές στο υπολογιστικό φύλλο σας, ξανα-ανεβάστε, και η προεπισκόπηση ενημερώνεται.

Βήμα 4: Εκτελέστε την παρτίδα

Πατήστε Έκδοση και η παρτίδα ξεκινά την επεξεργασία. Μια μπάρα προόδου παρακολουθεί τις ολοκληρωμένες έναντι των υπόλοιπων γραμμών, και η παρτίδα εκτελείται στην πλευρά του διακομιστή — δεν χρειάζεται να κρατάτε την καρτέλα ανοιχτή, και το κλείσιμο του φορητού σας στη μέση της παρτίδας δεν χάνει τη θέση σας.

Αυτό το τελευταίο κομμάτι αξίζει να το ξεκαθαρίσουμε γιατί είναι η λεπτομέρεια που πραγματικά μετράει για μεγάλες ομάδες: η κατάσταση της παρτίδας ζει στον διακομιστή, όχι στο πρόγραμμα περιήγησής σας. Αν πέσει η σύνδεσή σας, ο φορητός σας μπει σε αναστολή, ή απλώς κλείσετε την καρτέλα επειδή ξεκινά μια σύσκεψη, η παρτίδα συνεχίζει να εκτελείται (ή συνεχίζει ακριβώς από εκεί που σταμάτησε αν την βάλατε σε παύση) αντί να ξεκινήσει από το μηδέν. Για μια ομάδα bootcamp 40 ατόμων αυτό είναι ένα ωραίο έξτρα. Για μια εταιρική ανάπτυξη 5.000 γραμμών, είναι η διαφορά ανάμεσα στο «απλώς δουλεύει» και στο «κάποιος πρέπει να προσέχει μια καρτέλα προγράμματος περιήγησης για είκοσι λεπτά».

Μπορείτε επίσης να θέσετε σκόπιμα σε παύση μια παρτίδα που εκτελείται — ας πούμε ότι κάποιος επισημαίνει ότι το κείμενο κριτηρίων του σήματος χρειάζεται μια τροποποίηση στα μισά μιας εκτέλεσης 3.000 γραμμών — να διορθώσετε το ζήτημα και να συνεχίσετε χωρίς να επανεκδώσετε τις γραμμές που έχουν ήδη ολοκληρωθεί.

Βήμα 5: Διαχειριστείτε τις αποτυχίες

Οι πραγματικές λίστες παραληπτών έχουν κακές γραμμές: ένα domain email με τυπογραφικό λάθος, ένα πεδίο ονόματος που στην πραγματικότητα είναι κενό, μια διπλότυπη καταχώρηση από δύο εξαγόμενα φύλλα που συγχωνεύονται. Όταν μια γραμμή αποτυγχάνει, η παρτίδα δεν σταματά — συνεχίζει να επεξεργάζεται τις υπόλοιπες και επισημαίνει την αποτυχία για έλεγχο αργότερα. Λαμβάνετε μια εξαγωγή αποτελεσμάτων που δείχνει ακριβώς ποιες γραμμές πέτυχαν και ποιες όχι, ώστε να διορθώσετε μόνο τις γραμμές που απέτυχαν και να εκτελέσετε μια μικρή παρτίδα παρακολούθησης αντί να ξαναελέγξετε ολόκληρη τη λίστα.

Αυτό έχει σημασία για τη συνήθεια εξαγωγής CSV που είναι ήδη κοινή στον πίνακα ελέγχου credentials — μπορείτε να τραβήξετε ένα CSV με το τι πραγματικά εκδόθηκε ανά πάσα στιγμή, να το διασταυρώσετε με τη λίστα προέλευσής σας και να ξέρετε με ακρίβεια ποιος χρειάζεται ακόμη ένα σήμα.

Η διαδρομή API: Ίδια ροή, χωρίς πίνακα ελέγχου

Όλα τα παραπάνω προϋποθέτουν ότι κάποιος κάθεται στον πίνακα ελέγχου κάνοντας κλικ μέσα από τον οδηγό. Αν οι ολοκληρώσεις σας ζουν ήδη σε ένα σύστημα — ένα LMS, ένα CRM, μια αυτοματοποίηση υπολογιστικού φύλλου — μπορείτε να οδηγήσετε την ίδια ροή bulk-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. Καλύπτουμε τον έλεγχο ταυτότητας και την πλήρη δομή request/response στο quickstart του API. Κάθε credential που δημιουργείται με αυτόν τον τρόπο είναι πανομοιότυπο με ένα που δημιουργείται μέσω του οδηγού του πίνακα ελέγχου: ίδιο assertion Open Badge v2.0, ίδιο URL επαλήθευσης, ίδιο πιστοποιητικό PDF.

Οδηγός πίνακα ελέγχου έναντι API: Ποιον πραγματικά θέλετε;

Dashboard Bulk CredentialsAwards API
Ιδανικό γιαΜια εφάπαξ ή περιστασιακή παρτίδα (αποφοίτηση ομάδας, συμμετοχή σε συνέδριο)Ένα επαναλαμβανόμενο έναυσμα (κάθε ολοκλήρωση μαθήματος, κάθε αγορά)
Προσπάθεια ρύθμισηςΚαμία — εξάγετε ένα CSV, ανεβάστε τοΕφάπαξ εργασία ενσωμάτωσης (webhook ή script)
Ποιος το εκτελείΥπεύθυνος προγράμματος, χωρίς κώδικαΌποιος κατέχει το σύστημα που το ενεργοποιεί
Διαχείριση αποτυχιώνΠροεπισκόπηση + εξαγωγή αποτελεσμάτων ανά γραμμήΚατάσταση HTTP ανά αίτημα, χειρισμένη στη δική σας λογική επανάληψης

Οι περισσότερες ομάδες ξεκινούν με τον οδηγό του πίνακα ελέγχου επειδή δεν απαιτεί τίποτα πέρα από ένα CSV, και μετακινούνται στο API μόνο αφού η ίδια παρτίδα έχει εκτελεστεί χειροκίνητα τρεις ή τέσσερις φορές και το μοτίβο αξίζει προφανώς να αυτοματοποιηθεί.

Απόρρητο: Τι πραγματικά αποθηκεύεται

Ένα CSV με ονόματα και email είναι προσωπικά δεδομένα, και αξίζει να ξέρετε τι συμβαίνει σε αυτό μετά τη μεταφόρτωση. Η διεύθυνση email του παραλήπτη δεν αποθηκεύεται ποτέ σε απλό κείμενο στο ίδιο το credential — κατακερματίζεται με ένα salt ανά credential ως μέρος του assertion Open Badge v2.0, ακολουθώντας τη μορφή ταυτότητας παραλήπτη hashed της προδιαγραφής. Αυτός ο κατακερματισμός είναι που ελέγχει ένας verifier, όχι η ακατέργαστη διεύθυνση. Το πεδίο ονόματος αποθηκεύεται όπως εισήχθη, καθώς προορίζεται να είναι ορατό στο πιστοποιητικό και στη σελίδα επαλήθευσης. Αν μια γραμμή χρειάζεται διόρθωση μετά την έκδοση — ένα λανθασμένα γραμμένο όνομα, συνηθέστερα — μπορείτε να επεξεργαστείτε ή να ανακαλέσετε το μεμονωμένο credential από τον πίνακα ελέγχου credentials χωρίς να αγγίξετε την υπόλοιπη παρτίδα.

Μετά την παρτίδα: Ειδοποιήστε τους παραλήπτες

Η έκδοση του σήματος και η ενημέρωση του παραλήπτη γι’ αυτό είναι δύο διαφορετικά βήματα. Αν το CSV σας δεν ενεργοποιεί ήδη ένα email μέσω του δικού σας συστήματος, η ροή μαζικής κοινοποίησης του πίνακα ελέγχου σας επιτρέπει να επιλέξετε πολλαπλά από τα credentials που μόλις δημιουργήσατε και να στείλετε ένα εξατομικευμένο email κοινοποίησης σε όλα τους με μία κίνηση — δείτε τη μαζική αποστολή email κοινοποίησης για τον πλήρη οδηγό, συμπεριλαμβανομένου του πώς η εξατομίκευση ανά παραλήπτη (όνομα, εικόνα σήματος, σύνδεσμος επαλήθευσης) αντικαθίσταται αυτόματα.

Πότε το Bulk Credentials είναι το σωστό εργαλείο

Η μαζική έκδοση είναι η σωστή επιλογή κάθε φορά που το πλαίσιο της «παρτίδας» ταιριάζει στον πραγματικό κόσμο: μια ομάδα που ολοκλήρωσε την ίδια ημέρα, ένα συνέδριο που μόλις τελείωσε, μια ανάπτυξη εκπαίδευσης που φτάνει σε μια προθεσμία συμμόρφωσης. Αν αντ’ αυτού εκδίδετε μεμονωμένα credentials καθώς επιτυγχάνονται μεμονωμένα ορόσημα — μια μόνο προαγωγή, η ολοκλήρωση ενός μόνο έργου — η φόρμα μεμονωμένου credential είναι ταχύτερη από το να συναρμολογήσετε ένα CSV μίας γραμμής.

Για οτιδήποτε επαναλαμβανόμενο — το ίδιο μάθημα που τρέχει κάθε μήνα, μια συνεχή ροή onboarding — η διαδρομή API παραπάνω αξίζει να ρυθμιστεί μία φορά. Μετατρέπει το «εκτέλεσε bulk credentials χειροκίνητα για κάθε ομάδα» σε «οι ολοκληρώσεις ήδη εκδίδουν credentials αυτόματα», που είναι η εκδοχή αυτής της ροής εργασίας που οι περισσότεροι υπεύθυνοι προγραμμάτων πραγματικά θέλουν μετά τη δεύτερη ή τρίτη χειροκίνητη παρτίδα.

Έτοιμοι να εκδώσετε το πρώτο σας επαληθεύσιμο credential; Ξεκινήστε δωρεάν στο badges.ninja — οπτικός σχεδιαστής, δημόσια σελίδα επαλήθευσης, πιστοποιητικό PDF, έξοδος Open Badge v2.0. Δεν απαιτείται πιστωτική κάρτα.

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.

Πίσω στο Blog

Σχετικά άρθρα