ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Supports Quiz
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An H5P AI capability layer, exposed over MCP. Any AI assistant a teacher, course
creator, or L&D team already uses — ChatGPT first, Claude and other MCP clients next —
turns learning content into an interactive H5P activity, refined by chatting, exported as
a standard, portable .h5p file. Live at project2608b.vercel.app
· MCP endpoint: /api/mcp.
This document is the product spec: why this exists, what it's worth to whom, what's been
built, what's still unresolved, and the engineering decisions behind it.README 전문 보기 ↗An H5P AI capability layer, exposed over MCP. Any AI assistant a teacher, course
creator, or L&D team already uses — ChatGPT first, Claude and other MCP clients next —
turns learning content into an interactive H5P activity, refined by chatting, exported as
a standard, portable .h5p file. Live at project2608b.vercel.app
· MCP endpoint: /api/mcp.
This document is the product spec: why this exists, what it's worth to whom, what's been built, what's still unresolved, and the engineering decisions behind it.
Teachers, course creators, and L&D teams already draft content with AI — lesson notes, explanations, study material. But turning that content into something a learner can interact with — a quiz, a check for understanding — still means leaving the conversation and going through a separate H5P authoring tool: a new UI to learn, fields to fill in by hand, no memory of what was just discussed.
The AI already understood the content well enough to explain it. It's a short hop from there to also being able to build the activity — if that capability is put directly where the content was drafted, instead of behind a separate destination app.
.h5p file. It plays in Moodle, Canvas,
WordPress, h5p.com, Lumi — anywhere H5P already runs. Nothing about using this ties a
teacher to a platform they'd have to trust long-term.Honestly: this is the least settled part of the spec, on purpose. The technical bet is proven. The commercial bet is not, and shouldn't be assumed — see Open questions for why. What's true today:
.h5p package
could even be built and would actually play was the top feasibility risk at the start of
this build; it's now proven — structurally validated, and confirmed playing in a real
client (Claude Desktop), not just in our own player.Built in stages, each with its own problem framing, use case, and scope — not committed to a single upfront plan. Each stage has a full spec of its own; this is the roadmap view.
mvp-1)/api/mcp) exposing create_h5p_quiz, working from any MCP client; an inline
card in ChatGPT rendering the real H5P runtime with a graceful fallback; a full-page
browser player (/play/<token>); a downloadable, standards-valid .h5p; conversational
refinement.specs/mvi_spec.md..h5p gives no visibility into whether a generated
activity is actually good, or whether educators come back — and hosting alone isn't a
reason to pay for anything once AI can generate the file directly.specs/feedback_loop_spec.md.Candidates under discussion, each currently gated on something outside our control:
reports/builder_priorities.md.| Piece | What it does |
|---|---|
MCP server (app/api/[transport]/route.ts) | Registers one tool, create_h5p_quiz, and the inline widget resource. Runs on Vercel (Next.js). |
Package builder (lib/h5p/buildQuiz.ts) | Turns a question list into a valid H5P package, using the official H5P Hub runtime-library bundle (vendored, full dependency closure). |
Stateless token (lib/h5p/pack.ts) | A quiz's "id" is its own content — gzip + base64url of the question list. No database; any server instance rebuilds the same file from the link alone. |
Inline widget (lib/h5p/widget.ts) | The card ChatGPT renders in the chat. Attempts the real h5p-standalone player first; falls back to a hand-built, H5P-styled runner if the platform's sandbox blocks it. Always shows the answer key by default. |
Browser player (app/play/[token]/page.tsx) | Full-page interactive fallback for clients (e.g. Claude Desktop) that don't render inline widgets. |
File endpoints (app/api/h5p/...) | Serve the .h5p download and the unpacked files the live player streams. |
No backend LLM, no database, no accounts — see System design decisions for why each of those is a deliberate choice, not a gap.
Validated so far: structurally valid .h5p output; real end-to-end run in Claude
Desktop (tool call → download → the file actually plays); real end-to-end run in ChatGPT
(inline card renders, real H5P runtime loads inside the chat card on repeat use, edits
correctly invalidate stale renders). Not yet validated: a generated file imported into
h5p.com or Lumi specifically (structural validity confirmed; that specific round-trip isn't).
.h5p is an open format — once an
AI can generate a valid one, there's no inherent reason to pay a vendor to host it. This
is the single biggest risk to durable value capture, and it's a research question, not
an engineering one.h5p-standalone player (using embedType: "div" to work inside ChatGPT's
no-iframe component sandbox); on any failure it falls back to a lookalike runner built
from H5P's own styling, so the experience degrades gracefully instead of breaking.flowchart LR
User -->|"content + intent"| Assistant["ChatGPT / any MCP client<br/>writes the questions"]
Assistant -->|"create_h5p_quiz(questions)"| Server["MCP server — Vercel<br/>builds the .h5p package"]
Server -->|"widget + links<br/>(id = the compressed content)"| Assistant
Assistant --> Card["Inline card in chat<br/>real H5P runtime, JS fallback"]
Server -.->|".h5p download"| LMS["Any H5P-compatible platform<br/>Moodle · h5p.com · Lumi"]
Server -.->|"/play/<token>"| Browser["Browser tab<br/>(non-widget clients)"]
The request crosses into the backend once, as a finished question list, and crosses back twice — once as the widget itself, once as the live H5P files it loads. Nothing in the middle is stored anywhere; the link the backend hands back is the quiz.
npm install
cp .env.example .env # add your OPENAI_API_KEY for the demo page
npm run dev # http://localhost:3000
http://localhost:3000/api/mcpnpx @modelcontextprotocol/inspector
# connect to http://localhost:3000/api/mcp (Streamable HTTP), call create_h5p_quiz
To connect it to Claude Code, Claude Desktop, or ChatGPT Plus (plans + exact steps):
see docs/testing-in-ai-clients.md.
npm run h5p:libraries — refresh the vendored H5P runtime libraries from the H5P Hubnpm run h5p:smoke — build a sample quiz and structurally validate the .h5pHosted on Vercel (project2608b). OPENAI_API_KEY is a project env var (demo page only —
the MCP path needs no key). Full milestone history: docs/mvp-log.md.