Skip to content

NemProjects/eclass-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eclass-cli

"과제 제출해줘" 한마디로 끝내는 이클래스 제출

한국 대학 이클래스(Canvas LMS / LearningX)용 Claude Code 스킬 + 단일 파일 CLI

License: MIT Python 3.8+

Claude Code에서 이클래스 과제를 자연어로 제출하는 데모

  • 🪶 본체는 eclass.py 파일 하나, 의존성은 requests 하나
  • 🔌 화면 매크로가 아니라 Canvas 공식 REST API — 빠르고 안 깨짐
  • 🔒 비밀번호 대신 본인이 직접 발급·삭제하는 액세스 토큰만 사용

시작하기 (5분)

① 토큰 발급

이클래스 로그인 → 계정 → 설정 → 아래로 스크롤 → "+ 새 액세스 토큰" → 생성된 토큰 복사. (중앙대는 https://eclass3.cau.ac.kr/profile/settings)

만료일은 학기 말 추천. 같은 페이지에서 언제든 삭제 가능. 남과 공유 금지!

② 설치

git clone https://github.com/NemProjects/eclass-cli
cd eclass-cli
pip install requests

③ 초기 설정

$ python eclass.py init
학교를 선택하세요:
  [1] 중앙대학교
  [2] 직접 입력 (다른 Canvas/LearningX 학교)
선택 (1-2): 1
토큰 붙여넣기 (입력 안 보임):
인증 성공: 홍길동
수강 과목 4개: 기본1과정, 기본2과정, ...
설정 저장 완료

이름이 나오면 끝. 과목은 매번 자동 조회되니 학기 중 과목이 늘어도 재설정할 게 없습니다.

④ 확인하고 제출

$ python eclass.py list
📚 기본2과정  [141483] — 과제 15개 (미제출·마감 임박순)
 ⬜ [1610995] 비디오처리 과제  (마감 2026-07-17 23:59 D-3)
 ✅ [1610990] 음성신호 처리 과제  (마감 없음)
 ...

$ python eclass.py push report.pdf --assignment 1610995
제출 내용 확인
  과제:   비디오처리 과제  [1610995]
  파일:   D:\assignments\report.pdf (107,747 bytes)
제출할까요? [y/N]: y

✅ 제출 완료: 2026-07-14 15:40 (KST), attempt 1

여기까지 되면 설정 완료입니다.

Claude Code와 연결 (선택)

Claude Code에서 두 줄이면 됩니다:

/plugin marketplace add NemProjects/eclass-cli
/plugin install eclass

이후 새 세션부터 자연어로 씁니다 — "과제 목록 보여줘", "이 파일 비디오처리 과제에 제출해줘". Claude가 제출 직전 항상 확인을 받고, 재제출이면 미리 알려줍니다.

(수동 설치를 원하면 skills/eclass/SKILL.md~/.claude/skills/eclass/로 복사하고 파일 안의 ${CLAUDE_PLUGIN_ROOT}를 clone 경로로 바꾸면 됩니다.)

명령어

명령 하는 일
init 최초 설정 (학교 · 토큰)
list 전 과목 과제 목록 — 미제출·마감 임박순, D-day 표시 (--all 숨김 포함)
push [파일] 과제 제출 — 제출 전 항상 확인
link [URL] 현재 폴더를 과제에 바인딩
status 제출 여부 · 제출 시각 확인
mute <id> / unmute <id> 제출 안 하는 과제를 목록에서 숨김 / 해제

꿀팁

매주 내는 과제라면 — 과제 폴더에서 한 번 바인딩해두면 이후 push 한 단어:

python eclass.py link https://eclass3.cau.ac.kr/courses/141483/assignments/1610995 --file "*.pdf"
python eclass.py push   # 패턴에 맞는 최신 파일 자동 선택

파일명 규칙이 있다면 — 로컬 파일은 그대로, 제출되는 이름만 변경:

python eclass.py push final_v3.pdf --as "비디오처리_5차시_홍길동.pdf"

Colab에서 작성했다면files.download()로 받고:

python eclass.py push --downloads   # 다운로드 폴더 최신 파일이 바로 후보로

FAQ

계정 정지당하지 않나요?

학교가 공식 제공하는 Canvas REST API를 본인 토큰으로 호출합니다. 스크래핑·매크로가 아니며, Canvas의 정식 3단계 업로드 플로우(슬롯 요청 → multipart 업로드 → 제출 확정)를 그대로 씁니다. 본인 과제 제출 용도로 쓰세요.

우리 학교도 되나요?

Canvas LMS / Xinics LearningX 기반이면 됩니다 (init에서 "직접 입력"으로 학교 주소 지정). 검증된 프리셋은 중앙대학교. 본인 학교에서 확인하셨다면 프리셋 추가 PR 또는 학교 등록 요청 이슈를 환영합니다 🙌 — 방법은 CONTRIBUTING.md 참고

401 오류가 나요

토큰 만료입니다. 설정 페이지에서 재발급 후 ~/.eclass/token 파일 내용을 교체하세요.

실수로 잘못 제출했어요

Canvas는 제출 취소가 없고 재제출만 가능합니다. 올바른 파일로 다시 push하면 새 attempt로 기록되고, 교수님께는 최신 제출물이 기본으로 보입니다.

텍스트 입력·퀴즈형 과제는요?

v1은 파일 업로드(online_upload) 과제만 지원합니다. 그 외 유형은 이클래스에서 직접 제출하세요.

License

MIT

About

한국 대학 이클래스(Canvas LMS/LearningX) 과제를 터미널에서 제출하는 단일 파일 CLI

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages