Moodle 기본 Open Badges를 Badges Ninja로 교체하기 (더 나은 디자이너, 동일한 API)

Moodle은 Open Badges를 기본 제공하지만 디자이너 기능이 제한적이고, 수령자 경험도 Moodle 안에 갇혀 있어요. Moodle의 수료 기록을 트리거로 Badges Ninja 크리덴셜을 발급해보세요.

Nacho Coll 작성자 업데이트됨 14 분 읽기
Moodle은 Open Badges를 기본 제공하지만 디자이너 기능이 제한적이고, 수령자 경험도 Moodle 안에 갇혀 있어요. Moodle의 수료 기록을 트리거로 Badges Ninja 크리덴셜을 발급해보세요.

Moodle은 버전 2.5부터 Open Badges를 기본으로 발급해왔고, 많은 과정 관리자들에게는 이것만으로도 다른 곳을 찾아볼 이유가 없어요. 내장 기능이고 무료이며, 기술적으로는 표준을 준수하는 크리덴셜을 만들어내죠. 그런데 왜 그렇게 많은 Moodle 관리자들이 쉰 번째 배지를 발급할 때쯤엔 지쳐버릴까요?

솔직히 말하면, Moodle의 배지 시스템은 크리덴셜 제품이 아니라 컴플라이언스 항목을 체크하기 위해 설계됐어요. 작동은 하지만, LMS에 덧붙여진 기능이 그렇듯 기능적이고, 낡았고, 그 플랫폼의 제약에 갇혀 있어요. Moodle 배지를 동그란 클립아트 아이콘이 아닌 다른 무언가처럼 보이게 하려고 해봤거나, 졸업생이 “어, 근데 이거 어디서 다시 볼 수 있어요?”라고 묻는 걸 들어본 적이 있다면, 이미 그 격차를 알고 있을 거예요.

이건 Moodle을 깎아내리려는 게 아니에요 — Moodle은 훌륭한 LMS이고, 배지 조건 엔진(과정 수료, 활동 완료, 수동 수여, 코호트 소속)은 크리덴셜을 트리거하는 부분에서 정말 잘 설계되어 있어요. 문제는 트리거 이후의 모든 것이에요: 디자인 도구, 수령자 경험, 그리고 Moodle 인스턴스 밖에서의 배지 가시성이요. 바로 그 부분을 위해 만들어진 게 badges.ninja이고, 이걸 쓰기 위해 Moodle의 수료 로직을 포기할 필요는 없어요 — 트리거가 향하는 곳을 다른 발급 엔진으로 바꾸기만 하면 돼요.

Moodle 기본 배지가 부족한 부분

디자이너는 디자인 도구가 아니라 좌표 기반 이미지 합성기예요. Moodle의 배지 편집기는 베이스 이미지를 고르고, 미리 정해진 아이콘 몇 개를 얹은 다음, 픽셀 단위 오프셋으로 위치를 조정하게 해줘요. 도형 라이브러리도 없고, 팔레트 시스템도 없고, 아이콘 세트에 내장된 것 외에는 폰트 선택지도 없어요. 조직에 브랜드가 있다면 — 로고, 컬러 팔레트, 인증서만의 시각 언어 — Moodle의 편집기는 그걸 표현할 수 없어요. 결국 대부분의 기관은 Photoshop이나 Canva에서 배지 아트를 디자인하고 평평한 PNG를 업로드하는데, 이러면 앱 내 디자이너를 갖고 있는 의미 자체가 사라져요.

수령자는 자신의 배지를 보려면 Moodle 로그인이 필요해요. 학습자에게 수여된 배지는 그 사람의 Moodle 프로필 페이지 안에 있어요. 과정을 이미 마쳤거나, 기관 계정 정보를 잊어버렸거나, 기관이 이후 계정을 폐기했다면 배지는 사실상 그 사람 입장에서 사라진 거예요 — 근본적인 어서션 자체는 Moodle의 backpack 커넥터나 공개 배지 페이지에서 여전히 확인될 수 있는데도요. 이메일만으로 로그인해서 모든 과정에서 지금까지 획득한 모든 크리덴셜을 볼 수 있는, 전용의 브랜드화된, 언제나 접근 가능한 공간이 없어요.

