5 Dakikadan Kısa Sürede CSV'den Open Badges Nasıl Verilir

Adım adım: alıcıların bulunduğu bir CSV yükleyin, rozetinizi seçin, Ver'e basın. Toplu işin ortasında duraklatıp devam edin, başarısızları yeniden deneyin, sonuçları dışa aktarın. 10 veya 10.000 kişilik gruplar için çalışır.

Nacho Coll Yazan Güncellendi 8 dk okuma
Adım adım: alıcıların bulunduğu bir CSV yükleyin, rozetinizi seçin, Ver'e basın. Toplu işin ortasında duraklatıp devam edin, başarısızları yeniden deneyin, sonuçları dışa aktarın. 10 veya 10.000 kişilik gruplar için çalışır.

Bir gruba credential’ları teker teker, her seferinde bir alıcıya vererek verdiyseniz, sorunu zaten biliyorsunuzdur: yaklaşık on kişiden sonra ölçeklenmez ve isimleri ile e-postaları kopyalayıp yapıştırdığınız bir öğleden sonraya dönüşür. 40 kişilik bir bootcamp grubu, 500 kişilik bir konferans katılımcı listesi ya da 5.000 kişilik bir kurumsal eğitim yaygınlaştırması, hepsi aynı şeye ihtiyaç duyar — bir liste yükleyin, bir rozet seçin, Ver’e tıklayın ve gidin.

https://badges.ninja üzerindeki Bulk Credentials tam olarak bunu yapar. Bu rehber tüm akışı kapsar: CSV’nizi hazırlama, toplu işi yapılandırma, çalışmasını izleme ve gerçek dünyanın karmaşık durumlarını ele alma — yazım hatası olan bir alıcı satırı, yarısında kesilen bir toplu iş ya da panel yerine kendi sistemlerinden aynı şekilde vermek isteyen bir program.

Başlamadan Önce: Neye İhtiyacınız Var

İki şey; muhtemelen ikisi de zaten sizde var:

  1. Bir rozet — görsel tasarımcıda bir kez tasarlanır, toplu işteki her alıcı için yeniden kullanılır. Henüz bir tane oluşturmadıysanız, ilk doğrulanabilir sertifikanızı tasarlama rehberimize bakın.
  2. Alıcıların bulunduğu bir CSV — ad, e-posta ve (isteğe bağlı) bir veriliş tarihi. Şemanın tamamı bu kadar.

Alıcı başına bir düzenleyici hesabına, bir posta sunucusuna ya da herhangi bir koda ihtiyacınız yok. Bu bölümdeki her şey panelde gerçekleşir.

Adım 1: CSV’nizi Hazırlayın

Alıcı listesi biçimi bilinçli olarak sade tutulmuştur:

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 — zorunlu. Assertion’daki ve sertifikadaki alıcı alanını doldurur.
  • email — zorunlu. Bu, Open Badge v2.0 assertion’ındaki alıcı kimliği hâline gelir — saklanmadan önce credential’a özgü bir tuzla hash’lenir, asla düz metin olarak tutulmaz.
  • issued_on — isteğe bağlı. Boş bırakın, toplu iş her satırın işlendiği anı kullanır; aslında geçen ay tamamlanmış bir grubu geriye dönük işliyorsanız açıkça belirtin.

Çoğu program sahibi bunu tamamlanmaları zaten takip ettikleri yerden doğrudan dışa aktarır — Airtable, Google Sheets, bir eğitmenin teslim ettiği bir tablo ya da bir LMS not defterinden çekilen bir CSV. Özel bir dışa aktarma aracı gerekmez; bu üç sütuna sahip herhangi bir CSV çalışır.

Yaygın CSV Tuzakları (ve Önizlemenin Bunları Nasıl Yakaladığı)

Gerçek dünya alıcı listelerinde birkaç sorun sürekli ortaya çıkar; genellikle CSV, iki ya da üç kaynak tablosunun birleştirilmesiyle oluşturulduğu için:

  • E-posta adreslerinde sondaki boşluklar — bir PDF listesinden ya da bir Google Form dışa aktarımından yapılan kopyala-yapıştır çoğu zaman görünmez bir boşluk taşır. Bir tablo hücresinde iyi görünür ama yüklemede e-posta doğrulamasında başarısız olur.
  • Yinelenen satırlar — bir grup listesi ile geç kayıt olanlar listesi tekilleştirilmeden birleştirildiği için aynı alıcının iki kez görünmesi.
  • Tutarsız tarih biçimleri2026-07-01 içeren bir sütunun başka bir dışa aktarımdan gelen 07/01/2026 ile karışması. ISO 8601’e (YYYY-MM-DD) bağlı kalın, bu tamamen ortadan kalkar.
  • Başlık büyük/küçük harf uyumsuzluklarıEmail yerine email yerine E-mail. Ayrıştırıcı yaygın varyantlara karşı hoşgörülüdür, ama tamamen özel bir başlık adı otomatik olarak eşleşmez.

