Why Expose Your Curriculum as Data?
A curriculum website is valuable. A curriculum that machines can read is powerful.
When your content is available as structured data:
- AI agents can learn your material and help students
- Automation can spread the word when you publish
- Custom tools can build on top of your content
- Other systems can integrate without manual work
The APIs are already built. This lesson shows you what to do with them.
Use Case 1: AI Tutoring Assistant
The Concept
Imagine an AI assistant that knows your curriculum deeplyânot just the text, but the structure. It can:
- Recommend which lesson to read based on a question
- Explain how topics connect across clusters
- Quiz learners on key concepts
- Suggest what to study next
How to Build It
With Claude Projects:
- Go to claude.ai and create a new Project
- In Project Knowledge, add a new file
- Fetch your curriculum:
curl https://yoursite.netlify.app/api/curriculum.json > curriculum.json - Upload
curriculum.jsonto the project - Start chattingâClaude now knows your entire curriculum
Example prompts to try:
- "What topics does this curriculum cover?"
- "I want to learn about [topic]. Which lesson should I start with?"
- "Summarize the key concepts from the Getting Started cluster"
- "Create a quiz based on lesson 2 of cluster 1"
With Custom GPTs:
- Go to ChatGPT and create a new GPT
- In the configuration, under Knowledge, upload your curriculum JSON
- Or configure it to fetch from your API URL
- Set instructions like: "You are a tutor for this curriculum. Help students navigate and understand the material."
Why This Works
The JSON structure tells the AI:
- What clusters exist and how they're ordered
- What lessons belong to each cluster
- Titles, descriptions, and slugs for linking
- The overall scope and progression
This is far better than the AI just reading your websiteâit understands the structure.
Use Case 2: Social Media Automation
The Concept
Every time you publish a new lesson, automatically:
- Tweet about it
- Post to LinkedIn
- Send a newsletter
- Notify a Discord server
How to Build It
With Zapier:
- Create a Zapier account (free tier works)
- Create a new Zap
- Trigger: Choose "RSS by Zapier" â "New Item in Feed"
- Feed URL:
https://yoursite.netlify.app/feed.xml - Action: Choose your destination (Twitter, Slack, Email, etc.)
- Configure: Use the feed item's title, link, and description
Example Zap: RSS â Twitter
When: New item in RSS feed
Post to Twitter:
"New lesson published: {{title}}
{{link}}
#learning #curriculum"
With Make (Integromat):
Similar flowâRSS module as trigger, social media as action. Make offers more complex branching if you want different actions for clusters vs. lessons.
With IFTTT:
- Create an IFTTT applet
- "If RSS feed has new item" â "Then post to Twitter/Slack/etc."
- Simple but effective for basic notifications
Pro Tips
- Filter by category to only announce lessons (not clusters)
- Add a delay so you can catch mistakes before auto-posting
- Include hashtags relevant to your curriculum topic
Use Case 3: Progress Tracking App
The Concept
Build a companion app where learners:
- See all available lessons
- Mark lessons as complete
- Track their progress through clusters
- Get suggestions for what to learn next
How to Build It
Simple Browser-Based Tracker:
<!DOCTYPE html>
<html>
<head>
<title>My Learning Progress</title>
<style>
.completed { text-decoration: line-through; opacity: 0.6; }
.lesson { cursor: pointer; padding: 4px; }
.lesson:hover { background: #f0f0f0; }
</style>
</head>
<body>
<h1>Progress Tracker</h1>
<div id="curriculum"></div>
<script>
const STORAGE_KEY = 'curriculum_progress';
// Load saved progress
const progress = JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}');
fetch('https://YOURSITE.netlify.app/api/curriculum.json')
.then(r => r.json())
.then(data => {
const html = data.clusters.map(cluster => `
<h2>${cluster.title}</h2>
<ul>
${cluster.lessons.map(lesson => `
<li class="lesson ${progress[lesson.id] ? 'completed' : ''}"
onclick="toggleLesson('${lesson.id}', this)">
${lesson.title}
</li>
`).join('')}
</ul>
`).join('');
document.getElementById('curriculum').innerHTML = html;
updateStats(data);
});
function toggleLesson(id, element) {
progress[id] = !progress[id];
localStorage.setItem(STORAGE_KEY, JSON.stringify(progress));
element.classList.toggle('completed');
}
</script>
</body>
</html>
This saves progress to the browser's local storage. Click a lesson to mark it complete.
More Advanced Options:
- Add a backend to sync progress across devices
- Build a React Native app for mobile
- Integrate with a learning management system
- Add spaced repetition for knowledge checks
Use Case 4: Embedding on Other Sites
The Concept
Display your curriculum on another websiteâa blog, documentation site, or partner page.
How to Build It
Embeddable Widget:
<!-- Add this where you want the curriculum to appear -->
<div id="curriculum-embed"></div>
<script>
fetch('https://YOURSITE.netlify.app/api/curriculum.json')
.then(r => r.json())
.then(data => {
document.getElementById('curriculum-embed').innerHTML = `
<h3>${data.site.name}</h3>
<p>${data.stats.totalClusters} modules, ${data.stats.totalLessons} lessons</p>
<ul>
${data.clusters.map(c =>
`<li><a href="${c.url}">${c.title}</a> (${c.lessons.length} lessons)</li>`
).join('')}
</ul>
<a href="${data.site.url}">View full curriculum â</a>
`;
});
</script>
Anyone can add this snippet to their site to display your curriculum structure with links back to your site.
Use Case 5: Analytics and Visualization
The Concept
Visualize your curriculum's structure and growth over time.
Ideas
- Curriculum map: D3.js visualization showing clusters and lessons as a network
- Growth chart: Track how many lessons you've added over time
- Coverage analysis: See which topics have the most/least content
- Complexity metrics: Analyze lesson lengths, concept counts, etc.
Simple Stats Dashboard
fetch('https://YOURSITE.netlify.app/api/curriculum.json')
.then(r => r.json())
.then(data => {
console.log('Curriculum Stats:');
console.log(`Total Clusters: ${data.stats.totalClusters}`);
console.log(`Total Lessons: ${data.stats.totalLessons}`);
console.log(`Average lessons per cluster: ${(data.stats.totalLessons / data.stats.totalClusters).toFixed(1)}`);
data.clusters.forEach(c => {
console.log(` ${c.title}: ${c.lessons.length} lessons`);
});
});
Use Case 6: Content Syndication
The Concept
Feed your curriculum into other platforms:
- Learning Management Systems (Moodle, Canvas): Import course structure
- Documentation generators: Pull content into docs
- Email courses: Drip lessons to subscribers
- Podcast show notes: Link to relevant lessons
How It Works
Most platforms that import content accept:
- RSS for sequential content
- JSON for structured data
- OPML for outlines (you could generate this from the API)
The key is that your curriculum is the source of truth. Other systems read from it rather than duplicating content.
Best Practices
Rate Limiting
The API caches for 1 hour. If you're building a high-traffic application, cache responses on your end too.
Error Handling
Always handle fetch errors gracefully:
fetch(url)
.then(r => {
if (!r.ok) throw new Error('Failed to fetch');
return r.json();
})
.catch(err => {
console.error('Could not load curriculum:', err);
// Show fallback UI
});
Attribution
If you build something cool with someone else's curriculum API, consider crediting them and linking back.
What Will You Build?
The APIs are ready. The use cases are endless:
- A study buddy AI that knows your material
- Automatic social posting when you publish
- A mobile app for learning on the go
- A dashboard to track your curriculum's growth
- Integrations with tools your audience already uses
Start with one simple integration. Once you see how easy it is, you'll think of many more.
Assignment
Choose one integration to explore:
Option A: AI Assistant Setup
- Copy your curriculum JSON from
/api/curriculum.json - Create a new Claude Project or Custom GPT
- Paste the JSON as knowledge/context
- Test by asking "What topics does this curriculum cover?" or "Which lesson should I read to learn about X?"
Option B: RSS Automation
- Sign up for Zapier (free tier) or Make
- Create a new automation with RSS as the trigger
- Use your
/feed.xmlURL as the feed source - Configure an action (email, Slack, etc.)
- Test by adding a new lesson and watching the automation trigger
Option C: Simple Dashboard
- Create an HTML file with the starter code shown below
- Replace
YOURSITEwith your actual domain - Open the HTML file in a browser
AI Integration
AI assistants can consume your curriculum via the JSON API:
- Claude Projects: Add your curriculum JSON as project knowledge for a curriculum-aware assistant
- Custom GPTs: Upload curriculum data to build a "curriculum guide"
- Tutoring bots: Point any AI at
/api/curriculum.jsonand it instantly understands your content
The structured format makes it easy for AI to understand relationships between clusters, lessons, and concepts.
Automation & Syndication
The RSS feed integrates with automation platforms like Zapier, Make, and IFTTT. When you publish a new lesson, automatically tweet about it, notify a Discord channel, or send a newsletter.
The API also enables syndicationâpull your curriculum into documentation sites, learning management systems, or partner sites. Your API is the single source of truth.
Custom Applications
Build custom tools on top of the JSON API:
- Progress trackers: Track which lessons a user has completed
- Embeddable widgets: Show a lesson list on another website
- Mobile apps: Create a native app that fetches your curriculum
Since the API supports CORS, client-side JavaScript can fetch data directly from any domain.
Why is structured JSON better than scraping HTML for AI integrations?
Hint: Think about reliability, clarity of relationships, and maintenance.
What's a practical automation you could build with the RSS feed for your curriculum?
Hint: Consider how you'd want to notify your audience about new content.
Claude Projects Documentation
How to create Claude Projects with custom knowledge.