# Subscribe to AIXplore
<div class="subscribe-container">
## Never Miss an Article
Get a daily digest of new articles delivered to your inbox at 9 AM ET. No spam, unsubscribe anytime.
<form id="subscribe-form">
<input
type="email"
id="email"
name="email"
placeholder="
[email protected]"
required
aria-label="Email address"
/>
<input
type="text"
id="name"
name="name"
placeholder="Name (optional)"
aria-label="Your name"
/>
<button type="submit" id="submit-btn">
<span class="btn-text">Subscribe</span>
<span class="btn-loading" style="display:none;">Subscribing...</span>
</button>
</form>
<div id="message" class="message"></div>
<p class="privacy-note">
By subscribing, you agree to receive email updates about new articles.
We respect your privacy and you can unsubscribe at any time.
</p>
</div>
---
## What You'll Get
- **Daily Digest**: One email per day (max) with all new articles
- **Quality Content**: In-depth tutorials, technical analysis, and practical guides
- **No Spam**: Only sent when there's new content to share
- **Easy Unsubscribe**: One click to stop emails anytime
## Topics Covered
- AI agent development and orchestration
- LLM application architecture
- Production AI systems
- Latest model releases and research
- Real-world case studies and lessons learned
## RSS Feed
Prefer RSS? Subscribe with your favorite reader:
**Feed URL**: `https://ai.rundatarun.io/rss.xml`
Popular readers: [Feedly](https://feedly.com/), [Inoreader](https://www.inoreader.com/), [NetNewsWire](https://netnewswire.com/)
---
## Recent Articles
- [[building-effective-ai-agents-openai-guide|Building Effective AI Agents: OpenAI's Practical Guide]]
- [[model-context-protocol-implementation|Model Context Protocol Implementation]]
- [[Knowledge/Blog-Obsidian/Practical Applications/claude-skills-vs-mcp-servers|Claude Skills vs MCP Servers]]
---
Questions? Reach out on [Twitter/X](https://twitter.com/bioinfo)
<style>
.subscribe-container {
max-width: 500px;
margin: 40px auto;
padding: 30px;
background: var(--background-secondary);
border-radius: 8px;
border: 2px solid #219EBC;
}
#subscribe-form {
display: flex;
flex-direction: column;
gap: 12px;
margin: 20px 0;
}
#subscribe-form input {
padding: 12px;
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
font-size: 16px;
background: var(--background-primary);
color: var(--text-normal);
}
#subscribe-form input:focus {
outline: none;
border-color: #219EBC;
}
#subscribe-form button {
padding: 12px;
background: #219EBC;
color: white;
border: none;
border-radius: 4px;
font-size: 16px;
font-weight: 600;
cursor: pointer;
transition: background 0.3s;
}
#subscribe-form button:hover {
background: #1a7a94;
}
#subscribe-form button:disabled {
background: #ccc;
cursor: not-allowed;
}
.message {
margin-top: 15px;
padding: 12px;
border-radius: 4px;
display: none;
}
.message.success {
background: #d4edda;
color: #155724;
border: 1px solid #c3e6cb;
display: block;
}
.message.error {
background: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
display: block;
}
.privacy-note {
font-size: 12px;
color: var(--text-muted);
margin-top: 15px;
}
@media (max-width: 600px) {
.subscribe-container {
margin: 20px;
padding: 20px;
}
}
</style>
<script>
document.getElementById('subscribe-form').addEventListener('submit', async (e) => {
e.preventDefault();
const btn = document.getElementById('submit-btn');
const message = document.getElementById('message');
const email = document.getElementById('email').value;
const name = document.getElementById('name').value;
btn.disabled = true;
document.querySelector('.btn-text').style.display = 'none';
document.querySelector('.btn-loading').style.display = 'inline';
message.style.display = 'none';
try {
const response = await fetch('https://subscribe.rundatarun.io/api/subscribe', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email, name })
});
const data = await response.json();
if (response.ok) {
message.className = 'message success';
message.textContent = 'Success! Check your email to confirm your subscription.';
message.style.display = 'block';
document.getElementById('subscribe-form').reset();
} else {
throw new Error(data.error || 'Subscription failed');
}
} catch (error) {
message.className = 'message error';
message.textContent = error.message + '. Please try again.';
message.style.display = 'block';
} finally {
btn.disabled = false;
document.querySelector('.btn-text').style.display = 'inline';
document.querySelector('.btn-loading').style.display = 'none';
}
});
</script>