Bunların hiçbiri ölümcül değil — önizleme adımı (aşağıda) hiçbir şey verilmeden önce her birini yüzeye çıkarır; böylece düzeltme, “3.000 alıcıdan hangisinin bozuk bir rozet aldığını bulun” değil, “tabloyu düzenleyin, yeniden yükleyin” olur.

Adım 2: Toplu İşi Yapılandırın

Panelden Credentials → Bulk Credentials’ı açın ve verdiğiniz rozeti seçin. Bu, tüm toplu işe uygulanan her şeyi ayarladığınız adımdır: rozetin kendisi, CSV’ye satır başına tarih koymuyorsanız ortak bir veriliş tarihi ve (düzenleyici profilinizde varsa) her alıcının credential’ı tek tıkla profiline eklemesini sağlayacak LinkedIn kuruluş kimliği.

Bulk Credentials — adım 1, yapılandır

Seçtiğiniz rozetin son sürüm olduğunu bir kez daha kontrol etmek için iyi bir an — alıcılar, verdiğiniz anda ona ekli olan görseli ve kriterleri görecek, sonradan güncellediğinizi değil.

Adım 3: Yükleyin ve Önizleyin

CSV’nizi bırakın; platform onu ayrıştırır, size bir önizleme tablosu gösterir ve işleyemeyeceği her şeyi işaretler — eksik bir e-posta, hatalı biçimli bir tarih, yinelenen bir satır. Siz önizlemeyi onaylayana kadar hiçbir şey verilmez.

Bulk Credentials — adım 2, yükle

Bu önizleme adımı göründüğünden daha önemli. 2.000 satırlık bir CSV’nin bir satırındaki yazım hatasını gözle kaçırmak kolaydır ve bunu, 1.999 doğru satır zaten verildikten sonra geri almaya çalışmaktansa öncesinde yakalamak çok daha ucuzdur. İşaretlenen satırları tablonuzda düzeltin, yeniden yükleyin, önizleme güncellenir.

Adım 4: Toplu İşi Çalıştırın

Ver’e basın; toplu iş işlemeye başlar. Bir ilerleme çubuğu tamamlanan satırları kalanlara karşı izler ve toplu iş sunucu tarafında çalışır — sekmeyi açık tutmanız gerekmez ve dizüstünüzü toplu işin ortasında kapatmak yerinizi kaybetmez.

Bu son kısmı açıkça belirtmeye değer, çünkü büyük gruplar için asıl önemli olan ayrıntı budur: toplu işin durumu tarayıcınızda değil, sunucuda yaşar. Bağlantınız koparsa, dizüstünüz uykuya geçerse ya da bir toplantı başladığı için sekmeyi kapatırsanız, toplu iş sıfırdan başlamak yerine çalışmaya devam eder (ya da duraklatmışsanız tam kaldığı yerden sürer). 40 kişilik bir bootcamp grubu için bu, olsa iyi olur türünden. 5.000 satırlık bir kurumsal yaygınlaştırma için ise “kendiliğinden çalışıyor” ile “birinin yirmi dakika bir tarayıcı sekmesine bakıcılık etmesi gerekiyor” arasındaki farktır.

Çalışan bir toplu işi bilinçli olarak da duraklatabilirsiniz — diyelim ki 3.000 satırlık bir çalışmanın yarısında biri rozet kriter metninin bir ayara ihtiyacı olduğunu bildirdi — sorunu düzeltin ve zaten tamamlanmış satırları yeniden vermeden devam edin.

Adım 5: Başarısızlıkları Yönetin

Gerçek alıcı listelerinde kötü satırlar olur: yazım hatalı bir e-posta alan adı, aslında boş olan bir ad alanı, birleştirilen iki dışa aktarılmış tablodan gelen yinelenen bir kayıt. Bir satır başarısız olduğunda toplu iş durmaz — geri kalanını işlemeye devam eder ve başarısızlığı sonradan incelenmek üzere işaretler. Hangi satırların başarılı, hangilerinin başarısız olduğunu tam olarak gösteren bir sonuç dışa aktarımı alırsınız; böylece tüm listeyi yeniden kontrol etmek yerine yalnızca başarısız satırları düzeltip küçük bir takip toplu işini yeniden çalıştırabilirsiniz.

Bu, credential panelinde zaten yaygın olan CSV dışa aktarma alışkanlığı için önemli — herhangi bir noktada gerçekten verilenlerin bir CSV’sini çekebilir, kaynak listenizle karşılaştırabilir ve hâlâ kimin bir rozete ihtiyacı olduğunu tam olarak bilebilirsiniz.

API Yolu: Aynı Akış, Panel Yok

Yukarıdaki her şey, birinin panelin başında oturup sihirbaza tıkladığını varsayar. Tamamlanmalarınız zaten bir sistemde yaşıyorsa — bir LMS, bir CRM, bir tablo otomasyonu — aynı toplu credential akışını doğrudan Awards API üzerinden yönetebilirsiniz.

