Skip to main content
Back to projects

claude-classroom-submit — autonomous Google Classroom turn-in

Skips the cross-origin Drive Picker iframe entirely — uploads via rclone, attaches and turns in via the Classroom REST API.

PythonGoogle Classroom APIrcloneOAuth 2.0
Submit time
< 5 s
Manual time saved
~2 min / submission

The problem

Browser automation hits the Drive Picker iframe sandbox; programmatic file selection is blocked by cross-origin policy. Manual submit takes ~2 minutes per assignment.

The solution

Skip the browser entirely. rclone uploads to Drive, the Classroom REST API attaches + turns in. OAuth 2.0 refresh-token flow stored at ~/.config/claude-classroom-submit/tokens.json.

Overview

Uploads a file to Drive via rclone, finds the target assignment by query, attaches the Drive file via studentSubmissions.modifyAttachments, and finalizes with studentSubmissions.turnIn — all via REST API.