메타루프 실습 (1):
자료 파싱부터
군집분석 & 스킬화

구글 워크스페이스 CLI(GWS)와 데이터 분석을 결합한 형성평가 자동화 환류

01

학습 목차

02

Introduction

왜 형성평가 환류 자동화인가?

전통적인 형성평가는 문항 출제, 배포, 채점, 학생 맞춤 피드백까지 많은 시간이 소요되어 실시간 환류가 어려웠습니다.

MetaLoop는 AI 에이전트와 구글 워크스페이스 API를 결합하여 "자료 입력 → 배포 → 수집 → 군집 분석 → 피드백"의 전 과정을 자동 순환 루프로 구축합니다.

03

MetaLoop 1단계 아키텍처

PDF 파싱 (PyMuPDF)
문항 생성 (NotebookLM)
GWS 배포 & 수집
군집분석

각 단계를 개별적인 파이썬 코드 및 GWS CLI 도구로 검증하고 하나의 자율 에이전트 스킬로 결합합니다.

04

1단계: 교수 자료 파싱 (PDF Parsing)

05

파이썬 PDF 라이브러리 비교

라이브러리 주요 특징 교육용 활용 적합도
PyMuPDF (fitz) 속도가 매우 빠르고, 텍스트 레이아웃 보존력이 우수함 ⭐⭐⭐⭐⭐ (가장 추천)
pdfplumber 표(Table) 데이터 추출에 강력함 ⭐⭐⭐⭐ (수치 데이터가 많을 때)
pypdf 간단한 텍스트 추출 및 PDF 파일 분할/결합에 강함 ⭐⭐⭐ (기본 유틸리티용)
06

PyMuPDF 텍스트 추출 실습 코드

import fitz  # PyMuPDF

def extract_pdf_text(pdf_path):
    doc = fitz.open(pdf_path)
    full_text = ""
    for page in doc:
        full_text += page.get_text() + "\n"
    return full_text

# 실행 후 markdown 파일로 저장하여 AI가 읽을 수 있도록 준비
extracted_content = extract_pdf_text("chemistry_midterm_guide.pdf")
with open("chemistry_guide.md", "w", encoding="utf-8") as f:
    f.write(extracted_content)
07

2단계: 성취기준 기반 문항 생성

08

NotebookLM-py CLI를 이용한 퀴즈 생성

# 1. 특정 학습자료 기반 노트북 생성
notebooklm create "화학1 형성평가 세션"

# 2. 파싱한 자료 주입
notebooklm source add "./chemistry_guide.md"

# 3. 객관식 및 서술형 퀴즈 생성
notebooklm generate quiz --difficulty medium --quantity 10

# 4. 문제를 마크다운 파일로 로컬 다운로드
notebooklm download quiz --format markdown ./assessment.md
09

3단계: 구글 설문지 자동 생성 (GWS CLI)

10

Google Form 생성 및 API 연동

# assessment.json 파일 형식 예시
# {"title": "화학1 형성평가", "items": [{"question": "원소의 정의는?", "options": ["원자", "물질", ...], "answer": "원자"}]}

# gws CLI를 활용하여 새 설문지 생성
gws forms create --json '{"info": {"title": "제1회 화학 형성평가", "documentTitle": "화학 형성평가"}}'

# 설문지 문항 업데이트 (gws forms batch-update 사용)
gws forms batch-update --form-id  --json-file ./form_questions.json
11

GWS Gmail을 통한 형성평가 링크 배포

설문지가 완성되면 학생 명렬표(이메일 리스트)를 불러와 gws의 +send 헬퍼 명령어로 개별 자동 배포를 수행합니다.

# 특정 학생에게 형성평가 설문지 링크를 포함한 안내 메일 발송
gws gmail +send \
  --to "student1@school.hs.kr" \
  --subject "[화학1] 오늘 수업 형성평가 링크 배포" \
  --body "오늘 학습한 내용에 대한 형성평가입니다. 아래 링크에서 응시해 주세요.\n링크: https://forms.gle/xxxxxx"