공유 기능은 그야말로 뒷전이에요. Moodle은 Mozilla Backpack 호환 서비스로 배지를 보낼 수 있고, 각 배지에 대한 공개 검증 URL도 제공하지만, 내장된 “LinkedIn에 추가” 흐름도 없고, 원클릭 공유 버튼도 없고, 발급 후에 누군가 그 배지를 봤는지에 대한 참여도 분석도 없어요. 배지가 입소문 마케팅처럼 작동하길 바라는 프로그램 — 부트캠프, 평생교육 제공기관, 기업 교육 — 에게는 실질적인 기회비용이에요.

대량 작업은 다루기 번거로워요. 모든 사람이 Moodle 안에서 동시에 트리거 활동을 완료한다면 코호트 전체에 배지를 수여하는 건 잘 작동해요. 하지만 과거 코호트에 배지를 소급 발급하거나, 스프레드시트에서 과거 수료 기록을 가져오거나, LMS 밖에서 일어난 일에 대해 배지를 발급해야 한다면, Moodle 데이터베이스에 직접 SQL을 작성하거나 배지 전용으로 만들어지지 않은 CSV 가져오기 도구와 씨름하게 돼요.

교체 패턴: Moodle의 트리거는 유지하고, 발급자만 바꾸기

이 문제를 해결하려고 Moodle에서 이전할 필요는 없어요. 가장 깔끔한 방법은 Moodle이 잘하는 일 — 과정 수료, 활동 완료, 코호트 소속 추적 — 을 계속하게 두고, 수료 조건이 충족되는 순간 기본 배지를 수여하는 대신(또는 그와 함께) Badges Ninja API를 호출하게 하는 거예요.

Moodle에서는 몇 가지 방법으로 이걸 지원해요.

  1. 과정 수료 웹훅 / Moodle Web Services(REST) 폴링. Moodle의 core_completion API는 사용자별, 과정별 수료 상태를 노출해요. 가벼운 예약 작업(Moodle 예약 cron 작업이나 Moodle REST API를 호출하는 외부 cron 작업)이 새로 완료된 등록을 폴링하고, 각각에 대해 Badges Ninja의 awards 엔드포인트를 호출할 수 있어요.

  2. 로컬 플러그인 훅. 개발자가 있다면, Moodle의 이벤트 시스템(\core\event\course_completed)을 작은 로컬 플러그인으로 관찰해서 수료가 일어나는 순간 즉시 HTTP 요청을 보낼 수 있어요 — 폴링 지연이 없죠.

  3. Zapier/Make/n8n을 접착제로 사용하기 — Moodle 코드베이스를 건드리고 싶지 않다면, Moodle이 수료 이벤트를 웹훅 리시버로 보내고 노코드 자동화 도구가 그걸 award 호출로 바꾸게 할 수 있어요.

수료한 사용자의 이름과 이메일이 있다면, 실제 award 호출은 이렇게 생겼어요.

curl -X POST https://api.badges.ninja/awards \
  -H "X-Api-Key: bws_3f9a1c2d4e5b6a7c8d9e0f1a2b3c4d5e" \
  -H "Content-Type: application/json" \
  -d '{
    "badgeId": "badge_moodle_course_completion",
    "recipient": { "name": "Jordan Alvarez", "email": "learner@example.edu" },
    "issuedOn": "2026-08-31"
  }'

또는 지금 실행 중인 예약 작업이나 웹훅 리시버 안에서 Node로는 이렇게 작성할 수 있어요.

const response = await fetch("https://api.badges.ninja/awards", {
  method: "POST",
  headers: {
    "X-Api-Key": process.env.BADGES_NINJA_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    badgeId: "badge_moodle_course_completion",
    recipient: { name: completedUser.fullname, email: completedUser.email },
    issuedOn: Date.now(),
  }),
});
const award = await response.json();