Alıcı başına minimal bir verme çağrısı şöyle görünür:

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"
  }'

Ya da Python’da, aksi hâlde elle yükleyeceğiniz aynı CSV’den okunan satırlar üzerinde döngü kurarak:

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,
            },
        )

Bu yola, credential verme işlemi tamamen başka bir şey tarafından tetiklendiğinde başvurmaya değer — bir kurs tamamlama webhook’u, bir CRM aşama değişikliği, bir form gönderimi — birinin elle CSV dışa aktarması yerine. Kimlik doğrulamayı ve tam istek/yanıt biçimini API hızlı başlangıcında ele alıyoruz. Bu şekilde oluşturulan her credential, panel sihirbazıyla oluşturulanla aynıdır: aynı Open Badge v2.0 assertion, aynı doğrulama URL’si, aynı PDF sertifika.

Panel Sihirbazı ve API: Aslında Hangisini İstiyorsunuz?

Dashboard Bulk CredentialsAwards API
Şunun için en iyisiTek seferlik ya da ara sıra yapılan bir toplu iş (grup mezuniyeti, konferans katılımı)Yinelenen bir tetikleyici (her kurs tamamlama, her satın alma)
Kurulum çabasıYok — bir CSV dışa aktarın, yükleyinTek seferlik entegrasyon işi (webhook ya da betik)
Kim çalıştırırProgram sahibi, kod yokTetikleyen sisteme sahip olan kişi
Başarısızlık yönetimiÖnizleme + satır başına sonuç dışa aktarımıİstek başına HTTP durumu, kendi yeniden deneme mantığınızda ele alınır

Çoğu ekip panel sihirbazıyla başlar, çünkü bir CSV dışında hiçbir şey gerektirmez ve API’ye ancak aynı toplu iş üç dört kez elle çalıştırıldıktan ve desen otomatikleştirmeye açıkça değdikten sonra geçer.

Gizlilik: Aslında Ne Saklanır

Adların ve e-postaların bulunduğu bir CSV kişisel veridir ve yüklemeden sonra ona ne olduğunu bilmeye değer. Alıcının e-posta adresi asla credential’ın kendisinde düz metin olarak saklanmaz — Open Badge v2.0 assertion’ının bir parçası olarak, spesifikasyonun hashed alıcı kimliği biçimini izleyerek credential’a özgü bir tuzla hash’lenir. Bir doğrulayıcının karşılaştırdığı şey ham adres değil, bu hash’tir. Ad alanı girildiği gibi saklanır, çünkü sertifikada ve doğrulama sayfasında görünür olması amaçlanır. Bir satırın verildikten sonra düzeltilmesi gerekiyorsa — en yaygın olarak yanlış yazılmış bir ad — credential panelinden tek tek credential’ı düzenleyebilir ya da iptal edebilir, toplu işin geri kalanına dokunmadan yapabilirsiniz.

Toplu İşten Sonra: Alıcıları Bilgilendirin

Rozeti vermek ile alıcıya bunu bildirmek iki ayrı adımdır. CSV’niz kendi sisteminiz üzerinden zaten bir e-posta tetiklemiyorsa, panelin toplu paylaşım akışı, az önce oluşturduğunuz credential’ları çoklu seçmenize ve hepsine tek geçişte kişiselleştirilmiş bir paylaşım e-postası göndermenize olanak tanır — alıcı başına kişiselleştirmenin (ad, rozet görseli, doğrulama bağlantısı) nasıl otomatik olarak yerleştirildiği dâhil, tam rehber için toplu paylaşım e-postaları gönderme sayfasına bakın.

Bulk Credentials Ne Zaman Doğru Araçtır

Toplu verme, “toplu iş” çerçevesi gerçek dünyaya uyduğunda doğru seçimdir: aynı gün biten bir grup, yeni sona ermiş bir konferans, bir uyumluluk son tarihine yetişen bir eğitim yaygınlaştırması. Bunun yerine bireysel dönüm noktalarına ulaşıldıkça tek tek credential veriyorsanız — tek bir terfi, tek bir proje tamamlama — tek credential formu tek satırlık bir CSV oluşturmaktan daha hızlıdır.

Yinelenen her şey için — her ay çalışan aynı kurs, sürekli işleyen bir onboarding hattı — yukarıdaki API yolunu bir kez kurmaya değer. “Her grup için toplu credential’ı elle çalıştır”ı “tamamlanmalar zaten credential’ları otomatik veriyor”a dönüştürür; bu da çoğu program sahibinin ikinci ya da üçüncü elle toplu işten sonra aslında istediği iş akışı sürümüdür.

İlk doğrulanabilir credential’ınızı vermeye hazır mısınız? badges.ninja’da ücretsiz başlayın — görsel tasarımcı, herkese açık doğrulama sayfası, PDF sertifika, Open Badge v2.0 çıktısı. Kredi kartı gerekmez.

Nacho Coll

Yazar hakkında

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'a Dön

İlgili Yazılar