12

4단계: 결과 수집 (구글 시트 연동)

# 구글 시트 ID를 사용해 학생 응답 데이터를 A열부터 E열까지 가져옴
gws sheets +read --id "SPREADSHEET_ID_XXXX" --range "응답시트1!A2:E40"
13

Data Analytics

오답 및 응답 기반 학생 군집화 (Clustering)

단순히 점수순으로 줄을 세우는 대신, 머신러닝 군집화(K-Means)를 활용해 학생들의 오답 패턴을 분석합니다.

14

Pandas & Scikit-learn 군집분석 예시

import pandas as pd
from sklearn.cluster import KMeans

# 1. 학생 응답 데이터 로드 (시트 취합 결과)
df = pd.read_csv("student_responses.csv") # [학생명, 문항1_여부, 문항2_여부, 문항3_여부]

# 2. K-Means 군집 분석 실행 (3개 그룹으로 군집화)
kmeans = KMeans(n_clusters=3, random_state=42)
df['cluster'] = kmeans.fit_predict(df[['Q1', 'Q2', 'Q3', 'Q4', 'Q5']])

# 3. 군집 결과 저장
df.to_csv("clustered_students.csv", index=False)
print("군집화 완료! 군집별 맞춤형 피드백 준비 완료.")
15

5단계: Antigravity 스킬로 패키징

매번 파이썬 스크립트와 gws 명령어를 개별적으로 실행하면 불편합니다. 이 전체 워크플로우를 Antigravity 에이전트가 단 한 줄의 프롬프트로 처리할 수 있도록 Skill(스킬)로 묶어줍니다.

16

SKILL.md 작성 예시 (1단계 루프)

---
name: metaloop-distributor
description: PDF 가이드를 파싱하여 문항을 출제하고 구글 폼으로 배포한 후 시트 결과를 수집하는 형성평가 루프 1단계 스킬
---
# 형성평가 배포 및 수집 자동화
## 사용 조건 (When to use)
사용자가 "교수자료로 문제를 만들어 배포하고 결과를 가져와줘"라고 할 때 자동 활성화.

## 실행 프로세스 (Instructions)
1. 지정한 PDF 파일을 `fitz`를 활용해 파싱하여 마크다운 텍스트를 추출한다.
2. `NotebookLM-py`를 사용하여 추출된 범위 내에서 성취기준 기반의 5문항을 출제한다.
3. `gws forms`를 이용하여 문항을 탑재한 구글 설문지를 퍼블리시한다.
4. `gws gmail +send`를 활용해 등록된 학생 리스트에 설문지 링크를 전송한다.
5. 학생 응답 시트 데이터를 `gws sheets +read`로 불러와 군집 분석용 CSV 파일로 자동 저장한다.
17

스킬 등록 및 활성화

완성된 metaloop-distributor 폴더를 워크스페이스 스킬 경로에 두고, 에이전트에게 명령합니다.

# 1. 스킬 경로 구성
# /.agents/skills/metaloop-distributor/SKILL.md

# 2. 에이전트 프롬프트에 입력하여 루프 실행 위임
"metaloop-distributor 스킬을 활성화해서, 오늘 수업 자료인 'lecture_01.pdf'로 형성평가를 생성하고 배포해줘."
18

실행 데모 및 에이전트 검증 시나리오

19

강의 요약 (Lecture 1 Summary)

우리는 PDF 분석, 자동 출제, 구글 워크스페이스 배포 및 수집, 데이터 군집화라는 형성평가 환류의 전반부 파이프라인을 구축했습니다.

이 프로세스를 Antigravity 스킬로 포장하여 자율 에이전트가 스스로 실행할 수 있는 시스템을 설계 완료했습니다.

20

Q&A 및 실습 안내

실습 가이드 및 코드는 워크스페이스 내의 tasks.md를 참고하여 에이전트와 함께 단계적으로 실행해 보십시오.

21