수령자의 이메일은 저장 시 SHA-256으로 해시되고, award에는 고유한 검증 URL, QR 코드, A4 PDF 인증서가 자동으로 붙어요. 그리고 무엇보다 중요한 건, 수령자가 별도의 Moodle 계정 없이 badges.ninja/me에서 매직 링크 로그인으로 이를 받아갈 수 있다는 점이에요. 요청/응답의 전체 구조는 awards API 레퍼런스에서, API 키가 전체적으로 어떻게 작동하는지는 인증 가이드에서 확인하세요.

실시간 이벤트를 연결하는 대신 일괄 처리를 원한다면 — 예를 들어 한 학기 분량의 수료 기록을 한 번에 소급 처리하고 싶다면 — Moodle에서 수료 기록을 CSV로 내보내고 대량 발급 흐름을 바로 사용하세요. 대용량 파일의 일시정지/재개도 지원해요. 자세한 내용은 CSV로 Open Badges 발급하는 방법에서 다루고 있어요.

배지 자체 디자인하기

파이프라인이 갖춰지면 실제 배지 디자인은 웹팀에 티켓을 넣는 게 아니라 몇 분이면 끝나요. 비주얼 디자이너는 80개 이상의 도형 템플릿, 진짜 컬러 팔레트 시스템, 아이콘 라이브러리, 커스텀 폰트 업로드를 제공해서 “고급 통계학 — 수료” 같은 배지도 흔한 Moodle 성취 아이콘이 아니라 정말로 여러분 기관의 브랜드에 속한 것처럼 보이게 만들 수 있어요.

API Keys — empty state

모든 API 키는 배지와 발급자를 관리하는 것과 동일한 대시보드에서 범위를 지정하고 폐기할 수 있어서, 통합용 인증 정보를 개발자(또는 Zapier 같은 자동화 도구)에게 넘겨줘도 메인 계정 로그인을 공유하는 게 아니에요.

Create key — name form

나란히 비교: 수령자 경험

Moodle 기본 배지Badges Ninja
수령자가 확인하는 곳Moodle 프로필 안, 로그인 필요badges.ninja/me, 매직 링크, 비밀번호 불필요
공개 검증있음, 배지별 공개 URL있음, Open Badge v2.0 JSON-LD 엔드포인트
디자인 도구고정 아이콘 + 위치 오프셋80개 이상 템플릿, 팔레트, 커스텀 폰트/아이콘
LinkedIn 공유수동, 내장 버튼 없음네이티브 LinkedIn 프로필 추가 흐름
과거 기록 대량 발급SQL 또는 수동 CSV 우회일시정지/재개 지원 내장 대량 발급
참여도 가시성없음award별 조회/공유 통계
소속 기관을 떠난 후 접근성Moodle 계정 상태에 종속영구적, 수령자 소유

Moodle이 여전히 이기는 부분이 하나 있어요: 여러분의 유일한 요구사항이 “배지가 존재하고, 기술적으로 Open Badge v2.0을 준수하며, 학습자가 이미 쓰고 있는 LMS 안에 있는 것”뿐이라면, 기본 배지는 추가 비용도 들지 않고 통합 작업도 필요 없어요. 하지만 디자인 품질, 과정 종료 후의 이동성, 또는 발급을 채용/마케팅 신호로 활용하는 데 신경 쓰기 시작하는 순간 — 결국 대부분의 기관이 그렇게 되는데 — 이 트레이드오프가 드러나요.

다른 Open Badges 플랫폼들이 가격과 기능 면에서 어떻게 비교되는지 더 폭넓게 보고 싶다면 가장 저렴한 Open Badges 플랫폼 비교를 확인해보세요. 그리고 여러분 기관이 Open Badge v2.0과 더 새로운 검증 가능한 크리덴셜 사양 사이에서 고민하고 있다면, Open Badge v2 vs v3 설명에서 오늘 실제로 어떤 걸 도입해야 할지 다루고 있어요.

첫 번째 검증 가능한 크리덴셜을 발급할 준비가 되셨나요? 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.

블로그로 돌아가기

관련 글