Lets students replicate your Airtable table structures into their own bases. No data is copied — only tables, fields, and field configurations. Designed for classrooms where everyone needs identical base schemas (e.g., for n8n automations).
Your side (teacher) — two options:
Option A: Admin Web UI (no terminal needed)
- Open
admin.htmlin your browser - Enter your API key, proxy URL, Base ID, and Course Name
- Click "Fetch Schema & Generate HTML"
- Download the generated HTML file
- Upload it to GitHub Pages (or any host) and share the link
Option B: CLI (terminal)
- Run
export-schema.jsto read your base schema - Run
generate-html.jsto produce the install HTML file - Share the HTML file with students
Student side:
- Click the install link you shared (or open the HTML file)
- Enter their Airtable API key and Base ID
- Click "Start" — tables and fields are created automatically
cd cli
npm installThe Airtable API blocks browser requests (CORS). A tiny Cloudflare Worker acts as a pass-through proxy.
# Install wrangler if you don't have it
npm install -g wrangler
# Login to Cloudflare
wrangler login
# Deploy the worker
cd worker
npx wrangler deployAfter deploying, you'll get a URL like https://airtable-replicator-proxy.YOUR-ACCOUNT.workers.dev. Save this — you'll need it in step 4.
Free tier: 100,000 requests/day (more than enough for a classroom).
cd cli
node export-schema.js --base appYOUR_BASE_ID --key patYOUR_API_KEY --name "My Course Base"This creates output/schema.json with the processed schema. Your API key and Base ID are not embedded in the output.
Options:
--output ./path/to/file.json— custom output path--name "Human Readable Name"— name shown to students
cd cli
node generate-html.js --schema ../output/schema.json --proxy https://airtable-replicator-proxy.YOUR-ACCOUNT.workers.devThis creates output/install-all.html.
Options:
--per-table— also generate one HTML file per table--output ./path/to/dir— custom output directory
Upload the HTML files to:
- GitHub Pages
- Your LMS (Canvas, Moodle, etc.)
- Google Drive (as a downloadable file)
- Or email them directly
Give your students these steps:
-
Create a Personal Access Token at airtable.com/create/tokens
- Scopes needed:
schema.bases:writeanddata.records:write - Add access to the base they want to set up
- Scopes needed:
-
Create an empty base in Airtable (or use an existing empty one)
-
Get the Base ID from the URL:
airtable.com/appXXXXXXXXXX/... -
Open the install page you shared with them
-
Enter their token and Base ID, then click Start
| Field Type | Behavior |
|---|---|
| Text, number, checkbox, select, date, etc. | Created automatically |
| Linked records | Created automatically (two-pass: tables first, then links) |
| Formula, rollup, lookup, count | Created as "Long Text" placeholders with setup instructions in the field description and in a special instruction row |
| Inverse link fields | Skipped (Airtable auto-creates these) |
For formula/rollup/lookup/count fields, the tool:
- Creates the field as Long Text with the original name
- Adds the formula/config to the field description
- Creates an instruction row in the table with step-by-step setup instructions
- Students change the field type manually and paste the formula/config
- Your API key and Base ID are only used locally during schema export. They are never embedded in any output file.
- Student API keys are sent over HTTPS to the Cloudflare Worker, which forwards them to Airtable. The Worker never stores or logs keys.
- The Worker only forwards requests to
https://api.airtable.com/*.
airtable-base-replicator/
├── cli/
│ ├── export-schema.js # Fetches and processes base schema
│ ├── generate-html.js # Generates install HTML files
│ └── package.json
├── template/
│ └── install.html # Student UI template
├── worker/
│ ├── index.js # Cloudflare Worker CORS proxy
│ └── wrangler.toml
├── admin.html # Teacher admin UI (no terminal needed)
├── output/ # Generated files (gitignored)
└── README.md
If you change your base structure, re-run the export and generate steps:
cd cli
node export-schema.js --base appYOUR_BASE_ID --key patYOUR_API_KEY --name "My Course Base"
node generate-html.js --schema ../output/schema.json --proxy https://your-worker.workers.devThen redistribute the updated HTML files.
The easiest way to share install pages is via GitHub Pages (free):
- Create a GitHub repo (e.g.,
my-course-installers) - Upload your generated HTML files to the repo
- Go to Settings → Pages → Source: main branch
- Students access the install page at:
https://yourusername.github.io/my-course-installers/install-ai-video-b-roll-agent.html
Other options: Netlify drop (drag & drop), your LMS file manager, Google Drive (share link → student downloads), or email the HTML file directly.