Add blog section: 2x2 grid with search, pagination, and 8 sample posts

This commit is contained in:
Oliver
2026-06-10 05:10:08 -03:00
parent 595f32bbfa
commit 23503d8c97
11 changed files with 1043 additions and 24 deletions
+68
View File
@@ -0,0 +1,68 @@
{
"posts": [
{
"id": "create-first-agent-5-min",
"date": "2026-06-10",
"area": "howto",
"headline": "How to Create Your First AI Agent in 5 Minutes",
"teaser": "From signup to a working agent. No coding required, full SSH access included.",
"link": "blog/posts/create-first-agent-5-min.html"
},
{
"id": "derezai-launches-managed-hosting",
"date": "2026-06-08",
"area": "news",
"headline": "Derez.ai Launches Managed Agent Hosting — Hermes Agents for Everyone",
"teaser": "We're live. Deploy a Hermes Agent on a dedicated Linux instance with one-click backups and a management dashboard.",
"link": "blog/posts/derezai-launches-managed-hosting.html"
},
{
"id": "cold-email-agent-setup",
"date": "2026-06-05",
"area": "howto",
"headline": "Building a Cold Email Agent: From Setup to First Send",
"teaser": "A walkthrough on configuring a Hermes Agent for cold outreach — research, draft, and send in one pipeline.",
"link": "blog/posts/cold-email-agent-setup.html"
},
{
"id": "ai-agent-trends-2026",
"date": "2026-06-01",
"area": "news",
"headline": "AI Agent Trends to Watch in 2026",
"teaser": "Autonomous agents, multi-agent orchestration, and the shift from chatbots to doers.",
"link": "blog/posts/ai-agent-trends-2026.html"
},
{
"id": "hermes-agent-custom-tools",
"date": "2026-05-28",
"area": "howto",
"headline": "Extending Hermes Agent with Custom Tools and Skills",
"teaser": "How to write your own skills, add API tools, and teach your agent new tricks.",
"link": "blog/posts/hermes-agent-custom-tools.html"
},
{
"id": "video-script-automation-agent",
"date": "2026-05-25",
"area": "video-scripts",
"headline": "AI Agent Script: Automating YouTube Content Research",
"teaser": "Full walkthrough of a video script agent that researches topics, outlines episodes, and writes drafts.",
"link": "blog/posts/video-script-automation-agent.html"
},
{
"id": "migrate-to-derezai",
"date": "2026-05-20",
"area": "howto",
"headline": "How to Migrate Your Existing AI Agent to Derez.ai",
"teaser": "Moving from self-hosted or another provider — SSH, config, and data migration in 10 minutes.",
"link": "blog/posts/migrate-to-derezai.html"
},
{
"id": "agent-backup-restore-guide",
"date": "2026-05-15",
"area": "howto",
"headline": "One-Click Backups and Restores: Your Agent Data Is Safe",
"teaser": "How the backup system works, what gets saved, and how to restore from any point in time.",
"link": "blog/posts/agent-backup-restore-guide.html"
}
]
}
@@ -0,0 +1,80 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="index, follow" />
<link rel="canonical" href="https://derez.ai/blog/posts/agent-backup-restore-guide.html" />
<title>One-Click Backups and Restores: Your Agent Data Is Safe — Derez.ai Blog</title>
<meta name="description" content="How the backup system works, what gets saved, and how to restore from any point in time." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://derez.ai/blog/posts/agent-backup-restore-guide.html" />
<meta property="og:title" content="One-Click Backups and Restores: Your Agent Data Is Safe" />
<meta property="og:description" content="How the backup system works, what gets saved, and how to restore from any point in time." />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="One-Click Backups and Restores: Your Agent Data Is Safe" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: #08080c;
color: #e8e8f0;
font-family: 'Inter', sans-serif;
line-height: 1.7;
padding: 40px 20px;
}
.container { max-width: 720px; margin: 0 auto; }
a { color: #00f5ff; text-decoration: none; }
a:hover { text-decoration: underline; }
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
.back:hover { color: #00f5ff; }
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; }
.area-tag {
display: inline-block;
background: rgba(0,245,255,0.1);
color: #00f5ff;
font-size: 0.75rem;
padding: 2px 10px;
border-radius: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
p { margin-bottom: 16px; color: #c8c8d8; }
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
strong { color: #f0f0ff; }
@media (max-width: 600px) {
body { padding: 24px 16px; }
h1 { font-size: 1.5rem; }
}
</style>
</head>
<body>
<div class="container">
<a class="back" href="https://derez.ai/#blog">&larr; Back to Blog</a>
<h1>One-Click Backups and Restores: Your Agent Data Is Safe</h1>
<div class="meta">
<span>May 15, 2026</span>
<span class="area-tag">howto</span>
</div>
<h2>Don't Lose Your Agent</h2>
<p>Your agent's configuration, skills, tools, and memory represent real work. Losing them would be painful. That's why every Derez.ai plan includes automatic daily backups with one-click restore.</p>
<h2>What Gets Backed Up</h2>
<p>Every 24 hours, we snapshot your entire instance: the Hermes Agent config, all skills and tools, the agent's memory and conversation history, environment variables and API keys, and your custom scripts and data files.</p>
<h2>How Restore Works</h2>
<p>From the app.derez.ai dashboard, click "Restore" on any backup. The process takes under 2 minutes. Your agent comes back exactly as it was at the time of that backup — config, data, everything.</p>
<h2>Best Practices</h2>
<p>Backups run automatically, but here's our advice: restore test your backups monthly (spin up a test instance, restore, verify it works), keep critical config files version-controlled (git push your SKILL.md files), and use the dashboard to label important backups before making big changes.</p>
<p>If something goes wrong — a bad config push, a corrupted skill, an accidental deletion — you're never more than two minutes away from a known-good state.</p>
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
<a href="https://derez.ai" style="color:#00f5ff">Derez.ai</a> — Deploy your AI agent in 5 minutes.
</p>
</div>
</body>
</html>
+81
View File
@@ -0,0 +1,81 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="index, follow" />
<link rel="canonical" href="https://derez.ai/blog/posts/ai-agent-trends-2026.html" />
<title>AI Agent Trends to Watch in 2026 — Derez.ai Blog</title>
<meta name="description" content="Autonomous agents, multi-agent orchestration, and the shift from chatbots to doers." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://derez.ai/blog/posts/ai-agent-trends-2026.html" />
<meta property="og:title" content="AI Agent Trends to Watch in 2026" />
<meta property="og:description" content="Autonomous agents, multi-agent orchestration, and the shift from chatbots to doers." />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="AI Agent Trends to Watch in 2026" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: #08080c;
color: #e8e8f0;
font-family: 'Inter', sans-serif;
line-height: 1.7;
padding: 40px 20px;
}
.container { max-width: 720px; margin: 0 auto; }
a { color: #00f5ff; text-decoration: none; }
a:hover { text-decoration: underline; }
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
.back:hover { color: #00f5ff; }
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; }
.area-tag {
display: inline-block;
background: rgba(0,245,255,0.1);
color: #00f5ff;
font-size: 0.75rem;
padding: 2px 10px;
border-radius: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
p { margin-bottom: 16px; color: #c8c8d8; }
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
strong { color: #f0f0ff; }
@media (max-width: 600px) {
body { padding: 24px 16px; }
h1 { font-size: 1.5rem; }
}
</style>
</head>
<body>
<div class="container">
<a class="back" href="https://derez.ai/#blog">&larr; Back to Blog</a>
<h1>AI Agent Trends to Watch in 2026</h1>
<div class="meta">
<span>June 1, 2026</span>
<span class="area-tag">news</span>
</div>
<h2>The Year of the Agent</h2>
<p>2025 was about chatbots that could answer questions. 2026 is about agents that do things — send emails, update databases, deploy code, manage workflows. The shift from passive to active AI is the defining trend.</p>
<h2>Multi-Agent Orchestration</h2>
<p>Instead of one agent doing everything, we're seeing architectures where specialized agents collaborate: one researches, one drafts, one reviews, one sends. This mirrors how human teams work and produces better results than a single generalist agent.</p>
<h2>Agent-as-a-Service</h2>
<p>Hosted agents are becoming a category. Companies like Derez.ai let you deploy and manage agents without worrying about infrastructure. Expect this to accelerate as more businesses realize the operational overhead of self-hosting.</p>
<h2>Tool-Using Agents</h2>
<p>Modern agents don't just generate text — they use APIs, query databases, run code, and interact with web services. The ability to call tools reliably is what separates a useful agent from a novelty.</p>
<h2>What This Means for You</h2>
<p>If you're not already running agents for your workflow, 2026 is the year to start. The barrier is lower than ever: $9.50/month gets you a fully managed Hermes Agent with tools, backups, and a dashboard. The question isn't whether agents will be part of your stack — it's which tasks you'll delegate first.</p>
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
<a href="https://derez.ai" style="color:#00f5ff">Derez.ai</a> — Deploy your AI agent in 5 minutes.
</p>
</div>
</body>
</html>
+84
View File
@@ -0,0 +1,84 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="index, follow" />
<link rel="canonical" href="https://derez.ai/blog/posts/cold-email-agent-setup.html" />
<title>Building a Cold Email Agent: From Setup to First Send — Derez.ai Blog</title>
<meta name="description" content="A walkthrough on configuring a Hermes Agent for cold outreach — research, draft, and send in one pipeline." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://derez.ai/blog/posts/cold-email-agent-setup.html" />
<meta property="og:title" content="Building a Cold Email Agent: From Setup to First Send" />
<meta property="og:description" content="A walkthrough on configuring a Hermes Agent for cold outreach — research, draft, and send in one pipeline." />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Building a Cold Email Agent: From Setup to First Send" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: #08080c;
color: #e8e8f0;
font-family: 'Inter', sans-serif;
line-height: 1.7;
padding: 40px 20px;
}
.container { max-width: 720px; margin: 0 auto; }
a { color: #00f5ff; text-decoration: none; }
a:hover { text-decoration: underline; }
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
.back:hover { color: #00f5ff; }
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; }
.area-tag {
display: inline-block;
background: rgba(0,245,255,0.1);
color: #00f5ff;
font-size: 0.75rem;
padding: 2px 10px;
border-radius: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
p { margin-bottom: 16px; color: #c8c8d8; }
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
strong { color: #f0f0ff; }
@media (max-width: 600px) {
body { padding: 24px 16px; }
h1 { font-size: 1.5rem; }
}
</style>
</head>
<body>
<div class="container">
<a class="back" href="https://derez.ai/#blog">&larr; Back to Blog</a>
<h1>Building a Cold Email Agent: From Setup to First Send</h1>
<div class="meta">
<span>June 5, 2026</span>
<span class="area-tag">howto</span>
</div>
<h2>The Cold Email Use Case</h2>
<p>Cold email is repetitive — research prospects, write a personalized draft, send, follow up. It's the perfect job for an AI agent. Here's how to set one up on Derez.ai.</p>
<h2>What Your Agent Needs</h2>
<p>Your cold email agent needs three things: a research tool (to find prospects and learn about their business), an email-sending integration (SMTP or API), and a clear prompt that defines your voice and process. We cover all three.</p>
<h2>Step 1: Configure the Prompt</h2>
<p>In the app.derez.ai dashboard, give your agent a role: <em>"You are a B2B outreach specialist for [Company]. Research each prospect, write a personalized first email, and send it."</em> Attach your prospect list or connect a CRM via the tools section.</p>
<h2>Step 2: Connect Email</h2>
<p>Hermes Agent supports SMTP and email APIs out of the box. Add your email credentials in the agent's environment settings, and your agent can send emails directly from the conversation.</p>
<h2>Step 3: Add Research Skills</h2>
<p>Your agent can use web search to research each prospect's company, recent news, and LinkedIn profile before writing. This makes each email genuinely personalized — not a template with a name swapped in.</p>
<h2>Step 4: Test and Launch</h2>
<p>Run a few test emails to yourself first. Tweak the tone in the prompt until it sounds right. Then add your prospect list and let the agent work through it. Follow-ups can be scheduled as separate tasks.</p>
<p>The result? Each prospect gets a researched, personalized email written and sent — while you focus on the replies that matter.</p>
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
<a href="https://derez.ai" style="color:#00f5ff">Derez.ai</a> — Deploy your AI agent in 5 minutes.
</p>
</div>
</body>
</html>
+82
View File
@@ -0,0 +1,82 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="index, follow" />
<link rel="canonical" href="https://derez.ai/blog/posts/create-first-agent-5-min.html" />
<title>How to Create Your First AI Agent in 5 Minutes — Derez.ai Blog</title>
<meta name="description" content="From signup to a working Hermes Agent in under 5 minutes. No coding required, full SSH access included." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://derez.ai/blog/posts/create-first-agent-5-min.html" />
<meta property="og:title" content="How to Create Your First AI Agent in 5 Minutes" />
<meta property="og:description" content="From signup to a working Hermes Agent in under 5 minutes. No coding required, full SSH access included." />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="How to Create Your First AI Agent in 5 Minutes" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: #08080c;
color: #e8e8f0;
font-family: 'Inter', sans-serif;
line-height: 1.7;
padding: 40px 20px;
}
.container { max-width: 720px; margin: 0 auto; }
a { color: #00f5ff; text-decoration: none; }
a:hover { text-decoration: underline; }
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
.back:hover { color: #00f5ff; }
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; }
.area-tag {
display: inline-block;
background: rgba(0,245,255,0.1);
color: #00f5ff;
font-size: 0.75rem;
padding: 2px 10px;
border-radius: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
p { margin-bottom: 16px; color: #c8c8d8; }
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
strong { color: #f0f0ff; }
@media (max-width: 600px) {
body { padding: 24px 16px; }
h1 { font-size: 1.5rem; }
}
</style>
</head>
<body>
<div class="container">
<a class="back" href="https://derez.ai/#blog">&larr; Back to Blog</a>
<h1>How to Create Your First AI Agent in 5 Minutes</h1>
<div class="meta">
<span>June 10, 2026</span>
<span class="area-tag">howto</span>
</div>
<h2>It Really Takes 5 Minutes</h2>
<p>We built Derez.ai around a simple bet: deploying an AI agent should be faster than ordering coffee. Here's the exact flow, start to finish.</p>
<h2>Step 1: Choose Your Agent</h2>
<p>Head to the pricing section and pick a plan. Trainee ($4.99/mo) is great for testing, Junior ($9.50/mo, our most popular) runs a full Hermes Agent, and Senior ($17.50/mo) gives you the most powerful configuration. Each plan includes OpenRouter credits equal to your monthly subscription.</p>
<h2>Step 2: Configure and Pay</h2>
<p>Select your agent type (Hermes Agent recommended), choose your billing period, and optionally apply a coupon code. If you're an early adopter, use <strong>friends950</strong> for $9.50 off your first month. Complete the Stripe checkout and your instance spins up within seconds.</p>
<h2>Step 3: Set Up Your Prompt</h2>
<p>Once payment succeeds, you're redirected to your agent dashboard at <strong>app.derez.ai</strong>. The prompt builder walks you through configuring your agent's personality, tools, and knowledge. A cold email agent, a research assistant, a support bot — whatever you need, the builder makes it straightforward.</p>
<h2>Step 4: Go Live</h2>
<p>Hit deploy and your agent is live with full SSH access, automatic daily backups, and a real-time dashboard. You can tweak the prompt, add skills, or connect external tools any time. That's it — under 5 minutes, no exaggeration.</p>
<p>Ready to try it? <a href="https://derez.ai/#pricing" style="color:var(--accent,#00f5ff)">Pick a plan and deploy your agent now.</a></p>
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
<a href="https://derez.ai" style="color:#00f5ff">Derez.ai</a> — Deploy your AI agent in 5 minutes.
</p>
</div>
</body>
</html>
@@ -0,0 +1,80 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="index, follow" />
<link rel="canonical" href="https://derez.ai/blog/posts/derezai-launches-managed-hosting.html" />
<title>Derez.ai Launches Managed Agent Hosting — Hermes Agents for Everyone — Derez.ai Blog</title>
<meta name="description" content="We're live. Deploy a Hermes Agent on a dedicated Linux instance with one-click backups and a management dashboard." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://derez.ai/blog/posts/derezai-launches-managed-hosting.html" />
<meta property="og:title" content="Derez.ai Launches Managed Agent Hosting — Hermes Agents for Everyone" />
<meta property="og:description" content="We're live. Deploy a Hermes Agent on a dedicated Linux instance with one-click backups and a management dashboard." />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Derez.ai Launches Managed Agent Hosting — Hermes Agents for Everyone" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: #08080c;
color: #e8e8f0;
font-family: 'Inter', sans-serif;
line-height: 1.7;
padding: 40px 20px;
}
.container { max-width: 720px; margin: 0 auto; }
a { color: #00f5ff; text-decoration: none; }
a:hover { text-decoration: underline; }
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
.back:hover { color: #00f5ff; }
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; }
.area-tag {
display: inline-block;
background: rgba(0,245,255,0.1);
color: #00f5ff;
font-size: 0.75rem;
padding: 2px 10px;
border-radius: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
p { margin-bottom: 16px; color: #c8c8d8; }
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
strong { color: #f0f0ff; }
@media (max-width: 600px) {
body { padding: 24px 16px; }
h1 { font-size: 1.5rem; }
}
</style>
</head>
<body>
<div class="container">
<a class="back" href="https://derez.ai/#blog">&larr; Back to Blog</a>
<h1>Derez.ai Launches Managed Agent Hosting — Hermes Agents for Everyone</h1>
<div class="meta">
<span>June 8, 2026</span>
<span class="area-tag">news</span>
</div>
<h2>Today We Go Live</h2>
<p>After months of building, testing, and refining, Derez.ai is officially open for business. Our mission: make AI agent deployment as simple as spinning up a cloud VM — but with all the hard parts handled for you.</p>
<h2>What We Offer</h2>
<p>Every Derez.ai plan includes a dedicated Linux instance running Hermes Agent by Nous Research. You get full SSH access, automatic daily backups, a management dashboard for prompt and API key management, and support via in-page chat. No shared infrastructure, no hidden limits.</p>
<p>The dashboard lets you monitor agent activity, adjust prompts on the fly, manage API keys, and restore from backup with one click. It's the control panel that makes agent hosting feel like a product, not a project.</p>
<h2>Why Managed Matters</h2>
<p>Running an AI agent yourself means dealing with server setup, dependency management, backup scripts, monitoring, and security patches. We handle all of that so you can focus on what your agent does, not how it stays online.</p>
<h2>Special Launch Pricing</h2>
<p>Use coupon code <strong>creator950</strong> or <strong>friends950</strong> at checkout for $9.50 off your first month — bringing the Junior plan to $0.00 on month one. It's our way of saying thanks to the early community.</p>
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
<a href="https://derez.ai" style="color:#00f5ff">Derez.ai</a> — Deploy your AI agent in 5 minutes.
</p>
</div>
</body>
</html>
+81
View File
@@ -0,0 +1,81 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="index, follow" />
<link rel="canonical" href="https://derez.ai/blog/posts/hermes-agent-custom-tools.html" />
<title>Extending Hermes Agent with Custom Tools and Skills — Derez.ai Blog</title>
<meta name="description" content="How to write your own skills, add API tools, and teach your agent new tricks." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://derez.ai/blog/posts/hermes-agent-custom-tools.html" />
<meta property="og:title" content="Extending Hermes Agent with Custom Tools and Skills" />
<meta property="og:description" content="How to write your own skills, add API tools, and teach your agent new tricks." />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Extending Hermes Agent with Custom Tools and Skills" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: #08080c;
color: #e8e8f0;
font-family: 'Inter', sans-serif;
line-height: 1.7;
padding: 40px 20px;
}
.container { max-width: 720px; margin: 0 auto; }
a { color: #00f5ff; text-decoration: none; }
a:hover { text-decoration: underline; }
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
.back:hover { color: #00f5ff; }
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; }
.area-tag {
display: inline-block;
background: rgba(0,245,255,0.1);
color: #00f5ff;
font-size: 0.75rem;
padding: 2px 10px;
border-radius: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
p { margin-bottom: 16px; color: #c8c8d8; }
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
strong { color: #f0f0ff; }
@media (max-width: 600px) {
body { padding: 24px 16px; }
h1 { font-size: 1.5rem; }
}
</style>
</head>
<body>
<div class="container">
<a class="back" href="https://derez.ai/#blog">&larr; Back to Blog</a>
<h1>Extending Hermes Agent with Custom Tools and Skills</h1>
<div class="meta">
<span>May 28, 2026</span>
<span class="area-tag">howto</span>
</div>
<h2>Beyond the Built-Ins</h2>
<p>Hermes Agent ships with a powerful set of tools — web search, file manipulation, terminal access, browser automation. But the real power is in extending it with your own custom skills.</p>
<h2>What Are Skills?</h2>
<p>Skills are markdown files that teach your agent how to handle specific tasks. They live in <code>~/.hermes/skills/</code> and are loaded by name when needed. A skill might define a workflow for "code review" or "deploying a static site" with exact commands and pitfalls.</p>
<h2>Writing Your First Skill</h2>
<p>Create a file at <code>~/.hermes/skills/my-skill/SKILL.md</code> with YAML frontmatter (name, description, tags) and a markdown body. The body is the instruction your agent follows when the skill is loaded. Use numbered steps, include exact commands, and add a pitfalls section.</p>
<h2>Adding API Tools</h2>
<p>For external API access (your CRM, Slack, GitHub), write a Python script and register it in the agent's config. The agent can then call it like any other tool. This is how you connect your agent to your actual business systems.</p>
<h2>Sharing Skills</h2>
<p>Skills are portable — share them between agents or with the community. A well-written skill saves hours of repeated setup and makes every agent you deploy smarter from day one.</p>
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
<a href="https://derez.ai" style="color:#00f5ff">Derez.ai</a> — Deploy your AI agent in 5 minutes.
</p>
</div>
</body>
</html>
+83
View File
@@ -0,0 +1,83 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="index, follow" />
<link rel="canonical" href="https://derez.ai/blog/posts/migrate-to-derezai.html" />
<title>How to Migrate Your Existing AI Agent to Derez.ai — Derez.ai Blog</title>
<meta name="description" content="Moving from self-hosted or another provider — SSH, config, and data migration in 10 minutes." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://derez.ai/blog/posts/migrate-to-derezai.html" />
<meta property="og:title" content="How to Migrate Your Existing AI Agent to Derez.ai" />
<meta property="og:description" content="Moving from self-hosted or another provider — SSH, config, and data migration in 10 minutes." />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="How to Migrate Your Existing AI Agent to Derez.ai" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: #08080c;
color: #e8e8f0;
font-family: 'Inter', sans-serif;
line-height: 1.7;
padding: 40px 20px;
}
.container { max-width: 720px; margin: 0 auto; }
a { color: #00f5ff; text-decoration: none; }
a:hover { text-decoration: underline; }
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
.back:hover { color: #00f5ff; }
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; }
.area-tag {
display: inline-block;
background: rgba(0,245,255,0.1);
color: #00f5ff;
font-size: 0.75rem;
padding: 2px 10px;
border-radius: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
p { margin-bottom: 16px; color: #c8c8d8; }
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
strong { color: #f0f0ff; }
@media (max-width: 600px) {
body { padding: 24px 16px; }
h1 { font-size: 1.5rem; }
}
</style>
</head>
<body>
<div class="container">
<a class="back" href="https://derez.ai/#blog">&larr; Back to Blog</a>
<h1>How to Migrate Your Existing AI Agent to Derez.ai</h1>
<div class="meta">
<span>May 20, 2026</span>
<span class="area-tag">howto</span>
</div>
<h2>Already Running an Agent?</h2>
<p>If you have an existing AI agent setup — whether self-hosted on a VPS or with another provider — moving to Derez.ai is straightforward. Here's the migration playbook.</p>
<h2>Step 1: Spin Up Your Derez Instance</h2>
<p>Sign up and deploy a new agent via the dashboard. You'll get SSH credentials within seconds. This becomes your new home.</p>
<h2>Step 2: Transfer Config Files</h2>
<p>Use SCP or rsync to copy your agent config, skills, and any custom scripts from your old server to the new one. Your Derez instance is a standard Linux system — anything that ran on your old VPS will run here.</p>
<h2>Step 3: Migrate Data</h2>
<p>If your agent has a database or state files, copy them over the same way. The one-click backup system on Derez.ai will then take over — your first automatic backup happens within 24 hours.</p>
<h2>Step 4: Update DNS and Integrations</h2>
<p>Point any webhooks, API endpoints, or DNS records to your new agent's IP. Flush old configs. Test the pipeline: if your agent sent emails, send a test. If it posted to Slack, trigger a test post.</p>
<h2>Step 5: Decommission the Old Instance</h2>
<p>Once everything is verified working on Derez.ai, shut down your old server. You're now on managed infrastructure with automatic backups, a dashboard, and support. No more 3 AM server alerts.</p>
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
<a href="https://derez.ai" style="color:#00f5ff">Derez.ai</a> — Deploy your AI agent in 5 minutes.
</p>
</div>
</body>
</html>
@@ -0,0 +1,81 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="index, follow" />
<link rel="canonical" href="https://derez.ai/blog/posts/video-script-automation-agent.html" />
<title>AI Agent Script: Automating YouTube Content Research — Derez.ai Blog</title>
<meta name="description" content="Full walkthrough of a video script agent that researches topics, outlines episodes, and writes drafts." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://derez.ai/blog/posts/video-script-automation-agent.html" />
<meta property="og:title" content="AI Agent Script: Automating YouTube Content Research" />
<meta property="og:description" content="Full walkthrough of a video script agent that researches topics, outlines episodes, and writes drafts." />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="AI Agent Script: Automating YouTube Content Research" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: #08080c;
color: #e8e8f0;
font-family: 'Inter', sans-serif;
line-height: 1.7;
padding: 40px 20px;
}
.container { max-width: 720px; margin: 0 auto; }
a { color: #00f5ff; text-decoration: none; }
a:hover { text-decoration: underline; }
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
.back:hover { color: #00f5ff; }
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; }
.area-tag {
display: inline-block;
background: rgba(0,245,255,0.1);
color: #00f5ff;
font-size: 0.75rem;
padding: 2px 10px;
border-radius: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
p { margin-bottom: 16px; color: #c8c8d8; }
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
strong { color: #f0f0ff; }
@media (max-width: 600px) {
body { padding: 24px 16px; }
h1 { font-size: 1.5rem; }
}
</style>
</head>
<body>
<div class="container">
<a class="back" href="https://derez.ai/#blog">&larr; Back to Blog</a>
<h1>AI Agent Script: Automating YouTube Content Research</h1>
<div class="meta">
<span>May 25, 2026</span>
<span class="area-tag">video-scripts</span>
</div>
<h2>Content Research at Scale</h2>
<p>If you create YouTube content, you know research takes as long as recording. An AI agent can automate the prep work: find trending topics, analyze competitor videos, outline episodes, and draft scripts.</p>
<h2>Agent Workflow</h2>
<p>Prompt your Hermes Agent with: <em>"Research the topic [X]. Find 3 popular videos on YouTube about this topic, summarize their angle, identify what's missing, and outline a 10-minute video that fills the gap."</em></p>
<h2>Adding YouTube Transcripts</h2>
<p>Hermes Agent can pull YouTube transcripts via its tools. Have it analyze the top-performing videos' transcripts, extract the hooks, pacing, and key points. Use that analysis to structure your own script.</p>
<h2>From Outline to Draft</h2>
<p>Once the outline is ready, tell the agent to write the full script in your voice. Include style notes in the prompt: <em>"Write in a conversational tone, use short sentences, include 3 callbacks to earlier points, and end with a CTA."</em></p>
<h2>Results</h2>
<p>What used to take 2 hours of research + 1 hour of writing takes 20 minutes of prompting + editing. The agent handles the first pass; you handle the polish. Repeatable for every episode.</p>
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
<a href="https://derez.ai" style="color:#00f5ff">Derez.ai</a> — Deploy your AI agent in 5 minutes.
</p>
</div>
</body>
</html>
+89 -24
View File
@@ -1,50 +1,115 @@
{
"date": "Tuesday, June 9, 2026",
"updated": "2026-06-09T18:30:00-04:00",
"updated": "2026-06-10T06:00:22-04:00",
"goals": [
{ "current": 1, "note": "CRM: 88 on Hold, 1 Cold (chat lead). Need real emails for outreach." },
{ "current": 0, "note": "No paying customers yet" },
{ "current": 0, "note": "60 YT creators identified — 0 contacted" },
{ "current": 0, "note": "No analytics traffic yet. Plausible set up." },
{ "current": 0, "note": "0 cold emails sent — templates and coupons ready" },
{ "current": 89, "note": "88 Hold + 1 Cold" }
{
"current": 1,
"note": "CRM: 88 on Hold, 1 Cold (chat lead). Need real emails for outreach."
},
{
"current": 0,
"note": "No paying customers yet"
},
{
"current": 0,
"note": "60 YT creators identified \u2014 0 contacted"
},
{
"current": 0,
"note": "No analytics traffic yet. Plausible set up."
},
{
"current": 0,
"note": "0 cold emails sent \u2014 templates and coupons ready"
},
{
"current": 89,
"note": "88 Hold + 1 Cold"
}
],
"campaigns": [
{
"metrics": [0, 0, 0],
"metrics": [
0,
0,
0
],
"items": [
{ "text": "Coupon codes ready: friends950, creator950", "ok": true },
{ "text": "Template signed as Mark — Customer Success Agent", "ok": true },
{ "text": "No Cold contacts with real emails yet", "ok": false }
{
"text": "Coupon codes ready: friends950, creator950",
"ok": true
},
{
"text": "Template signed as Mark \u2014 Customer Success Agent",
"ok": true
},
{
"text": "No Cold contacts with real emails yet",
"ok": false
}
]
},
{
"metrics": [60, 0, 0],
"metrics": [
60,
0,
0
],
"items": [
{ "text": "60 YouTube creators collected on Hold", "ok": true },
{ "text": "Need business emails for top 20", "ok": false },
{ "text": "Affiliate program TBD", "ok": false }
{
"text": "60 YouTube creators collected on Hold",
"ok": true
},
{
"text": "Need business emails for top 20",
"ok": false
},
{
"text": "Affiliate program TBD",
"ok": false
}
]
},
{
"metrics": [0, 0, 0],
"metrics": [
0,
0,
0
],
"items": [
{ "text": "No outreach started yet", "ok": false },
{ "text": "Profile / company page TBD", "ok": false },
{ "text": "No content strategy defined", "ok": false }
{
"text": "No outreach started yet",
"ok": false
},
{
"text": "Profile / company page TBD",
"ok": false
},
{
"text": "No content strategy defined",
"ok": false
}
]
}
],
"state_of_play": "Prelaunch phase. CRM has 89 contacts (60 YouTube creators on Hold, 1 homepage chat lead). 0 subscriptions, 0 influencers onboarded, 0 cold emails sent. The site is live at derez.ai with pricing, coupon badges (friends950, creator950, friends499, friends1750), and Plausible analytics. Next milestone: first paying customer.",
"comms": {
"inbox": { "total": 4, "last35h": 2 },
"sent": { "total": 8, "last35h": 2 },
"inbox": {
"total": 4,
"last35h": 2
},
"sent": {
"total": 8,
"last35h": 2
},
"alerts": 1
},
"recommendations": [
"Prioritise the top 20 YouTube creators from the 60 collected these are your most winnable influencer channel.",
"Prioritise the top 20 YouTube creators from the 60 collected \u2014 these are your most winnable influencer channel.",
"Unlock cold email outreach by populating real business emails for those 20 creators. The templates and coupons are ready.",
"Set up a LinkedIn company page and start building connections zero presence there currently.",
"Set up a LinkedIn company page and start building connections \u2014 zero presence there currently.",
"Email capturing (newsletter signup or lead magnet) is needed before visitors reach 10K/mo becomes realistic."
]
],
"day": 2,
"notes": "Day 2 auto-update at 06:00 UTC"
}
+234
View File
@@ -1082,6 +1082,132 @@
margin: 0 auto 30px;
}
/* ══════════════════════════════════════════════════════════
BLOG
══════════════════════════════════════════════════════════ */
.blog-search {
max-width: 480px;
margin: -20px auto 32px;
}
.blog-search input {
width: 100%;
padding: 12px 16px;
background: var(--bg-input);
border: 1px solid var(--border);
border-radius: var(--radius);
color: var(--text);
font-family: inherit;
font-size: 14px;
outline: none;
transition: border-color 0.2s;
}
.blog-search input:focus {
border-color: var(--accent);
}
.blog-search input::placeholder {
color: var(--text-muted);
}
.blog-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin-bottom: 32px;
}
.blog-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-card);
padding: 28px;
display: flex;
flex-direction: column;
transition: border-color 0.2s, transform 0.2s;
cursor: pointer;
}
.blog-card:hover {
border-color: var(--accent);
transform: translateY(-2px);
}
.blog-card-area {
display: inline-block;
background: rgba(0,245,255,0.08);
color: var(--accent);
font-size: 0.7rem;
padding: 2px 10px;
border-radius: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
margin-bottom: 12px;
align-self: flex-start;
}
.blog-card-date {
font-size: 0.8rem;
color: var(--text-muted);
margin-bottom: 8px;
}
.blog-card h3 {
font-size: 1.05rem;
font-weight: 600;
line-height: 1.4;
margin-bottom: 10px;
color: var(--text);
}
.blog-card p {
font-size: 0.88rem;
color: var(--text-muted);
line-height: 1.6;
flex: 1;
}
.blog-card-link {
margin-top: 16px;
font-size: 0.85rem;
color: var(--accent);
text-decoration: none;
}
.blog-card:hover .blog-card-link {
text-decoration: underline;
}
.blog-pagination {
display: flex;
justify-content: center;
align-items: center;
gap: 24px;
}
.blog-pagination button {
background: none;
border: 1px solid var(--border);
color: var(--text);
padding: 10px 24px;
border-radius: var(--radius);
cursor: pointer;
font-family: inherit;
font-size: 0.88rem;
transition: border-color 0.2s, color 0.2s;
}
.blog-pagination button:hover:not(:disabled) {
border-color: var(--accent);
color: var(--accent);
}
.blog-pagination button:disabled {
opacity: 0.3;
cursor: default;
}
.blog-page-info {
font-size: 0.85rem;
color: var(--text-muted);
}
.blog-empty {
grid-column: 1 / -1;
text-align: center;
padding: 60px 20px;
color: var(--text-muted);
font-size: 0.95rem;
}
@media (max-width: 700px) {
.blog-grid {
grid-template-columns: 1fr;
}
}
/* ══════════════════════════════════════════════════════════
FOOTER
══════════════════════════════════════════════════════════ */
@@ -2201,6 +2327,28 @@
</section>
<!-- ═══════════════════════════════════════════════════════════════
BLOG
═══════════════════════════════════════════════════════════════ -->
<section id="blog">
<div class="container">
<h2 class="section-title">Latest from the Blog</h2>
<p class="section-sub">Tips, tutorials, and news about AI agents and automation.</p>
<div class="blog-search">
<input type="text" id="blog-search-input" placeholder="Search posts by keyword, area, or headline..." />
</div>
<div class="blog-grid" id="blog-grid"></div>
<div class="blog-pagination" id="blog-pagination">
<button id="blog-prev" onclick="blogPrev()" disabled>&larr; Previous</button>
<span id="blog-page-info" class="blog-page-info"></span>
<button id="blog-next" onclick="blogNext()">Next &rarr;</button>
</div>
</div>
</section>
<!-- ═══════════════════════════════════════════════════════════════
FOOTER
@@ -2722,6 +2870,92 @@
}
document.getElementById('pricing-coupon').addEventListener('input', updateCouponBadges);
/* ── Blog ──────────────────────────────────────────────── */
const BLOG_POSTS_PER_PAGE = 4;
let blogAllPosts = [];
let blogFilteredPosts = [];
let blogCurrentPage = 0;
function blogFormatDate(dateStr) {
const d = new Date(dateStr);
const months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
return months[d.getMonth()] + ' ' + d.getDate() + ', ' + d.getFullYear();
}
function blogRender() {
const start = blogCurrentPage * BLOG_POSTS_PER_PAGE;
const pagePosts = blogFilteredPosts.slice(start, start + BLOG_POSTS_PER_PAGE);
const grid = document.getElementById('blog-grid');
const totalPages = Math.max(1, Math.ceil(blogFilteredPosts.length / BLOG_POSTS_PER_PAGE));
if (pagePosts.length === 0) {
grid.innerHTML = '<div class="blog-empty">No posts match your search.</div>';
document.getElementById('blog-page-info').textContent = '';
document.getElementById('blog-prev').disabled = true;
document.getElementById('blog-next').disabled = true;
return;
}
grid.innerHTML = pagePosts.map(function(p) {
return '<a href="' + p.link + '" class="blog-card" style="text-decoration:none">' +
'<span class="blog-card-area">' + p.area + '</span>' +
'<span class="blog-card-date">' + blogFormatDate(p.date) + '</span>' +
'<h3>' + p.headline + '</h3>' +
'<p>' + p.teaser + '</p>' +
'<span class="blog-card-link">Read more &rarr;</span>' +
'</a>';
}).join('');
document.getElementById('blog-page-info').textContent = 'Page ' + (blogCurrentPage + 1) + ' of ' + totalPages;
document.getElementById('blog-prev').disabled = blogCurrentPage === 0;
document.getElementById('blog-next').disabled = blogCurrentPage >= totalPages - 1;
}
function blogPrev() {
if (blogCurrentPage > 0) {
blogCurrentPage--;
blogRender();
}
}
function blogNext() {
const totalPages = Math.ceil(blogFilteredPosts.length / BLOG_POSTS_PER_PAGE);
if (blogCurrentPage < totalPages - 1) {
blogCurrentPage++;
blogRender();
}
}
function blogFilter() {
const q = document.getElementById('blog-search-input').value.trim().toLowerCase();
if (!q) {
blogFilteredPosts = blogAllPosts.slice();
} else {
blogFilteredPosts = blogAllPosts.filter(function(p) {
return p.headline.toLowerCase().indexOf(q) !== -1 ||
p.teaser.toLowerCase().indexOf(q) !== -1 ||
p.area.toLowerCase().indexOf(q) !== -1;
});
}
blogCurrentPage = 0;
blogRender();
}
// Load blog index
fetch('blog/index.json?_=' + Date.now())
.then(function(r) { return r.json(); })
.then(function(data) {
blogAllPosts = data.posts || [];
blogFilteredPosts = blogAllPosts.slice();
blogRender();
})
.catch(function() {
document.getElementById('blog-grid').innerHTML = '<div class="blog-empty">Blog coming soon.</div>';
});
// Search on input
document.getElementById('blog-search-input').addEventListener('input', blogFilter);
</script>
<div class="pricing-toast" id="pricing-toast"></div>