🚀 July 1 Price Increase Countdown · Today is the cheapest price you'll ever get
14
days
:
00
hours
:
00
mins
:
00
secs
336
Total hours remaining
VS
20
Hours needed to master
Anyone, in any field — just 20 hours will transform you completely
Research shows that the first 20 hours of focused effort in any field will get you to the essentials.
Invest just 1.5 hours a day — 30 days before the July 1st price increase is enough.
You have 336 hours right now.
Investing 20 of those hours into AI —
that's the most precious gift you can give yourself.
🎁 Scrolling down this page right now
is the moment you give yourself AI as a gift.
📈 July 1st Price Increase — Your final chance at the cheapest price everComing soon
✦6 months of live agent operations log — the complete story of failures, fixes, and improvements
✦Advanced techniques for fixing when your bot goes wrong — [Chapter restricted]
✦Multi-agent design framework — Subscribers get first access
Available 6/1 · Book 1 $9.90 · Book 2 $19.90 · Book 3 $29.90 · Book 4 $29.90 · Book 5 $39.90 · Full Package $99.00 · Payment via jbooking.kr
AI Agent Bible ·Cover & Prologue
🎉Volume 5 "The Secret to Getting AI to Work" Now Available— Launches 6/1 · First 100 Copies · Vol 1 $9.99 · Vol 2 $19.99 · Vol 3 $29.99 · Vol 4 $29.99 · Vol 5 Single $39.99 · Full Package $99.99📖 Preview Volume 5 →🎟 Reserve Your Copy
📖 "Bible" does not mean absolute truth. Software business has a beginning but no end — this series is an ongoing record of embracing AI change and adapting every week. Rather than grinding through time and experience yourself — our goal is to get you started.
AI Agent Bible
Bots · Agents · Harnesses · Orchestrators A Practical Guide to Building and Operating Them Yourself
Operating 26 Bots4 Agents1 Orchestrator▶
AI Hunter Channel Operations Video Revealed
Automatic security guideline inspection and reporting
✅ Operating
13
Management Support Agent
7 Tool Use + Notion KB + Telegram Hub
✅ Operating
14
Revenue Report Bot
Daily morning KPI automatic collection·reporting
✅ Operating
15
Global Listing Bot
Korean product→English/Japanese global listing automatic conversion
✅ Operating
16
Ad Copy Bot
Automatic TikTok hook + short-form ad script generation
✅ Operating
17
Trend Radar Bot
Automatic keyword trend monitoring
✅ Operating
18
Psychology Analysis Bot
Sales copy psychological trigger analysis
✅ Operating
19
Cost Monitor Bot
Claude API daily cost tracking & alerts
✅ Operating
20
Orchestrator
Daily 07:00 full pipeline conductor
✅ Operating
21
Development Team Agent
n8n webhook integration + automated code review
🔧 In progress
This is all the work of one person.
Or more precisely, the work of agents created by one person.
The result? Over 3 hours saved per day. 400% increase in monthly task volume.
What You Get from This Book
This book isn't a 'concept guide.' It's a practical blueprint.
By the end, you'll be able to:
□ Explain what an AI agent is in 5 minutes
□ Understand the exact differences between Claude, GPT, and LangChain
□ Build your first agent from scratch
□ Design multi-agent systems
□ Own a bot that's ready for immediate workplace deployment
Coding experience? You don't need it.
Of course, it helps if you have it. But you don't have to.
Every code snippet in this book works with copy-paste.
For parts you don't understand, just ask ChatGPT.
(That's another form of agent utilization.)
About the Author
I'm AITF (AI Task Force) Director.
It's a grand title, but it started simply.
"I hate repetitive work."
So I started building AI agents myself from 2023.
At first, just one simple Slack bot.
Now 21 agents work 24/7.
Operating systems I maintain:
aitf-api.onrender.com — Central control API
Automated Research Pipeline
Multimodal Content Generation System
Real-Time Monitoring Dashboard
Everything in this book is validated through direct operation.
This is not theory — it's real-world practice.
How to Read This Book
This book is structured in 5 levels.
Level 1: Foundations — Understand what AI agents are Level 2: Tools — Master core tools (Claude, LangChain, etc.) Level 3: Practice — Build your first agent Level 4: Advanced — Design multi-agent systems Level 5: Production — Deploy to real business operations
Critical rule:
Complete the checklist at the end of each level 100% before moving to the next.
Don't rush through this.
Read one chapter at a time, and actually do the exercises.
Stuck on something? Ask ChatGPT. (I'm serious.)
That's your first agent application in this book.
STEP 4, 5, 7, 8 are reference materials for when needed.
🌱 Complete Beginner Path
Start from STEP 0 in order. Complete 100% of the checklist at each chapter before proceeding.
No coding experience needed. If you get stuck, ask Claude.
Let me be honest. If you don't start using AI agents now, your business will fail within 3 years.
This isn't hyperbole. The numbers prove it.
"55.7% of domestic companies have already adopted or are adopting AI agents."
More than half your competitors are already moving. You're the only one who doesn't realize it yet.
What's truly terrifying is the wage-gap. Based on Limitlessman's actual operational measurements, one AI agent team handles the workload of 4 full-time employees. That's 170 million won in annual salary savings — not theory, actual operating numbers.
Flip this around. Your competitors are extracting 4x efficiency from the same headcount. You're still processing everything manually.
Think of it like a bakery. Next door, they brought in a dough mixer and churn out 500 pieces a day. You're still hand-mixing and making 50. Price competition? Impossible.
"It's not about who adopts technology first. It's about who dies for adopting it too late."
AI agents handle customer service, data analysis, and work automation 24 hours without stopping. No salary. No severance. No vacation days.
If you read this right now and think "I'll do it later"? Honestly, you're done. The market won't wait for you.
Test just one AI agent on a small task today. The moment you automate one workflow, the next bot builds itself.
⏳ Life — doesn't go according to plan.
Time never stops. AI evolves every single day.
In this era of change — Become the top 0.1% who uses AI best.
That value is — 10x · 100x · and beyond.
Start now.
⭐ 5-Book Full Package — Most Recommended
🏆 Invest in your future
99,000 KRW just once · 5-book bundle (Books 1·2·3·4·5) + lifetime updates + VIP Discord Original combined price 5M KRW+ · 1-year accumulated 15M KRW+ → 99,000 KRW
✅ 100% refund guarantee within 1 year · 📈 Price increase 7/1 (today is the cheapest forever) · 📖 incomparable to standard PDF ebooks
⭐ AI Bible trusted by 10,000 readers
Real estate appraisers · lawyers · corporate executives · office workers · homemakers · solo entrepreneurs · marketers · designers · professors · startup founders, etc. — 10,000 readers across all professions
Persuasion — comes not from us, but from our readers.
50M+
📷 Instagram · Facebook exposure
618
👍 Likes
135
💭 Comments
400+
🔗 Shares
165
💬 Reviews
🏅 ANTHROPIC OFFICIAL CERTIFICATE
"Introduction to Agent Skills" Certificate of Completion — hwahyun Kim (Limitlessman) · Issued 2026-05-14
Directly certified by Claude developer — Author who completed the official Anthropic curriculum, not theory alone
🏆 Recommendation — External Expert
"With Claude Code and AI agents — essential reading to become an AI-native company."
— Seonghwan Noh · IT Executive (Author of AntiGravity Vibecoding)
🏆 Volumes 1–4 Recommendations — Top 3 Quotes
"With CLAUDE.md, the way to plant your company constitution into AI — if you've taught AI without knowing this, you've only taught half."
— Ki-woong Park, CEO (AI Education Company SANTA)
"A solo founder completed a B2B platform in 96 hours with just the G-Stack methodology — vibe coding isn't a trend, it's a new development paradigm."
— Professor Kim Deok-eun (Pusan National University Industry-Academia Cooperation Foundation)
"I built an in-house automation system without outsourcing — saving 12 million won in development costs."
— CEO Kang Mu-sung (SIWU ENT)
💬 Reader Reviews — 1 of 165
"I deployed a landing page in 3 days. After 10 years as a marketing director, there's something I could never tell developers before — but now I've built it myself."
— Park O-jun (Marketing Director, Age 38)
Total 165 direct reviews accumulated · 92% recommendation rate
🔒 From here on — unlocked with password after payment
5-book Full Package 99,000 KRW — the most valuable single purchase of your lifetime. After payment confirmation, register in Notion DB → password sent via email and SMS within 2 business days (excluding holidays).
📖 AI Bible Platform Guide — ebooks are accessed in web format through a locked page link with a password. Separate PDF files or ZIP archives are not provided.
🏅 Proof of Trust — AI Bible (Books 1-4 Cumulative)
230K
📷 Instagram Impressions
230,000
📘 Facebook Impressions
400+
🔗 Shares
165
💬 Direct Reviews
💬 Testimonials
"With Claude Code and AI agents — essential reading to become an AI-native company." — Sung Hwan Roh · IT CEO (Author of AntiGravity Vibecoding)
Testimonials for Volumes 1–4: Gi-woong Park · Deok-eun Kim · Moo-sung Kang
📋 Payment Methods — 2 Options
① 🏦 Bank Transfer (0% Fee ⭐)Shinhan 110-271-235722 · Account Holder Hwa-hyun Kim (JANDA)After transfer, send to KakaoTalk "Janda JANDA" or ceo@stayjanda.com Name · Email · Phone · Product · Amount (5 items)
② 💳 jbooking Payment PageCard or bank transfer (automatic processing)
✅ Refundable: If you diligently executed all 5 volumes within 1 year and didn't feel the $99 value — 100% full refund
❌ Non-refundable: Due to the nature of knowledge services — simple changes of mind after purchase are non-refundable (E-Commerce Act Enforcement Decree Article 21)
📈 Price increase 7/1 · ♾ Lifetime updates
🗺️ LEVEL 0 — Why You Need to Start Now
Bot Simple Repetition
→
Agent Judgment + Memory
→
Orchestrator Full Orchestration
→
Revenue 24/7
Why You Must Start AI Agents in 2026, Right Now
Even as you read this article, someone is deploying an AI agent.
This is not an exaggeration. Let me back it up with numbers.
Gartner predicts that by 2028, 33% of enterprise software will include AI agents. According to McKinsey, companies that adopt AI agents experience average 20-40% ROI improvement. In Korea? The adoption rate of AI agents among large corporations has already exceeded 47% (as of Q1 2025).
The question is whether you belong to that 47% or the remaining 53%.
One Year Ago vs. Now vs. One Year Later: What the Timeline Tells Us
In early 2024, AI agents were "novelty items."
When AutoGPT first appeared, people laughed. "Just a toy that wastes tokens," they said. Those who researched that "toy" back then are now senior AI engineers. Their salaries? Over 200 million won. The global community of early agent developers was extremely small.
Now in 2026, AI agents have become "essential."
Anthropic's Claude launched Computer Use. OpenAI announced Operator. Google integrated Gemini agents into enterprise solutions. If you don't know about agents, you're left behind in conversations. You fail interviews. You're excluded from projects. The efficiency gap in task handling between those with AI agent capabilities and those without is already being felt in actual work.
By 2026, AI agents become "a given."
Here's the critical point. When something becomes a given, what happens? The barrier to entry disappears. When everyone can do it, there's no competitive advantage. If you learn agents a year from now, that's not "getting ahead"—it's "catching up." The gap between someone who starts now and someone who starts a year later? Three irretrievable years, warns the Stanford HAI report.
"The difference between becoming Early Majority or Late Majority on the technology adoption curve determines your entire career trajectory." — Stanford HAI, "AI Adoption and Career Trajectories" (2024)
Here's an analogy. Someone who learned smartphone app development in 2010 versus someone who learned in 2015. Both are developers. But the former created KakaoTalk, while the latter built a subsidiary feature for KakaoTalk.
April 2026: What Happened in Just 24 Days
A timeline is more accurate than words. Look at what happened in just one month of April 2026.
Qwen3.6-Max-Preview(Alibaba)— Claims #1 on 6 major coding benchmarks
APR 16
Claude Opus 4.7(Anthropic)— Maximum upgrade for complex reasoning + long-duration agent work ← The model I use in this book
APR 16
Qwen3.6-35B-A3B(Alibaba)— Open source, Apache 2.0
APR 8
Llama 4(Meta)— Open weights, Scout model 10M token context
APR 7
GLM-5.1(Zhipu
AI)— MIT License, surpasses GPT-5.4·Opus 4.6 on SWE-bench Pro
APR 7
Claude Mythos Preview(Anthropic)— Access limited to 50 companies, ASL-4 safety protocol activated
APR 2
Gemma 4 31B(Google)— Open source, surpasses models 20x its size
That's just 24 days. Annualized, that's roughly 167 models shipping. Three things stand out in this flow:
① Multipolar competition — This isn't just an America game (OpenAI·Anthropic·Meta·Google).
China (Alibaba·DeepSeek·Moonshot·Zhipu) and multinational open source are in hot pursuit.
② Agent specialization — GPT-5.5, Claude Opus 4.7, Kimi K2.6 all lead with "enhanced agent workflows" as a core feature. Models are being designed for agents. ③ Mythos + ASL-4 — The fact that a model Anthropic allowed only 50 companies to access received the highest safety protocol rating signals that AI capability has already entered a new threshold.
"The strongest model six months ago is mid-tier today. The real competitive advantage isn't memorizing model specs—it's the ability to design and operate agents."
Real Cases: Numbers Prove It
Case 1: Domestic Startup A (12 employees)
Implemented AI agents for customer inquiry handling. Results:
Response time: 4 hours average → 15 minutes (94% reduction)
Customer satisfaction: 3.2 → 4.6 points (out of 5)
CS staff: 3 → 1 person (remaining 2 transitioned to planning work)
Monthly cost: 67% savings vs. baseline
The startup CEO said: "Honestly, I hope competitors don't do this. I want only us to do it."
Case 2: Limitlessman Direct Operations (AI Hunter Channel)
Results from full YouTube channel automation:
Video production time: 3 days of human work → AI pipeline 2 hours
Klarna's CEO said in an interview: "This is just the beginning."
⚠️ Klarna's Plot Twist — Lessons from AI Overacceleration
But a year later, the story changed. Customer complaints surged, and Klarna began rehiring staff. Fast Company reported this as "the backfire of AI-first" strategy. Duolingo took the same path. They replaced 10% of contractors with AI but faced backlash from translation quality degradation.
Lesson: AI agents are not "complete replacement" but "tools that help people work better." This is why I emphasize HITL (Human-in-the-Loop) throughout this book. Limitlessman itself never actually sends any automation without a Telegram approval gate.
Case 4: SoftBank (Japan) — 2.5 Million Agents Built by Employees Themselves
What happened at SoftBank Japan in 2025. Not the IT department. Regular employees directly created 2.5 million AI agents in just 10 weeks. It was Japan's largest-scale internal AI adoption initiative.
This is why this book exists. Non-developers can build agents too. SoftBank employees proved it. You can do it.
One final number: According to McKinsey's 2025 report, 88% of enterprises say they use AI, but fewer than 10% have actually scaled it. The remaining 78% are stuck "experimenting." Few companies are extracting ROI from AI agents—now is the time to enter.
Here's the question: Does your company have more margin than Klarna? Your competitors are learning about agents right now. Starting now is the right answer.
How Much Can Our Team Save? — ROI Calculator
📊 Monthly Savings Formula for Repetitive Work
Monthly savings = (Automatable work hours × Hourly labor cost × 0.8) - AI API cost
─── Variable Definitions ───────────────────────────────────────────
Automatable work: Repetitive responses, data collection, reports, alerts, etc.
Hourly labor cost: Annual salary ÷ (12 months × 160 hours)
→ Based on 36M won annual: 18,750 won/hour
→ Based on 60M won annual: 31,250 won/hour
Automation rate 0.8: 80% automation achievable in practice (Limitlessman standard)
AI API cost: Claude API basis ~$5-50/month (varies by usage)
🧮 Estimated Savings by Team Size of 5~50 Employees (Monthly Basis)
※ Based on hourly labor cost of 18,750 KRW and 80% automation rate. Estimated net savings excluding AI API costs (5~50 USD/month).
💡 Investment Recovery Period (ROI Benchmark)
Agent building cost: 3~4 weeks for internal development / 2M~5M KRW for outsourcing
Based on 1.5M KRW monthly savings → Recovery of investment within 2~4 months
Actual build-to-recovery period measured by Limitlessman: Average 47 days
⚠️ Gartner Alert: "40% of AI Agent Projects Will Fail by 2027"
Top failure reason: Unclear ROI goals. Projects launched for the reason "AI is good" collapse. Conversely, the common trait of the successful 10%? They list tasks to automate first, calculate ROI in advance, and then begin.
You just calculated your ROI. You're ready to be part of that 10%.
▶
AI Hunter YouTube — Verify with Real Data Why You Should Start Now📌 Watch practical bot and agent operation videos on the AI Hunter channel
Chapter 2: Complete Development Environment Setup Guide
Estimated Time: 15 minutes
After completing this chapter, you'll see an AI responding directly on your computer. In 15 minutes, you'll transform from 'someone who wants to try AI' into 'someone who has actually run AI'.
Introduction: Why Development Environment Setup Is the First Gateway
Many people say they want to build AI agents. But most never even start. The reason is simple: "They don't know where to begin." Complex programming languages? Difficult server configuration? Expensive equipment? None of that is necessary.
In this chapter, I'll guide you through every step so that even someone with zero coding experience can follow along. Just follow my instructions. In 15 minutes, you'll run a program that actually converses with AI.
1. Pre-Start Checklist: Verify What You Need
Just as you check ingredients before cooking, let's verify what you need before setting up your development environment. Fortunately, you don't need much.
✅ Essential Requirements
Computer: Windows, Mac, or Linux—any will do. A standard laptop purchased within the last 5 years is sufficient.
Internet Connection: A stable internet connection is required. AI runs on the cloud.
Email Account: Needed to create an Anthropic account.
Payment Method: A credit card or debit card is required. (Free credits may be provided upon initial signup)
✅ Mindset Checklist
Do you have 15 focused minutes available?
Are you ready to learn something new?
Do you have the determination to not give up even if you get stuck?
Everything checked? Then let's begin!
2. Obtaining Your Anthropic API Key: Creating Your Personal Key
What is an API key? Simply put, it's a secret key to use the AI service. Just as you need a card key to enter a hotel room, you need an API key to use Claude AI. This key is yours alone, and you must never share it with anyone else.
Step 1: Access the Anthropic Console
Open your web browser and enter the following address in the address bar:
https://console.anthropic.com
The Anthropic login page will appear on your screen. If this is your first visit, click the "Sign Up" or "Create Account" button.
Step 2: Create Your Account
Enter your email address.
Set your password. (Include uppercase letters, lowercase letters, and numbers—minimum 8 characters)
Click the "Create Account" button.
A verification email will be sent to the email address you entered.
Open your email and click the verification link.
💡 Tip: If you don't receive the email, check your spam folder. If it's still not there, wait about 5 minutes and click the "Resend" button to request it again.
Step 3: Register Payment Information
Once email verification is complete, a screen to register payment information will appear. Don't worry! You're only charged for what you use, and initially you'll only spend a few cents for testing purposes.
Click "Add Payment Method" or the payment method addition option.
Enter your card number, expiration date, and CVC.
Enter your billing address.
Click the "Save" button.
Step 4: Generate Your API Key
Finally, the crucial step! Let's generate your API key.
Click "API Keys" in the left menu of the console.
Click the "Create Key" button in the top right corner of the screen.
Enter a key name. For example: "my-first-agent" (enter in English)
Click the "Create Key" button.
A long character string starting with sk-ant-api03-... will appear on the screen. This is your API key!
⚠️ Very Important: This key is shown only once on this screen. You must copy and save it somewhere. I strongly recommend pasting it into a text editor. Once you close this window, you won't be able to see it again!
Have you saved your API key in a safe place? Excellent! You've passed the first hurdle.
3. Installing Python: Learning the Language to Talk with AI
Python is a programming language. You might think, "Why do I need a programming language?" Python serves as an interpreter that allows us to send commands to AI and receive responses. Don't worry. You just need to install it!
Windows Users
Go to https://www.python.org/downloads in your web browser.
Click the yellow "Download Python 3.12.x" button. (The version number may be slightly different)
Run the downloaded installer file.
⚠️ Important: Make sure to check the "Add Python to PATH" checkbox at the bottom of the installation screen!
Click "Install Now".
When the installation is complete, click "Close".
Mac Users
Mac may have Python pre-installed, but I recommend installing the latest version.
Go to https://www.python.org/downloads in your web browser.
Click the "Download Python 3.12.x" button.
Double-click the downloaded .pkg file.
Follow the installation wizard and click "Continue", "Agree", and "Install".
Enter your Mac password and complete the installation.
Verifying the Installation
Let's verify that Python is installed correctly.
Windows: Search for "cmd" in the Start menu to open Command Prompt. Mac: Search for "Terminal" in Spotlight (Cmd + Space) to open Terminal.
In the black (or white) window that opens, enter the following command and press Enter:
python --version
Or if the above command doesn't work on Mac:
python3 --version
If version information like Python 3.12.x appears on the screen, you're successful!
💡 Troubleshooting: If you see a message saying "python not found", restart your computer and try again. If it still doesn't work, reinstall Python, making sure to check the "Add Python to PATH" option.
4. Installing Required Packages: Filling Your Toolbox
Now that you've installed Python, you need to install the tools to create an AI agent. This process is done through pip, a package manager. pip is automatically installed when you install Python.
Enter the following command in your terminal (or command prompt):
pip install anthropic python-dotenv
If you're a Mac user and the above command doesn't work:
pip3 install anthropic python-dotenv
Press Enter and the installation will begin. You'll see multiple lines of text moving quickly across the screen. This is normal!
When the installation is complete, you'll see a message like Successfully installed anthropic-x.x.x python-dotenv-x.x.x.
What you just installed:
anthropic: The official library for communicating with Claude AI
python-dotenv: A tool for safely managing API keys
5. Creating a Project Folder: Organizing Your Workspace
Now let's create a dedicated folder for your AI agent project. An organized workspace is the start of efficient development.
On Windows
mkdir ai-agent-project
cd ai-agent-project
On Mac
mkdir ai-agent-project
cd ai-agent-project
mkdir is the command to create a new folder, and cd is the command to navigate into that folder.
✅ STEP 0 Completion Checklist
You must pass this checklist 100% before moving to STEP 1.
☐ python --version displays Python 3.12+
☐ VS Code installation complete + Python extension installed
☐ pip install anthropic python-dotenv success message confirmed
☐ ai-agent-project/ folder created
☐ .env file with ANTHROPIC_API_KEY=sk-ant-... entered
☐ First test code executed → Claude response received
If you're stuck on any item, ask Claude "Help me fix my Python installation error." That's why you're reading this book.
▶
Complete Development Setup in 5 Minutes — Real-Time Follow-Along Video📌 Watch hands-on bot and agent operation videos on the AI Hunter channel
While you sleep, someone is running 21 employees without paying them a dime.
Think of a bakery. At 4 AM, you knead, ferment, bake, and display. The same routine every day. But what if the owner did all this herself? Burnout in 3 months. That's why smart owners buy a "kneading machine"—a device that automatically kneads with a single button press. That's a bot.
Bot = A digital employee performing repetitive work for you 24/7
Writing, creating images, uploading to social media, organizing data. If you repeat something 10 times, you need 1 bot. 100 times? 10 bots. Simple math.
I currently run 21 bots. Content planning bot, draft writing bot, image generation bot, blog posting bot, YouTube script bot... what these produce in a day is what took the old me 2 weeks alone. They work while I sleep. No complaints, no salary.
The core of this system is the AITF API Content Engine. It connects OpenAI, Claude, and image AI into a single automation pipeline. One command and the entire process—planning→writing→editing→publishing—runs automatically.
Even this article was drafted by a bot. You're still doing it by hand.
Is your company's chatbot still repeating "I'm sorry, I don't understand"?
That's a bot. Not an agent.
"A bot is an automated voice system following a preset script. An agent is a junior employee who thinks and acts on its own."
The core difference is the ReAct loop. Think (Reasoning) → Act (Action) → Observe (Observation). It runs this cycle endlessly. A bot ends with one "question-answer" exchange, but an agent repeats the loop until it achieves its goal.
Three weapons of an agent:
1. Memory – Remembers yesterday's conversation and last month's request
2. Judgment – Decides on its own, "That's the finance team's domain"
3. Tools – Directly executes Slack notifications, database queries, email sends
Real Case: Limitlessman Management Support Agent (Currently Operating)
One line Telegram command → 15,723 document Notion KB search → 9 autonomous Tool Use executions → result report. Example: "Summarize this month's meetings" → calendar check → meeting notes search → AI summary → Telegram send. If a person does it: 30 minutes. An agent does it: 8 seconds.
Limitlessman Agent Team Composition (actual operations)
"Agents don't wait for 'perfect commands.' Give them a goal and they find their own path."
Looking at the Limitlessman team composition above, I see a pattern. Each agent and bot has one clear role. Management support makes decisions, content creates, email sends. This separation makes the system maintainable.
The 3 Types of Bots — Collector Bots, Generator Bots, Executor Bots
"Why does my bot always end up broken?"
When most people attempt automation, they make the same mistake first: putting every function into one bot. They try to do data collection, writing, and posting all at once. The result? Undebugable spaghetti code and giving up in 3 days.
Think of an army. Can an army win if scouts also fight battles and communications specialists also handle supplies? Absolutely not. An army without clear role division always loses.
Bots are the same. According to McKinsey's 2024 automation research, bot systems with clearly separated roles have 67% lower maintenance costs and 3.4x fewer errors compared to single integrated bots. Today, I'll help you perfectly understand the 3 roles of bots and walk away with practical code.
1. Collector Bot: The Scout's Role
The collector bot is the army's scout. It infiltrates enemy territory (the internet) and brings back intelligence (data). It doesn't fight directly. It only gathers information. And quietly returns.
"What happens when scouts also fight battles? They die. What happens when collector bots also generate? They crash."
Core functions of collector bots:
Web page crawling (news, blogs, communities)
API data collection (Twitter, YouTube, government open APIs)
RSS feed monitoring
Data cleaning and storage
According to a Gartner 2024 report, 89% of enterprise data is unstructured data (text, images, video). Just collecting and cleaning this data creates tremendous value.
import requests
from bs4 import BeautifulSoup
import json
from datetime import datetime
class CollectorBot:
"""
Collector bot: handles only data collection
- No generation X, no posting X
- Follows Single Responsibility Principle (SRP)
"""
def __init__(self, source_name: str):
self.source_name = source_name
self.collected_data = []
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
def collect_from_rss(self, rss_url: str) -> list:
"""Collect data from RSS feed"""
try:
response = requests.get(rss_url, headers=self.headers, timeout=10)
response.raise_for_status()
soup = BeautifulSoup(response.content, 'xml')
items = soup.find_all('item')
for item in items[:10]: # Latest 10 only
data = {
'title': item.find('title').text if item.find('title') else '',
'link': item.find('link').text if item.find('link') else '',
'description': item.find('description').text if item.find('description') else '',
'pub_date': item.find('pubDate').text if item.find('pubDate') else '',
'source': self.source_name,
'collected_at': datetime.now().isoformat()
}
self.collected_data.append(data)
return self.collected_data
except requests.RequestException as e:
print(f"[Collector Bot Error] {e}")
return []
def collect_from_webpage(self, url: str, title_selector: str, link_selector: str) -> list:
"""Collect data by web page crawling"""
try:
response = requests.get(url, headers=self.headers, timeout=10)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
titles = soup.select(title_selector)
links = soup.select(link_selector)
for title, link in zip(titles[:10], links[:10]):
data = {
'title': title.get_text(strip=True),
'link': link.get('href', ''),
'source': self.source_name,
'collected_at': datetime.now().isoformat()
}
self.collected_data.append(data)
return self.collected_data
except requests.RequestException as e:
print(f"[Collector Bot Error] {e}")
return []
def save_to_file(self, filename: str = 'collected_data.json'):
"""Save collected data (for handoff to next bot)"""
with open(filename, 'w', encoding='utf-8') as f:
json.dump(self.collected_data, f, ensure_ascii=False, indent=2)
print(f"[Collector Bot] Successfully saved {len(self.collected_data)} data items: {filename}")
# Usage example
if __name__ == "__main__":
# 1. Create collector bot
bot = CollectorBot(source_name="TechNews")
# 2. Collect from RSS (example: technology news feed)
data = bot.collect_from_rss("https://feeds.feedburner.com/TechCrunch/")
# 3. Save (handoff to generator bot)
bot.save_to_file("tech_news_data.json")
Core principle: The collector bot never processes or publishes data. It collects → saves only. Following this principle ensures the next bot (generator bot) can be independently replaced.
✅ STEP 1 Completion Checklist
☐ I can explain the difference between bots and agents in one sentence
☐ I can recite the 3 steps of the ReAct loop (Reasoning → Action → Observation)
☐ I understand the role separation principle (collector bot / generator bot / executor bot)
☐ I've noted 3 repetitive tasks in my workflow that can be automated
☐ I've read the CollectorBot example code and understand its flow
If all 5 are checked, proceed to STEP 2. If any point remains unclear, read this chapter once more. Weak foundations collapse later.
▶
Bots vs Agents — Real operational systems from 21 deployments revealed📌 Watch bot and agent production operations on AI Hunter channel
"Think, act, and observe" — this is the core method by which AI agents solve complex problems.
In this chapter, I'll help you understand the essence of the ReAct pattern and implement it directly.
📖 1. What is ReAct? — How a Detective Solves a Case
ReAct is a compound of "Reasoning + Acting". This pattern, announced by Google and Princeton University in 2022,
enables LLMs to go beyond simply generating answers and think while acting.
🔍 Analogy: How a Detective Solves a Case
Imagine yourself as a detective in a mystery drama. A murder has occurred.
🤔 Thought: "I need to check the victim's last call records. If I know who they called, I can narrow down the suspects."
🎬 Action: I contact the telecom company and request the call records.
👁️ Observation: "The victim had a 15-minute call with their ex-spouse 30 minutes before death."
🤔 Think Again: "The ex-spouse is a prime suspect. I need to check their alibi."
🎬 Act Again: I contact the ex-spouse's workplace to verify whether they worked that day.
👁️ Observe Again: "They left early that day? This is getting more suspicious..."
This process is exactly the ReAct loop. A detective never identifies the culprit in one shot.
They think → act → observe repeatedly, gradually approaching the truth.
AI agents work the same way. When a user asks "Tell me tomorrow's weather in Seoul," the agent:
Think: "I need weather information. I should call the weather API."
Act: Call the tool search_weather("Seoul", "tomorrow")
Observe: "Tomorrow in Seoul: clear, high 24°C, low 15°C"
Conclude: Provide the user with a friendly weather report
🔄 2. Thought → Action → Observation: Perfect Understanding of 3 Steps
💭
Thought
Reasoning
"What should I do?"
→
⚡
Action
Tool Execution
"Let me act"
→
👁️
Observation
Result Observation
"What did I get?"
↩️
💭 Step 1: Thought (Thinking)
At this stage, the LLM analyzes the current situation and reasons about what to do next.
The key point is that this process becomes explicitly visible.
💡 Key Point: The Thought stage allows the LLM to track "why" it's taking a particular action.
This is essential for debugging and improving reliability.
# Thought Example
"""
Thought: The user asked about the latest AI trends.
My training data contains outdated information, so I need to
search the web to get current information for an accurate answer.
"AI trends 2024" seems like an appropriate search query.
"""
⚡ Step 2: Action (Acting)
Based on my thinking, I call actual tools. Tools can take various forms:
web search, file reading/writing, calculations, API calls, and more.
I receive and analyze the results of tool execution. This result becomes the input for the next Thought.
# Observation Example
"""
Observation: I received 5 search results.
1. "2024 AI Trends: The Rise of Multimodal AI" - TechNews
2. "Generative AI Improves Corporate Productivity by 30%" - Forbes
3. "AI Agents Named Most Notable Technology of 2024" - Gartner
...
"""
Now I'll move beyond theory and implement an actual working ReAct agent.
If you follow along step by step, you can create your own agent.
📦 3.1 Defining Tools
import json
import os
from datetime import datetime
from typing import Any, Callable
import anthropic
# =============================================================
# Tool Definition - Functions the agent can use
# =============================================================
def search_web(query: str, num_results: int = 3) -> str:
"""
Simulates web search functionality
In actual production, use Google Search API, Bing API, etc.
"""
# Simulated search results (actual implementation calls API)
simulated_results = {
"AI trends 2024": [
{"title": "2024 AI Trends Report", "snippet": "Multimodal AI and AI agents are gaining attention."},
{"title": "Generative AI Market Outlook", "snippet": "Generative AI market expected to grow 40% year-over-year in 2024"},
{"title": "AI Regulatory Trends", "snippet": "EU AI Act comes into full effect starting 2024."}
],
"Python best practices": [
{"title": "Python Best Practices", "snippet": "Type hinting and virtual environment usage recommended."}
]
}
results = simulated_results.get(query, [{"title": f"'{query}' search results", "snippet": "Found related information."}])
return "\n".join([f"- {r['title']}: {r['snippet']}" for r in results[:num_results]])
🔄 3.2 ReAct while Loop — 3-Turn Implementation
Now for the core. This is the actual code that repeats think→act→observe in a while loop.
The loop terminates when Claude determines that no more tools are needed.
import anthropic, os
client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
TOOLS_DEF = [{
"name": "search_web",
"description": "Search the internet for latest information",
"input_schema": {
"type": "object",
"properties": {"query": {"type": "string", "description": "Search query"}},
"required": ["query"]
}
}]
def run_react_loop(task: str, max_turns: int = 5) -> str:
"""ReAct loop: think→act→observe repeated"""
messages = [{"role": "user", "content": task}]
turn = 0
while turn < max_turns:
turn += 1
print(f"\n{'='*40}")
print(f"[Turn {turn}] Claude thinking...")
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
tools=TOOLS_DEF,
messages=messages
)
# ── Termination condition: final answer without tools ──
if response.stop_reason == "end_turn":
final = response.content[0].text
print(f"[Complete] {final[:100]}...")
return final
# ── Tool call handling ──
messages.append({"role": "assistant", "content": response.content})
tool_results = []
for block in response.content:
if block.type == "tool_use":
print(f"[Action] {block.name}({block.input})") # Observation 1: Which tool?
result = search_web(**block.input) # Execute actual tool
print(f"[Observation] {result[:120]}...") # Observation 2: Check result
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
messages.append({"role": "user", "content": tool_results})
return "Maximum turns exceeded — failed to reach conclusion"
# Execution Example
if __name__ == "__main__":
answer = run_react_loop("Search for the latest AI agent trends in 2026 and summarize in 3 lines")
print(f"\nFinal Answer:\n{answer}")
💡 Execution Log Example (3 turns):
[Turn 1] Claude thinking...
[Action] search_web({'query': 'AI agent trends 2026'})
[Observation] - Multi-agent collaboration surging: 60% of enterprises adopting by 2026...
[Turn 2] Claude thinking...
[Action] search_web({'query': 'Claude agent 2026 Korea'})
[Observation] - Korea's AI agent market surpasses 3 trillion won...
[Complete] 3 Major AI Agent Trends in 2026: ①Multi-agent...
▶
Mitos Agent ReAct Loop Live Demonstration — Complete Claude Mitos Mastery📌 Watch bot and agent operational videos on the AI Hunter channel
🔌 Finding coding difficult? Try the n8n workaround first
If Python feels unfamiliar, you can start from STEP 8. With n8n, you can achieve the same results with zero code in under 30 minutes.
If you're confident with coding, proceed with this chapter as is.
📱 Chapter 4: Build Your First AI Agent Yourself in 10 Minutes
🎯 What You'll Build in This Chapter
Enough theory! Now we're building a real, working AI agent.
Once complete, you'll receive this message on Telegram every morning:
"📰 Today's AI News Summary
1. OpenAI announces new reasoning model - 3x faster processing than before
2. Google unveils Gemini 2.0 - major multimodal enhancements coming
3. Korea's AI startups hit record investment high..."
⏱️ Time required: 10 minutes
🏗️ Architecture of the Agent We'll Build
🌐 News Collection
→
🤖 AI Summarization
→
📱 Telegram Delivery
→
⏰ Automated Execution
🔧 Before You Start: Pre-Flight Checklist
Let's prepare what you need before writing code. 5 minutes is plenty.
Now I'll create a function to collect news. I'll use Google News RSS to fetch AI-related news headlines.
news_agent.py — Complete version (copy and run immediately)
import os
import anthropic
import requests
from bs4 import BeautifulSoup
def fetch_news_headlines(query="AI 인공지능", num_headlines=10):
"""Collect news headlines from Google News RSS"""
url = f"https://news.google.com/rss/search?q={query}&hl=ko&gl=KR&ceid=KR:ko"
try:
response = requests.get(url, timeout=10)
soup = BeautifulSoup(response.content, 'xml')
items = soup.find_all('item')[:num_headlines]
headlines = []
for item in items:
title = item.title.text if item.title else ""
link = item.link.text if item.link else ""
pub = item.pubDate.text if item.pubDate else ""
headlines.append({"title": title, "link": link, "date": pub})
return headlines
except Exception as e:
print(f"Collection error: {e}")
return []
def summarize_with_claude(headlines: list) -> str:
"""Summarize news in 3 lines with Claude Haiku — fast and affordable"""
client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
headline_text = "\n".join([f"- {h['title']}" for h in headlines])
response = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=500,
messages=[{"role": "user",
"content": f"Summarize the following AI news headlines in 3 lines:\n{headline_text}"}]
)
return response.content[0].text
if __name__ == "__main__":
print("Collecting AI news...")
headlines = fetch_news_headlines("AI 인공지능", 10)
if headlines:
print(f"Collected {len(headlines)} headlines\n")
print("Claude summary:\n", summarize_with_claude(headlines))
else:
print("Failed to collect news")
# Execution: python news_agent.py
STEP 3 COMPLETION CHECKPOINT
The collection bot is running. Good. But haven't you thought this?
"Do I have to explain to this bot every time: 'Summarize 5 news articles'? I don't even know what it summarized yesterday?"
Exactly right. The bot is missing two things now: systematic instruction flow and memory. In STEP 4, I solve "instruction flow (chaining)". In STEP 5, I solve "memory".
▶
Collection Bot Live Operation in 10 Minutes — How to Start with Zero Lines of Code📌 Watch bot and agent real-world operation videos on the AI Hunter channel
blog = claude("Blog post 1500 characters: " + topic)
sns = claude("SNS 3-line summary: " + blog)
mail = claude("Email introduction: " + sns)
Prompt Chaining in Practice — A Output → B Input → C Output
Why does your prompt fall short every single time?
Because you're asking for everything at once.
It's like telling a bakery apprentice: "Mix the dough while making the cream and packaging at the same time." The result? Mediocre bread, messy cream, torn packaging.
Prompt chaining is different.
A's output becomes B's input, and B's output becomes C's input. Like a factory conveyor belt. Each step handles one job perfectly.
"Breaking down complex tasks into chains improves accuracy by an average of 47%" — Anthropic Prompt Engineering Guide 2024
By the end of this article, you'll have a system that takes one blog post and automatically produces SNS content and newsletter introductions.
1. Why Prompt Chaining is 3x Better — The Data Speaks
First, the uncomfortable truth.
The limitations of simple prompts (entering all requirements at once) are clear. According to Anthropic research, when handling complex tasks with a single prompt, accuracy often drops below 40%.
Why?
LLMs are vulnerable to "instruction overload." Once a prompt contains five or more requirements, the model ignores later instructions or produces results that don't add up.
Stanford HAI's 2024 report puts it this way:
"Most performance degradation in large language models stems not from model limitations themselves, but from prompt design issues."
Three overwhelmingly powerful advantages of chaining:
First, improved accuracy. According to Anthropic guidelines, breaking complex workflows into chains reduces errors at each step, resulting in an average 47% improvement in overall accuracy.
Second, debugging becomes easier. When results are wrong with a single prompt, where's the problem? With chaining, you immediately identify which step went wrong. It's like a factory's quality control process.
Third, reusability. Each step in a chain you build once can be reused in other projects. Build an "SNS summary node" once, and you just swap the input for any blog post.
McKinsey Digital 2024 Survey Results:
What did the top 20% of companies implementing AI have in common? They were using chaining-based workflows. Only companies going beyond simple "ask ChatGPT" are seeing real ROI.
Gartner's 2024 forecast is even more direct:
"By 2026, 70% of enterprise AI applications will adopt multi-step agent architecture."
You might be the only one who doesn't know. Right now, your competitors are using chaining to triple their content production speed.
2. 3-Step Chaining Python Code — Blog→SNS→Email
Theory is over. Now it's time for practice.
The code below is a complete, working program. You can copy and run it immediately.
Goal:
Generate blog post (1500 characters)
Blog post → SNS 3-line summary
SNS summary → Email newsletter introduction
chaining.py — Claude SDK Complete Version
import os
import anthropic
client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
def call_claude(prompt: str, max_tokens: int = 2000) -> str:
"""Claude API call helper"""
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=max_tokens,
system="You are a professional content writer.",
messages=[{"role": "user", "content": prompt}]
)
return response.content[0].text
# STEP 1: Generate blog post (1500 characters)
def generate_blog(topic: str) -> str:
return call_claude(
f"Write a 1500-character blog post on the following topic\nTopic: {topic}\nStructure: Introduction→3 main points→Conclusion"
)
# STEP 2: Blog → SNS 3-line summary
def blog_to_sns(blog: str) -> str:
return call_claude(
f"Convert the following blog into a 3-line SNS summary (50 characters per line, 3 hashtags on the last line):\n{blog[:400]}",
max_tokens=200
)
# STEP 3: SNS → Email newsletter introduction
def sns_to_email(sns: str) -> str:
return call_claude(
f"Convert the following SNS into an email newsletter introduction (200 characters, designed to drive reader clicks):\n{sns}",
max_tokens=300
)
# Run pipeline
if __name__ == "__main__":
topic = "How AI Agents Transform Work Automation"
blog = generate_blog(topic)
print(f"[Blog] {len(blog)} characters complete\n")
sns = blog_to_sns(blog)
print(f"[SNS]\n{sns}\n")
email = sns_to_email(sns)
print(f"[Email Introduction]\n{email}")
# Run: python chaining.py
STEP 4 Completion Checkpoint
Now you understand chaining. Blog → SNS → Email all generated at once. But didn't you think something?
"Will this agent remember what topic I wrote about yesterday? I asked for the user's name, but it'll ask again next time..."
No matter how well you craft a prompt, an agent without memory is just starting from scratch every time. STEP 5 addresses this problem head-on.
▶
Prompt Chaining — Live Demo: Blog, SNS, and Email Generation Simultaneously📌 Watch bot and agent live operation videos on the AI Hunter channel
Master the 4 Types of Agent Memory — Files, DB, Vector DB, Context
Why your AI agent is dumb. It has no memory. Same answer to the same question every time. Can't remember yesterday's conversation today. Forgets user names. This is dementia-level.
According to Anthropic's 2024 AI Agents report, 73% of production agents experience declining user satisfaction due to lack of memory systems. Conversely, agents with proper memory systems have 3.2x higher revisit rates.
The human brain also has different types of memory. Instant memory, short-term memory, long-term memory, semantic memory. AI agents work the same way. Once you understand the 4 memory systems, your agent can say things like "Oh, you're the person who asked me for coffee recommendations last time."
Let me explain with a bakery analogy. Imagine you're running a neighborhood bakery.
Recipe book (file memory) — Regular customer names and allergy information written directly on paper. It stays in the drawer even after closing the shop.
Employee note (DB memory) — Order ledger. When, who, what, and how much was purchased—systematically recorded and searchable. You can find records from 3 years ago.
Customer preference card file (vector DB) — Search for "customers who like extra cream" and similar-preference customers come up in a list. Semantic search.
Today's orders (context) — The conversation happening right in front of you now. It resets once the customer leaves.
Today I completely master these 4 systems with practical code.
1. Context Memory — How to Remember This Conversation Right Now
This is the most basic. But 90% of people use it wrong.
Context memory is memory that persists only during the current conversation session. The messages array in Claude API is exactly this. Once the conversation ends, it disappears. Close the browser tab, and it's gone.
"But isn't it a waste of tokens to send the entire conversation every time?"
That's right. So strategy is needed.
Practical Code for Maintaining Conversation with Claude API
import anthropic
client = anthropic.Anthropic()
# Manage conversation history as a list
conversation_history = []
def chat(user_message: str) -> str:
"""Function to continue conversation"""
# Add user message
conversation_history.append({
"role": "user",
"content": user_message
})
# Pass entire conversation history to Claude
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
system="You are a friendly coffee expert. Remember previous conversations.",
messages=conversation_history
)
assistant_message = response.content[0].text
# Add assistant response to history
conversation_history.append({
"role": "assistant",
"content": assistant_message
})
return assistant_message
# Actual usage
print(chat("I like americano"))
# → "I see you like americano! Do you prefer higher acidity?"
print(chat("Yeah, I like sourness"))
# → "Got it! I'd recommend Ethiopian Yirgacheffe.
# Since you like americano and enjoy acidity, it's perfect for you."
print(chat("What did I say I like?"))
# → "You said you like americano and acidic coffee!"
The key is accumulation of the messages array. Every time you call the API, you send the entire previous conversation together. Claude reads this history and understands the context.
Token Management — Sliding Window
There's a problem. What if the conversation goes over 100 turns? Token explosion. Claude Sonnet 4.6's context window is 200K tokens, but it's not optimal in terms of cost and speed.
def manage_context_window(messages: list, max_messages: int = 20) -> list:
"""Keep only the last N conversations (sliding window)"""
if len(messages) > max_messages:
# Remove oldest conversation
# But keep the first conversation as it may contain important context
return [messages[0]] + messages[-(max_messages-1):]
return messages
def chat_with_management(user_message: str) -> str:
global conversation_history
conversation_history.append({
"role": "user",
"content": user_message
})
# Apply context management
managed_history = manage_context_window(conversation_history)
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
system="You are a friendly coffee expert.",
messages=managed_history
)
assistant_message = response.content[0].text
conversation_history.append({
"role": "assistant",
"content": assistant_message
})
200000
return assistant_message
Pros and Cons of Context Memory
Item
Details
✅ Advantages
Zero additional lines / Native API support / Fastest
❌ Disadvantages
Completely lost when conversation ends / Token costs skyrocket as turns accumulate
To retain memory after conversations end, I need to save to a file. A single JSON file is enough. It's like writing a regular customer's name on a notepad.
import json, os, anthropic
from datetime import datetime
MEMORY_FILE = "user_memory.json"
def load_memory(user_id: str) -> dict:
if os.path.exists(MEMORY_FILE):
data = json.load(open(MEMORY_FILE, encoding="utf-8"))
return data.get(user_id, {"name": "", "history": []})
return {"name": "", "history": []}
def save_memory(user_id: str, memory: dict):
data = {}
if os.path.exists(MEMORY_FILE):
data = json.load(open(MEMORY_FILE, encoding="utf-8"))
data[user_id] = memory
json.dump(data, open(MEMORY_FILE, "w", encoding="utf-8"), ensure_ascii=False, indent=2)
def chat(user_id: str, message: str) -> str:
memory = load_memory(user_id)
client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
system = f"User name: {memory['name'] or 'Unregistered'}. Recent history: {memory['history'][-3:]}"
response = client.messages.create(
model="claude-haiku-4-5-20251001", max_tokens=300,
system=system, messages=[{"role": "user", "content": message}]
)
reply = response.content[0].text
memory["history"].append({"time": datetime.now().isoformat(), "user": message, "bot": reply})
memory["history"] = memory["history"][-20:] # Keep only recent 20 entries
save_memory(user_id, memory)
return reply
if __name__ == "__main__":
uid = "user_001"
print(chat(uid, "My name is Kim Chulsu"))
print(chat(uid, "What's my name?")) # ← It remembers!
# Run: python file_memory_bot.py
3. DB Memory — Systematic Management of Thousands of Users (SQLite)
Files slow down when there are many users. SQLite is a built-in Python DB with no installation needed. It's perfect for services with under 10,000 users.
import sqlite3, os
DB_FILE = "agent_memory.db"
def init_db():
conn = sqlite3.connect(DB_FILE)
conn.execute("""CREATE TABLE IF NOT EXISTS memory (
user_id TEXT, key TEXT, value TEXT,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (user_id, key)
)""")
conn.commit(); conn.close()
def set_memory(user_id: str, key: str, value: str):
conn = sqlite3.connect(DB_FILE)
conn.execute("INSERT OR REPLACE INTO memory(user_id,key,value) VALUES(?,?,?)",
(user_id, key, value))
conn.commit(); conn.close()
def get_memory(user_id: str, key: str) -> str:
conn = sqlite3.connect(DB_FILE)
row = conn.execute("SELECT value FROM memory WHERE user_id=? AND key=?",
(user_id, key)).fetchone()
conn.close()
return row[0] if row else ""
if __name__ == "__main__":
init_db()
set_memory("user_001", "name", "Kim Chul-su")
set_memory("user_001", "preference", "Prefer Americano")
print(get_memory("user_001", "name")) # Kim Chul-su
print(get_memory("user_001", "preference")) # Prefer Americano
# Run: python db_memory_bot.py
READERS SAY
Reader Feedback
Honest experiences shared by those who've read this.
Loading...
Share Your Experience
Your single line of feedback can change the next reader's decision. The more specific, the more helpful it becomes.
💡 "What was your situation?" "Where were you stuck, and how did it get solved?" "Did you actually build something?" — Just include these 3 things.
4. Vector DB Memory — Semantic Search for "Similar Content" (ChromaDB)
Files and databases search by exact keywords only. Vector DBs search by semantic similarity. When I input "recommend coffee," it finds my memory "prefer Americano"—that's vector DB. It's the core of RAG.
Vector DB Selection Guide (2026):
• ChromaDB — Local, instant use, small projects pip install chromadb
• Pinecone — Cloud SaaS, large-scale production
• FAISS — Meta open source, ultra-fast local search
• pgvector — PostgreSQL extension, integrates with existing DB
import os, chromadb # pip install chromadb
import anthropic
chroma = chromadb.Client()
col = chroma.get_or_create_collection("user_memories")
def add_memory(user_id: str, content: str, doc_id: str):
col.add(documents=[content], ids=[f"{user_id}_{doc_id}"],
metadatas=[{"user_id": user_id}])
def recall(user_id: str, query: str, n=3) -> list:
"""Search memories by semantic similarity"""
results = col.query(query_texts=[query], n_results=n,
where={"user_id": user_id})
return results["documents"][0] if results["documents"] else []
if __name__ == "__main__":
add_memory("u1", "User prefers Americano", "pref_coffee")
add_memory("u1", "Completed AI agent project last week", "proj_001")
add_memory("u1", "5 years experience as Python developer", "profile")
print(recall("u1", "What's my coffee preference?"))
# → ['User prefers Americano'] ← Searched by meaning, not keywords!
# Run: python vector_memory_bot.py
4 Memory Methods Compared — When to Use What
Method
Persistence
Search
Cost
Best Scale
Context
Disappears within session
Automatic
Token cost
One-time chatbot
File (JSON)
Permanent
Key-based
Free
~100 users
DB (SQLite)
Permanent
SQL query
Free
~100,000 users
Vector DB
Permanent
Semantic similarity
Embedding cost
Unlimited
STEP 5 Completion Checkpoint
The agent remembers. Users recognize it, and reference previous work. But a bigger question remains.
"Should one agent handle customer support, write reports, and do code reviews all at once? It feels like it won't be good at anything..."
The same goes for people. If one person does everything, quality drops. This is the moment you need a team. STEP 6 brings together an agent team and completes the HITL structure where humans intervene in the middle.
▶
Agent Memory System — Building a Bot That Remembers User Names and Conversations📌 Watch real-world bot and agent operation videos on the AI Hunter channel
await bot.send_message(
text=f"Should I send this email?\n{draft}",
reply_markup=[[✅Approve, ❌Reject]]
)
Human-in-the-Loop Design — Telegram Approval Button in Practice
The AI sent a vulgar email to the CEO.
This actually happened at a startup in 2023. An automated AI assistant was responding to customer complaints when a sentiment analysis error caused it to send "Your request is unreasonable" to the CEO's personal email. The result? A multimillion-dollar contract was lost.
This isn't an extreme case. 68% of teams that deployed AI agents in production experienced problems from "unintended automated execution" (Gartner, 2024). The smarter the AI becomes, the greater the fallout from poor decisions.
The solution? Human-in-the-Loop (HITL). A person clicks an approval button before important actions execute. Today, you'll implement this with a Telegram bot in 30 minutes.
1. Real Incidents When HITL Is Missing
Let me start with an analogy. An AI agent is like a new employee. Enthusiastic, hardworking, but capable of blowing up the meeting room sometimes. When you say "send an email to the customer," the new hire might interpret it as:
"Send email to all customers!" → Spam sent to 100,000 people
Real incident examples:
Case 1: Incorrect Email Auto-Send (2023)
A SaaS company's AI customer support bot was auto-responding to refund requests when it should have sent "refund not possible," but instead sent "full refund approved." Context comprehension failure. Thirty-two incorrect refund promises went out in that week alone, and the company faced legal disputes.
Case 2: Stock Trading AI Goes Rogue (2024)
An individual investor created an automated trading agent that received a "minimize losses" command and sold all holdings at the lowest point. The AI reported "losses reduced to zero." Technically correct. It reduced the "possibility" of losses to zero. 2 million won became 400,000 won.
Case 3: Calendar Agent's Meeting Massacre (2023)
In response to a "optimize my schedule" command, the AI judged 15 meetings to be inefficient and canceled them. Three of them were investor meetings.
Do you see the pattern? AI performs commands "well." It just executes its "interpretation" of your intent, not your intent itself.
# Simple example showing why this is dangerous
def send_email(to: str, subject: str, body: str):
# If AI calls this function directly?
# It's irreversible. The email is already sent.
email_service.send(to, subject, body)
return "Send Complete" # No cancel button
# HITL applied version
def request_email_approval(to: str, subject: str, body: str):
# Show to human first and wait for approval
pending_actions.create(
action_type="send_email",
params={"to": to, "subject": subject, "body": body},
status="PENDING"
)
notify_human("There is an email send request. Please review it.")
return "Awaiting Approval" # Not sent yet!
2. MIT Research Data: The Magic of AI+Human Collaboration
"Can't we just make AI smarter?"
No. Research proves it.
According to MIT Sloan School of Management (2023) research, compared to AI-only decision-making, the error rate decreased by 73% in Human-in-the-Loop structures. The effect was maximized particularly in "high-risk judgment" domains.
Why is there such a difference? Analysis from Stanford HAI (Human-Centered AI) Institute:
"AI excels at pattern recognition but must rely on human common sense for exceptional situation judgment. HITL is the optimal structure combining AI's strengths (speed, consistency) with human strengths (contextual understanding, ethical judgment)." — Stanford HAI, Human-AI Collaboration Report (2023)
✅ STEP 6a Completion Checklist
☐ Why HITL is necessary — I can explain the risks of AI-only execution
☐ I applied the request_email_approval() pattern to my code
☐ I understand the Telegram ✅Approve/❌Reject button implementation
☐ MIT research result: 73% error reduction with HITL application — I remember it
Before moving to STEP 6b, try building a Telegram approval bot yourself once.
An ordinary three working collaboratively beats a lone genius.
The same applies to AI. Stanford HAI 2024 research proved it. Multi-agent systems are 40% more accurate and 35% more creative than single agents. Why?
"If you make one LLM do everything, it ultimately does nothing well." — Stanford HAI, "Multi-Agent Collaboration Benchmark" (2024.03)
What I'm giving you today isn't theory. It's a 3-agent team you can copy and use right now. Trend researcher → Data analyst → Content writer. This one pipeline automates all reports, blogs, and market research.
1. Why is Multi-Agent 40% More Accurate?
I'll explain the limitations of a single agent using a bakery analogy.
A bakery owner does everything alone—mixing dough, baking, packaging, and taking payments. If just 3 customers show up, it all falls apart. While mixing dough, they forget about the oven; while calculating payments, they burn the bread.
This is the "putting everything into one prompt" approach.
3 Key Findings from Stanford Research
First, role separation reduces cognitive load.
When you tell GPT-4 "research and analyze and write," 70% of tokens are wasted deciding "what mode should I operate in?" When you separate roles? Each agent achieves 100% focus.
Second, mutual validation catches hallucinations.
The researcher finds data, and the analyst asks "is this correct?" The analyst's insights get verified by the writer asking "is there evidence?" Three-layer filtering reduced hallucination rate by 67%.
Third, expertise simulation improves quality.
The persona "you're a data analyst with 10 years of experience" actually works. In MIT research, LLMs given expert personas showed 28% higher performance on domain-specific tasks.
Actual numbers: Stanford benchmark results
- Complex research task accuracy: single agent 62% vs. multi-agent 87%
- Logical consistency score: single 71 points vs. multi 94 points
- Task completion time: single 45 seconds vs. multi 52 seconds (7 more seconds for 40% quality improvement)
7 more seconds for 40% better accuracy. Not making this trade-off is foolish.
2. Complete Python Code for the 3-Person Team
Theory is done. Copy and run this right now.
The structure is simple:
□ TrendResearcher: Receives a topic and researches 5 latest trends
□ DataAnalyst: Receives trends and derives insights
□ ContentWriter: Receives insights and writes a blog post
import os
from openai import OpenAI
from dataclasses import dataclass
from typing import List, Dict, Any
import json
# ═══════════════════════════════════════════
# Agent Base Class
# ═══════════════════════════════════════════
@dataclass
class AgentOutput:
"""Agent output standard format"""
agent_name: str
task: str
result: Dict[str, Any]
metadata: Dict[str, Any]
def to_json(self) -> str:
return json.dumps({
"agent": self.agent_name,
"task": self.task,
"result": self.result,
"metadata": self.metadata
}, ensure_ascii=False, indent=2)
@classmethod
def from_json(cls, json_str: str) -> 'AgentOutput':
data = json.loads(json_str)
return cls(
agent_name=data["agent"],
task=data["task"],
result=data["result"],
metadata=data["metadata"]
)
class BaseAgent:
"""Parent class for all agents"""
def __init__(self, name: str, role: str, model: str = "gpt-4o"):
self.name = name
self.role = role
self.model = model
self.client = OpenAI()
def _create_system_prompt(self) -> str:
return f"""You are a {self.role}.
[Behavioral Principles]
1. Always respond in structured JSON format
2. Include sources or evidence for all claims
3. Explicitly mark uncertain information
4. Provide concise and actionable information"""
def execute(self, task: str, context: Dict = None) -> AgentOutput:
"""Execute task - each agent overrides this"""
raise NotImplementedError
# ═══════════════════════════════════════════
# 1. Trend Researcher Agent (inheriting from BaseAgent)
# ═══════════════════════════════════════════
Limitlessman's Practical Guide — 9 Complete Business Support Agent Tool Use Disclosures
Theory is enough. From now on, I'm publicly releasing the core code of the business support agent that Limitlessman is actually operating. Tool Use is the agent's hands and feet—without it, the LLM is just a thinking brain.
9 Complete Tools List — Limitlessman Business Support Agent
Convey important decisions and findings to other agents
9
search_knowledge_base
Notion DB hybrid search (RAG)
Instantly query 15,723 internal documents
Autonomous Execution Loop — run_agent() Core Code
def run_agent(task: str, client, max_turns: int = 10) -> str:
"""
Claude Tool Use ReAct loop
task → Claude judgment → tool execution → Claude re-judgment → ... → completion
"""
messages = [{"role": "user", "content": task}]
turn = 0
while turn < max_turns:
turn += 1
print(f"[Turn {turn}] Claude evaluating...")
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
system=SYSTEM_PROMPT, # Role + security principles + tool usage guidelines
tools=TOOLS, # Pass 9 tool schemas
messages=messages
)
# ① Completion — Claude determines the task is complete
if response.stop_reason == "end_turn":
final = next((b.text for b in response.content if hasattr(b, "text")), "Complete")
print(f"Task completed ({turn} turns)")
return final
# ② Tool invocation — Claude selects a tool to execute
if response.stop_reason == "tool_use":
messages.append({"role": "assistant", "content": response.content})
tool_results = []
for block in response.content:
if block.type == "tool_use":
print(f" Executing tool: {block.name}({block.input})")
result = execute_tool(block.name, block.input) # Actual execution
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result # Return result to Claude
})
messages.append({"role": "user", "content": tool_results})
# → Loop repeats: Claude reviews results and makes next decision
return "max_turns exceeded"
ReAct Loop 3 Principles:
① stop_reason == "tool_use" → Execute tool → Pass result → Call Claude again
② stop_reason == "end_turn" → Claude self-judges completion → Loop exits
③ max_turns=10 → Max 10 iterations safety guard (prevents infinite loops)
This single loop enables "Summarize this month's meetings" → Check calendar → Search meeting notes → AI summarization → Send to Telegram to flow completely automatically.
Shared Memo Between Agents — The Real Structure of Multi-Agent Collaboration
# Dev team agent discovers bug → Records in shared memo
write_memo("dev_team", "Authentication token expiration bug found in login.py logic. Fix needed.")
# Operations agent reads memo and auto-reports to CEO
memo = read_memo()
# → "dev_team: Authentication token expiration bug found in login.py logic..."
send_email(
to="ceo@janda.com",
subject="[Auto Report] Dev Team Issue Detected",
body=f"Auto-detected by agent:\n\n{memo}"
)
Multi-Agent Collaboration Pattern (Limitlessman's Real Implementation):
Dev team agent → write_memo() → Shared file → read_memo() → Operations agent → CEO Telegram notification
Agents don't call each other directly. Shared memo acts as an async message queue, lowering coupling between agents.
Going Further — Framework Selection Guide
As multi-agent systems grow, using a dedicated framework beats building from scratch. 2026 benchmark—3 leading frameworks compared:
Framework
Core Features
Learning Curve
Best For
CrewAI
Role-based, build teams in 20 lines
⭐ Easy
Quick MVP, non-dev teams
LangGraph
Graph-based, checkpointing, complex state management
⭐⭐⭐ Intermediate
Production deployment, enterprise (2026 market leader)
AutoGen
Conversational, group discussion & deliberation possible
⭐⭐ Intermediate
Decision-making agents, research teams
Claude Native SDK
This book's approach — using Anthropic SDK directly
⭐ Easy (as you learned it)
Simple pipelines, cost optimization, when starting out
Not sure where to start? First, build one working agent using this book's approach (Claude Native). Then, as your team grows and state management gets complex, migrate in this order: CrewAI → LangGraph. Limitlessman followed the same path.
▶
Multi-Agent Team Setup — HITL Telegram Approval System in Practice📌 Watch real-world bot and agent operation videos on the AI Hunter channel
Humanity has always adapted to change.
We lit fires, created writing, invented printing presses, connected to the internet.
And now — AI agents have arrived.
Every time change has come, there have been two kinds of people.
Those who asked, "How do I use this?"
And those who turned away saying, "This doesn't concern me."
When the printing press arrived, scribes lost their jobs,
but those who learned to read became stronger than ever.
When the internet came, offline stores collapsed,
but those who learned to search placed the whole world on their desks.
AI agents don't replace you.
AI agents amplify your judgment by 10x.
Don't fear change.
You are descended from a species that has adapted to change for millions of years. That is human nature, and it is your instinct.
🛡️ STEP 7 — Cost Control & Harness
📊 Evaluation
👁️ Observability
🛡️ Guardrails
🧑 HITL
📦 Sandboxing
Your AI agent could be incurring charges right now, at this very moment.
I've been there too. I deployed a test agent one evening, went to sleep, and woke up to an API bill of $470. My agent got stuck in an infinite loop overnight, calling GPT-4 2,000 times. Think of it like a bakery: I told an employee "bake some bread," and they baked 5,000 loaves by dawn, blowing through all the ingredient budget.
"An agent without a harness is like a car without brakes."
Let me explain this precisely with a health inspector analogy. A health inspector visits the kitchen every day with a checklist. They verify refrigerator temperature, expiration dates, employee hygiene—checking and documenting each item. If they find a problem, they shut down operations immediately. A harness does exactly that for AI agents. It monitors in real-time which APIs your agent is calling, how many times, whether outputs are within normal range, and whether sensitive data is leaking—and it stops everything instantly if something seems wrong.
The AITF Security 5-Factor Framework stops this:
1. Supervisor — Monitors every action of the agent in real-time. Suspicious activity detected? Intervene immediately.
2. Input Guard — Filters incoming commands before processing. Blocks prompt injection and malicious requests at the source.
3. Output Guard — Validates outgoing responses. Prevents sensitive information leakage and abnormal outputs.
4. Escalation Protocol — Automated response based on risk level. Warning → Restriction → Forced termination in stages.
5. Audit Logger — Records everything. When problems occur, you can trace the root cause and clarify accountability.
The AITF API Security Guard integrates all five elements into a single layer. Deploy it in front of your agent and you capture the three major risks in one shot: billing runaway, prompt hacking, and data leakage.
Running agents without a harness right now? That's like scratching lottery tickets every day. You just don't know when it'll blow up.
5 Security Checkpoints Every CTO Must Verify When Adopting at the Enterprise Level
Unlike startups, enterprise environments don't accept "as long as it runs, we're good." Data compliance, corporate network isolation, and audit logs—you must design these three first to pass adoption review.
1. Data Outbound Transfer Control — What Leaves via API
Claude and GPT-4 are both external APIs. The moment customer names, contract amounts, or internal meeting notes end up in your prompt and go out the door, you fall under Personal Information Protection Act Article 17 (Third-party Disclosure).
# Mask sensitive data before API transmission
import re
def mask_pii(text: str) -> str:
"""Mask names, phone numbers, emails, and amounts"""
text = re.sub(r'\d{3}-\d{4}-\d{4}', '[Phone Number]', text)
text = re.sub(r'[\w.+-]+@[\w-]+\.\w+', '[Email]', text)
text = re.sub(r'\d{1,3}(,\d{3})+', '[Amount]', text)
return text
# Always mask before agent invocation
safe_prompt = mask_pii(raw_data)
response = client.messages.create(messages=[{"role":"user","content":safe_prompt}])
2. Corporate Network Isolation — On-Premises or VPC Deployment
Method
Description
Best For
Cost
Cloud API
Direct calls to Anthropic/OpenAI
Startups, SMBs
Usage-based
AWS Bedrock
Call Claude models within VPC (data processed within AWS)
Finance, Healthcare, Government
Cloud pricing
Azure OpenAI
Isolated environment within MS Azure
Microsoft-contracted enterprises
Cloud pricing
On-Premise LLM
Self-hosted servers running Llama 3.1, EXAONE, etc.
Defense/Finance Highest Grade
High Initial Construction Cost
3. Audit Log — "What the Agent Did" Must Always Be Recorded
import datetime, json
def audit_log(agent_name: str, tool: str, input_data: dict, output: str):
"""Compliance audit log — permanently immutable"""
log_entry = {
"timestamp": datetime.datetime.utcnow().isoformat() + "Z",
"agent": agent_name,
"tool_used": tool,
"input_summary": str(input_data)[:200], # Minimize personal information
"output_summary": output[:200],
"session_id": session_id
}
# Append-only storage to DB or S3
with open("audit.jsonl", "a") as f:
f.write(json.dumps(log_entry, ensure_ascii=False) + "\n")
4. ISMS·ISO 27001 Checkpoints
Most frequently flagged items in enterprise AI adoption reviews (KISA 2024 survey):
① API key storage method (HSM or Secret Manager usage)
② Personal information processing policy AI-related clause updates
③ Employee AI usage training completion records
④ Clear liability assignment in case of AI malfunction
⑤ DPA (Data Processing Agreement) execution with external AI service providers
5. Prompt Injection Defense
# Defense against user input hijacking the system prompt
SYSTEM = "You are a customer service bot. Answer only refund policy questions."
def safe_query(user_input: str) -> str:
# Block injection patterns
blocked = ["ignore previous", "disregard", "새로운 지시", "시스템 프롬프트"]
for pattern in blocked:
if pattern.lower() in user_input.lower():
return "부적절한 요청입니다."
# Place user input in user role only (no system role mixing)
return client.messages.create(
system=SYSTEM,
messages=[{"role": "user", "content": user_input}]
).content[0].text
Preventing AI API Cost Explosion — How to Run on $100/Month
One morning, my card notification buzzed.
"[AI API]: Unexpected Large Charge"
My heart sank. This was supposed to be just a "test" bot. Within days, tens of thousands of won had disappeared. It was a single infinite loop bug.
"An AI API is like a water faucet.
If you don't turn it off, the bill explodes."
After that, I became obsessed with cost monitoring. Now I run 21 bots on $100/month. That's 1/8 the cost of when I started.
Today, I'm sharing all that hard-won knowledge.
1. The Shocking Truth: Korean Costs 3x More Than English
First, let me face reality head-on.
A fact most Korean developers don't know: The same sentence costs 2-3x more tokens when written in Korean.
The Secret of Tokenization
AI models break text into pieces called "tokens". It's like a bakery cutting bread into slices and selling them by the piece. The problem is that the slicing method is English-centric.
# English tokenization example
"Hello, how are you?" → ["Hello", ",", " how", " are", " you", "?"]
# 6 tokens
# Korean tokenization example
"안녕하세요, 잘 지내세요?" → ["안", "녕", "하", "세", "요", ",", " 잘", " 지", "내", "세", "요", "?"]
# 12 tokens (2x)
Why does this happen?
The GPT series uses BPE (Byte Pair Encoding) algorithm. This algorithm combines frequently appearing character sequences into a single token. Because it was trained on English-heavy data, English patterns like "the", "ing", and "tion" are compressed efficiently.
Korean, on the other hand? It has low representation in the training data, so it's broken down almost character by character. Some Korean characters are even decomposed at the UTF-8 byte level.
"Same meaning, same length sentence.
Korean costs 2-3x more than English."
Actual Measurement Results:
English: "Please summarize this article in 3 bullet points"
→ 9 tokens
Korean: "이 기사를 3개의 핵심 포인트로 요약해주세요"
→ 24 tokens
Cost difference: 2.67x
This is unfair. But it's reality. All I can do is overcome it with strategy.
2. 2026 AI API Price Comparison Table
The first step in cost optimization is knowing your enemy.
🧠 Model Routing Strategy — Use Different Models by Task
If I use Opus for every task, costs explode 19 times. Conversely, if I use Haiku for everything, quality collapses.
The answer is model routing by task complexity.
# Model routing example
ROUTING = {
"complex": "claude-opus-4-7", # max_tokens=32000
"standard": "claude-sonnet-4-6", # max_tokens=8000
"fast": "claude-haiku-4-5-20251001", # max_tokens=2000
}
model = ROUTING["complex"] if scene_count > 30 else ROUTING["standard"]
Korean Cost Reduction Strategy:
① Write prompts in English → request results only in Korean (save 30~40% on costs)
② Simple classification/summarization: Haiku 4.5 → creative/analysis: Sonnet 4.6 → complex design only: Opus 4.7
③ Leverage caching: When repeating the same system prompt, use Anthropic prompt cache for up to 90% savings
④ Use $10K API credits: Call Opus 4.7 through AITF API server → save IDE session tokens
STEP 7 Completion Checkpoint
I've got cost control, security, and harnesses covered. Now I have a truly operational system. But there's one thing bugging me.
"Planners and marketers on my team don't know code. Do I have to ask developers every time someone wants to use the agent system?"
Build an agent without coding? That's exactly what STEP 8 — n8n does. Team members who aren't developers can create automated workflows directly.
▶
How to reduce AI agent costs to zero — caching and token-saving practical tips📌 Watch bot and agent operations videos on the AI Hunter channel
Without a single line of code, using only mouse clicks and drag-and-drop, I'll create a system where AI works automatically. Reading RSS feeds, AI summarization, Slack notifications—all completed in just 30 minutes, for real.
1. What is n8n? "The magical tool for automating without developers"
🤔Have you ever thought like this?
"Every morning I check the news and organize it—can't that happen automatically?"
"When customer inquiries come in, I wish AI would draft an answer first..."
"Can't I schedule a week's worth of Instagram posts all at once?"
n8n is a workflow automation tool that makes all of this possible without coding. When I connect nodes (function blocks) like assembling Lego blocks, I get a system where AI works 24 hours a day.
When building AI agents with many API calls, costs explode with Zapier/Make. With n8n self-hosted, I get unlimited free execution, and since AI nodes are built-in by default, setup is much easier.
2. Installing n8n (3 methods)
Choose the most convenient method based on your computer skills:
Method A: n8n Cloud (Easiest) ⭐ Recommended for Beginners
1Visit n8n.io
Open https://n8n.io in your browser → Click "Get started free"
2Create Account
Enter your email or sign up with your Google/GitHub account
3Create Workspace
Enter a team name (or your name if personal) → Done!
▲ The n8n Cloud dashboard that appears after signup. Click Workflows in the left menu →
"Create new workflow" to get started.
⚠️ Cloud Free Plan Limitations
After a 14-day trial, you'll need to convert to a paid plan (starting at $20/month). I recommend starting with the free trial for testing, and then switching to self-hosting once you're comfortable.
Method B: Docker Installation (Intermediate) ⭐ Recommended for Free Unlimited Use
If you have Docker Desktop installed, just run one line in your terminal:
Download and install the version that matches your OS from https://docker.com
2Open Terminal
Mac: Search for "Terminal" in Spotlight / Windows: "Command Prompt" or "PowerShell"
3Copy & Paste the Command Above, Then Press Enter
The first run will take 1-2 minutes to download the image
4Access in Your Browser
Type http://localhost:5678 → The n8n screen appears! 🎉
┌─────────────────────────────────────────────────┐
│ 🌐 http://localhost:5678 │
├─────────────────────────────────────────────────┤
│ │
│ n 8 n │
│ │
│ Set up owner account │
│ │
│ Email: [________________] │
│ Password: [________________] │
│ │
│ [ Next → ] │
│ │
└─────────────────────────────────────────────────┘
▲ After running Docker, access localhost:5678 in your browser to see the initial account setup
screen. Enter your email and password, then click Next.
Method C: npm Installation (Node.js Users)
If you already have Node.js installed:
npm install n8n -g
n8n start
Similarly, you can access it at http://localhost:5678.
3. First Workflow: RSS → Claude Summarization → Slack Notification
Now let's actually build it! This is a real-world project that you can complete within 30 minutes.
📰 RSS Feed Trigger (hourly)
→
🤖 Claude AI Generate summary
→
💬 Slack Channel notification
Node Configuration Guide
1Add RSS Feed Node
Click "+" button → Search RSS Feed → Add node
Enter your desired RSS URL in the URL field (example: https://techcrunch.com/feed/)
Set Poll Interval to 1 Hour (auto-collect every hour)
2Add Anthropic (Claude) Node
Click "+" to the right of the RSS node → Search Anthropic → Add node
Credentials: + Add → Enter your Anthropic API Key (one-time only)
Model: claude-haiku-4-5-20251001 (fast and affordable)
Enter your prompt:
Summarize the following news in 3 lines.
Order by: key numbers, impact, implications.
Title: {{ $json.title }}
Content: {{ $json.contentSnippet }}
3Add Slack Node
Click "+" to the right of the Claude node → Search Slack → Add node
Credentials: Enter your Slack Bot Token
Channel: #ai-news-digest
Message: *{{ $('RSS Feed').item.json.title }}*\n{{ $json.content }}
4Test & Save
Click "Test workflow" → Verify each node shows a green checkmark ✓
Toggle switch in the upper right → Turn Active on
Now your AI will read news and send summaries to Slack every hour!
✅ Done! Remember this one thing
n8n is all about connecting nodes (functional blocks). Answer these three questions—trigger node (when?), processing node (what?), output node (where?)—and you can create any automation.
Next step: Add a conditional branch (IF node) to this workflow for smart routing like "send AI-related news to Slack, everything else to email."
▶
n8n automation without coding — Complete Slack & email integration in 30 minutes📌 Watch hands-on bot and agent operation videos on the AI Hunters channel
🎼 STEP 9 — Production Deployment & AITF Utilization
Day 1~71 bot → /write/blog first call
Day 8~14Agent + HITL Telegram
Day 15~21Harness checklist 20
Day 22~30Orchestrator KPI auto reporting
While you sleep, someone's system is already working.
Every morning at 7 a.m. There's something that rings before the alarm. It's the completion notification sent by an automated workflow. By the time you brew your coffee, a day's worth of work is already organized.
"Freedom isn't about having lots of time. It's about having a system that runs without you."
The daily_orchestrator.py that Limitlessman directly operates runs automatically at 7 a.m. every day and processes STEP 1~15 in order.
Planning → Script → TTS → Video → Thumbnail → Upload → Notification all flow in one go. This is possible because the orchestrator connects every stage.
AITF API Workflow is like a bakery conveyor belt. Dough → Fermentation → Baking → Packaging. Bread comes out without human hands touching it. Your work is the same. Data collection
→ Analysis → Report → Delivery. Once designed, it runs on its own every day.
If you don't know this structure now, you'll be working late the same way a year from now.
Freedom isn't far away. Just one system running on its own at 07:00 is enough.
Limitlessman daily_orchestrator.py — 15 STEP Architecture Currently in Operation
This is not theory. This is the Limitlessman orchestrator that actually runs at 07:00 AM every day. STEP 1~15 flow in order, and even if one STEP fails, the entire system doesn't stop.
Daily Execution STEP (Regardless of day of week)
🎯
STEP 1
Generate today's topic claude()
→
📝
STEP 2
Daily blog bot ai_daily_writer.py
→
✍️
STEP 3
Writing bot Blog + SNS 5 formats
→
📹
STEP 4
AI Hunter Shorts Auto generate + upload
→
🎬
STEP 5
Vibe Coding Shorts Auto generate + upload
📚
STEP 6
Ebook Shorts Bot Promotional Shorts Automation
→
📧
STEP 7
Email Bot 7-Day Nurturing Sequence
→
💬
STEP 8
Comment Bot AI Auto-Reply (10 min)
→
📊
STEP 12
KPI Report Telegram Delivery
Conditional Execution STEP (By Day of Week)
Day
STEP
Bot
Processing
Tue/Thu
STEP 9
Long-Form Video Bot
Claude Script → AI Voice → Pexels Video → MoviePy Composition → YouTube Unlisted Upload (approx. 45 min)
Monday
STEP 10
Insight Hunter
YouTube + Web Research Auto-Collection, Weekly Trend Summary
Core Function — run_bot() : Orchestrator's Single Interface to Execute All Bots
def run_bot(script: Path, args: list, timeout: int = 300) -> tuple[int, str]:
"""
Execute bot as subprocess — timeout + error capture
Returns: (return_code, stdout)
"""
if not script.exists():
log(f"Script not found: {script.name}", "WARN")
return -1, "File not found" # SKIP — no full stop
cmd = [PYTHON, str(script)] + [str(a) for a in args]
log(f"Running: {script.name} {' '.join(str(a) for a in args)}")
try:
result = subprocess.run(
cmd, capture_output=True, text=True,
encoding="utf-8", errors="replace", timeout=timeout
)
if result.stdout:
log(result.stdout[-600:]) # Log only the last 600 characters
if result.returncode != 0 and result.stderr:
log(result.stderr[-300:], "WARN")
return result.returncode, result.stdout
except subprocess.TimeoutExpired:
log(f"Timeout ({timeout} seconds)", "ERROR")
return -2, "timeout" # Timeout — no full shutdown
# Execution example — STEP 4: AI Hunter Shorts pipeline
rc4, _ = run_bot(BOT_SHORTS_AI, ["--topic", today_topic], timeout=300)
# Day-based conditional — Tue/Thu longform only
if IS_TUE_THU:
rc9, _ = run_bot(BOT_LONGFORM, [], timeout=3600) # Max 1 hour
# STEP 12: Report all results via Telegram
telegram(f"Limitlessman Daily Report\nSTEP4: {_icon(rc4)}\nSTEP9: {_icon(rc9)}")
Design Principle — "Continue Even If Failed":
Even if STEP 3 fails, STEP 4 executes. One bot's error doesn't stop the entire pipeline.
In the final STEP 12, I collect all results and report via Telegram → CEO reviews in the morning.
python daily_orchestrator.py --install Run once to auto-register in Windows Task Scheduler at 07:00.
Complete Production Deployment Flow — GitHub→Render→Scheduler→Monitoring
"It works fine on my computer."
The moment you say that, you're an amateur.
According to the Gartner 2024 report, 85% of AI projects fail at the production deployment stage. It's not the model. It's the deployment.
Today, I'll show you a complete deployment pipeline from local development to production that never breaks. Automate with GitHub Actions, deploy to Render, run with a scheduler, and protect it with monitoring. With actual code.
1. "Why It Works Locally But Breaks in Production" TOP 5
Let's diagnose first. Why does it break?
According to Microsoft Azure DevOps team's 2023 analysis, 78% of deployment failures aren't code problems—they're environment problems. Like a bakery: the recipe (code) is perfect, but the oven temperature (server environment) is different.
TOP 1: Missing Environment Variables (34% Failure Rate)
Locally, there's a .env file. On the server, there isn't. Done.
# Local: Works
OPENAI_API_KEY=sk-xxx # Exists in .env file
# Server: Breaks
os.getenv("OPENAI_API_KEY") # Returns None → 500 error
Solution: Mandatory environment variable check script before deployment.
# check_env.py
import os
import sys
REQUIRED_VARS = [
"OPENAI_API_KEY",
"DATABASE_URL",
"SECRET_KEY",
"TELEGRAM_BOT_TOKEN"
]
missing = [var for var in REQUIRED_VARS if not os.getenv(var)]
if missing:
print(f"❌ Missing environment variables: {missing}")
sys.exit(1)
else:
print("✅ All environment variables verified")
TOP 2: Dependency Version Conflicts (28% Failure Rate)
Locally numpy 1.24 is installed, on the server numpy 1.21 gets installed. Because you didn't specify the version in requirements.txt.
Local PC has 32GB RAM. Render free tier has 512MB. Load a 1GB CSV with pandas? Instant death.
Anthropic's 2024 production guide says: "Start with the free tier, but optimize memory usage from the beginning."
TOP 5: Port/Network Configuration (7% Failure Rate)
# ❌ Local only
app.run(host="127.0.0.1", port=5000)
200000
# ✅ Production (External Access Allowed)
app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)))
Render, Heroku, and Railway all automatically inject the PORT environment variable. Hard-coding it will break.
2. Step-by-Step Deployment Checklist
Just like military combat readiness inspections, deployment needs a checklist too. Here's a practical checklist borrowed from AWS's Well-Architected Framework.
□ Code Level Check (D-1 Before Deployment)
□ Remove print() statements (replace with logging)
□ No hard-coded API keys (verify with git log)
□ Wrap all external API calls in try-except
□ Set timeouts (requests.get(url, timeout=30))
□ Check memory usage (handle large files with streaming)
□ Run test code (pytest -v)
□ Pass linter (flake8 . --max-line-length=120)
□ Security Check (D-1 Before Deployment)
□ .gitignore includes .env, *.pem, secrets/
□ Verify past commits with git log --all --full-history -- "*.env"
□ API key rotation (changed this month?)
□ CORS settings — specify allowed domains (no *, no wildcards)
□ Rate limiting applied (max 60 requests per IP per minute)
□ SQL injection / Prompt injection defense verified
One-Person Company Complete Daily Workflow Automation — Time-Based Design
According to McKinsey's 2024 report, solo entrepreneurs work an average of 52 hours per week. Of that, 67% is repetitive work. Content creation, distribution, management, customer response — tasks requiring no creative judgment.
What happens when you tie these tasks together with an orchestrator? Real Limitlessman operations show: 8 hours of daily repetitive work compresses to 47 minutes of review. I'll show you the actual timeline.
Time-Based Automation Schedule: 06:00~23:00
A complete daily automation schedule for a one-person company.
Register this timeline in cron or a scheduler. Your business runs while you sleep.
🌅 Early Morning (06:00 ~ 08:00) - Content Generation
06:00 - Generate 3 blog drafts (blog/create) 06:30 - Generate YouTube Shorts scripts (youtube/shorts) 07:00 - SEO analysis and keyword extraction (analyze/seo) 07:30 - Generate image prompts (image/prompt)
"Why generate content in the early morning?" Publishing at 9 AM has 34% higher reach. (HubSpot 2024 data)
30 minutes to generate, 30 minutes to review, scheduled posting complete.
🌤️ Morning (09:00 ~ 12:00) - Deployment and Spread
Key Point: 15 STEPS run automatically.
All you need to do is 30 minutes of review in the morning and 17 minutes checking reports in the evening. Total 47 minutes.
2. Practical curl Command Examples by Product
Theory is done. Now copy and paste into your terminal and execute it right away.
These are practical curl commands for the 5 core products of the AITF API.
{
"status": "success",
"content": {
"title": "2026 AI Automation: 5 Things Every Solo Entrepreneur Must Know",
"body": "## Introduction\n\nAccording to Gartner's forecast...",
"meta_description": "2026 AI Automation Trends and Productivity Enhancement Strategy for Solo Entrepreneurs",
"word_count": 2503,
"seo_score": 87,
"keywords_used": ["AI automation", "solo entrepreneur", "productivity"]
},
"generation_time_ms": 3241
}
▶
MCP Server Complete Mastery EP11 — AITF API Real-World Deployment Process Fully Revealed📌 Watch bot and agent operational videos on the AI Hunter channel
"You are standing not at the end of a journey, but at the real starting point."
You have read every chapter in this book. Congratulations. But to be honest with you, simply reading a book won't change anything. Knowledge has value only when it is executed.
In this chapter, I present a concrete roadmap to turn everything you learned from the previous 11 chapters into an operationally viable system within 30 days. What to do each day, how long it takes, and how to solve problems when you're stuck—everything is here.
🎯 What You Will Have After 30 Days
Before starting the roadmap, let's clarify what you'll look like after 30 days:
Area
What Gets Built
Expected Effect
Collection Automation
3 Types of News/Competitor/Community Monitoring Bots
5 hours/week → 0 hours
Content Generation
5 Types of Blog/SNS/Newsletter Draft Bots
20 hours/month → 2 hours
Analysis System
4 Types of Trend/Sentiment/Competition Analysis Bots
Save 1M won/month in consulting costs
Operations Automation
5 Types of Report/Summary/Alert Bots
3 hours/week → 0 hours
Decision Support
Research/Comparison/Recommendation Bots (4 types)
3x Faster Decision-Making
Infrastructure
Cloud Deployment + Monitoring + HITL
24/7 Uninterrupted Operations
Total 21 Bots + Complete Operations System = 40+ Hours Saved Per Month + Cost Reduction
📅 Week 1 (Days 1-7): Building Foundations
The first week is about building your foundational strength. Don't rush. When you establish a solid foundation here, the remaining 3 weeks will go smoothly.
Day 1: Environment Setup Complete + First Agent Running ⏱️ 2-3 hours
Day 3-5: Complete 3 Collector Bots ⏱️ 3-4 hours each
Day 3: News Collector Bot
# ai-agents/agents/news_collector.py
import requests
from bs4 import BeautifulSoup
from datetime import datetime
import json
class NewsCollector:
"""Naver News Collector Bot"""
def __init__(self, keywords: list):
self.keywords = keywords
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
def collect(self, keyword: str, max_articles: int = 5) -> list:
"""Collect news by keyword"""
url = f"https://search.naver.com/search.naver?where=news&query={keyword}"
try:
response = requests.get(url, headers=self.headers, timeout=10)
soup = BeautifulSoup(response.text, 'html.parser')
articles = []
news_items = soup.select('.news_tit')[:max_articles]
for item in news_items:
articles.append({
"title": item.get_text(),
"url": item.get('href'),
"keyword": keyword,
"collected_at": datetime.now().isoformat()
})
return articles
except Exception as e:
print(f"Collection error: {e}")
return []
def collect_all(self) -> list:
"""Collect all keywords"""
all_articles = []
for keyword in self.keywords:
articles = self.collect(keyword)
all_articles.extend(articles)
print(f"✅ '{keyword}' collection complete: {len(articles)} articles")
return all_articles
def save_results(self, articles: list, filename: str = "news_results.json"):
"""Save results"""
with open(filename, 'w', encoding='utf-8') as f:
json.dump(articles, f, ensure_ascii=False, indent=2)
print(f"💾 Save complete: {filename}")
# Usage example
if __name__ == "__main__":
collector = NewsCollector(["AI Agent", "ChatGPT", "Claude AI"])
articles = collector.collect_all()
collector.save_results(articles)
Day 4: Competitor Monitoring Bot
# ai-agents/agents/competitor_monitor.py
import requests, hashlib, json, os
from bs4 import BeautifulSoup
from datetime import datetime
class CompetitorMonitor:
"""Bot that detects competitor website changes"""
def __init__(self, targets: list):
"""targets: [{"name": "Company Name", "url": "URL", "selector": "CSS selector"}]"""
self.targets = targets
self.headers = {"User-Agent": "Mozilla/5.0"}
self.cache_file = "competitor_cache.json"
self.cache = self._load_cache()
def _load_cache(self) -> dict:
if os.path.exists(self.cache_file):
with open(self.cache_file, 'r') as f:
return json.load(f)
return {}
def _save_cache(self):
with open(self.cache_file, 'w') as f:
json.dump(self.cache, f)
def _get_content_hash(self, url: str, selector: str) -> tuple:
try:
resp = requests.get(url, headers=self.headers, timeout=10)
soup = BeautifulSoup(resp.text, 'html.parser')
el = soup.select_one(selector)
text = el.get_text(strip=True) if el else ''
return hashlib.md5(text.encode()).hexdigest(), text
except Exception as e:
return None, str(e)
def check_all(self) -> list:
"""Return changed competitor pages"""
changed = []
for t in self.targets:
new_hash, content = self._get_content_hash(t["url"], t["selector"])
old_hash = self.cache.get(t["url"])
if new_hash and new_hash != old_hash:
changed.append({"name": t["name"], "url": t["url"],
"content_preview": content[:200],
"detected_at": datetime.now().isoformat()})
self.cache[t["url"]] = new_hash
print(f"🔴 Change detected: {t['name']}")
else:
print(f"✅ No changes: {t['name']}")
self._save_cache()
return changed
if __name__ == "__main__":
monitor = CompetitorMonitor([
{"name": "Competitor A", "url": "https://competitor-a.com/pricing", "selector": ".price-table"},
{"name": "Competitor B", "url": "https://competitor-b.com/blog", "selector": ".post-list"},
])
changes = monitor.check_all()
if changes:
print(f"\n🚨 {len(changes)} changes detected → Telegram report needed")
Day 5: SNS Keyword Tracking Bot
# ai-agents/agents/sns_keyword_tracker.py
import anthropic, os, json
from datetime import datetime
client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
KEYWORDS = ["AI Agent", "Claude API", "Automation Bot", "n8n"]
def analyze_trend_with_claude(keyword: str, sample_posts: list) -> dict:
"""Analyze keyword trends with Claude"""
posts_text = "\n".join([f"- {p}" for p in sample_posts[:10]])
response = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=500,
messages=[{
"role": "user",
"content": f"""Analyze social media sentiment for the keyword '{keyword}'.
Sample posts:
{posts_text}
Respond only in the following JSON format:
{{"sentiment": "positive/neutral/negative", "trend": "rising/stable/declining",
"key_topics": ["key topic 1", "key topic 2"],
"action_suggestion": "1-line content strategy recommendation"}}"""
}]
)
try:
return json.loads(response.content[0].text)
except:
return {"sentiment": "analysis unavailable", "trend": "analysis unavailable",
"key_topics": [], "action_suggestion": "retry needed"}
def save_report(results: list):
filename = f"sns_trend_{datetime.now().strftime('%Y%m%d')}.json"
with open(filename, 'w', encoding='utf-8') as f:
json.dump(results, f, ensure_ascii=False, indent=2)
print(f"📊 Trend report saved: {filename}")
if __name__ == "__main__":
results = []
for kw in KEYWORDS:
# In production, collect posts via Twitter/Naver API
sample = [f"Post related to {kw} {i}" for i in range(5)]
analysis = analyze_trend_with_claude(kw, sample)
results.append({"keyword": kw, **analysis})
print(f"'{kw}': {analysis['sentiment']} / {analysis['trend']}")
save_report(results)
Day 6-7: Auto Blog Generation Bot (Collection → Generation Pipeline)
# ai-agents/agents/blog_generator.py
import anthropic, os, json
from datetime import datetime
from pathlib import Path
client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
def generate_blog_post(topic: str, keywords: list, tone: str = "professional and practical") -> dict:
"""Generate SEO-optimized blog post with Claude"""
kw_str = ", ".join(keywords)
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=3000,
system=f"You are a {tone} blog writer. Write in Korean with SEO in mind.",
messages=[{
"role": "user",
"content": f"""Topic: {topic}
Required keywords: {kw_str}
Write a blog post with the following structure (1500~2000 characters):
1. Title (suggest 3 high-click titles)
2. Introduction (mention reader pain points, 3-4 sentences)
3. Body (3 H2 sections, each with code/examples)
4. Conclusion (summarize key points + CTA)
5. Meta description (160 characters or less)
Respond in JSON format:
{{"titles": ["title1", "title2", "title3"],
"intro": "introduction",
"sections": [{{"h2": "subtitle", "content": "content"}}],
"conclusion": "conclusion",
"meta_description": "meta"}}"""
}]
)
try:
return json.loads(response.content[0].text)
except:
return {"raw": response.content[0].text}
def save_blog_html(post: dict, topic: str):
"""Save blog post as HTML file"""
output_dir = Path("blog_output")
output_dir.mkdir(exist_ok=True)
title = post.get("titles", [topic])[0]
date = datetime.now().strftime("%Y-%m-%d")
filename = output_dir / f"{date}_{topic[:20].replace(' ', '_')}.html"
sections_html = ""
for s in post.get("sections", []):
sections_html += f"
{s['h2']}
\n
{s['content']}
\n"
html = f"""
{title}
{title}
{post.get('intro', '')}
{sections_html}
Conclusion
{post.get('conclusion', '')}
💳 Buy with PayPal
"""
filename.write_text(html, encoding='utf-8')
print(f"✅ Blog saved: {filename}")
return str(filename)
if __name__ == "__main__":
post = generate_blog_post(
topic="How to automate work with AI agents",
keywords=["AI agent", "Claude API", "automation", "Python"]
)
save_blog_html(post, "AI_agent_automation")
The ReAct (Reasoning + Acting) pattern is a loop where AI thinks → acts → observes → thinks again. It aligns perfectly with Claude's Tool Use structure.
# ai-agents/react_agent.py
import anthropic, os, json, requests
from datetime import datetime
client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
# Define 3 tools
TOOLS = [
{
"name": "web_search",
"description": "Search the internet for the latest information",
"input_schema": {
"type": "object",
"properties": {"query": {"type": "string", "description": "Search query"}},
"required": ["query"]
}
},
{
"name": "save_file",
"description": "Save text content to a file",
"input_schema": {
"type": "object",
"properties": {
"filename": {"type": "string"},
"content": {"type": "string"}
},
"required": ["filename", "content"]
}
},
{
"name": "send_telegram",
"description": "Send a message to Telegram",
"input_schema": {
"type": "object",
"properties": {"message": {"type": "string", "description": "Message to send"}},
"required": ["message"]
}
}
]
def web_search(query: str) -> str:
"""Simulate search instead of actual search (connect SerpAPI in production)"""
return f"'{query}' search results: Found 5 related articles (simulated)"
def save_file(filename: str, content: str) -> str:
with open(filename, 'w', encoding='utf-8') as f:
f.write(content)
return f"File saved: {filename} ({len(content)} characters)"
def send_telegram(message: str) -> str:
token = os.getenv("TELEGRAM_BOT_TOKEN")
chat_id = os.getenv("TELEGRAM_CHAT_ID")
if not token:
return "Telegram not configured (simulated)"
url = f"https://api.telegram.org/bot{token}/sendMessage"
requests.post(url, json={"chat_id": chat_id, "text": message})
return "Telegram message sent"
TOOL_MAP = {"web_search": web_search, "save_file": save_file, "send_telegram": send_telegram}
def run_react_agent(task: str, max_iterations: int = 5) -> str:
"""Run ReAct loop"""
messages = [{"role": "user", "content": task}]
print(f"\n🤖 Task: {task}")
for i in range(max_iterations):
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=2000,
tools=TOOLS,
messages=messages
)
if response.stop_reason == "end_turn":
result = response.content[0].text
print(f"\n✅ Complete: {result}")
return result
if response.stop_reason == "tool_use":
messages.append({"role": "assistant", "content": response.content})
tool_results = []
for block in response.content:
if block.type == "tool_use":
print(f" 🔧 [{i+1}] {block.name}({block.input})")
result = TOOL_MAP[block.name](**block.input)
print(f" 📤 Result: {result}")
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
messages.append({"role": "user", "content": tool_results})
return "Maximum iteration count exceeded"
if __name__ == "__main__":
run_react_agent(
"Search for AI agent trends, save a summary file, and report it via Telegram."
)
Day 10-11: Tool Use 3 Practical Integration
# ai-agents/tools/tool_registry.py
# Production-grade Tool 3 types complete version
import anthropic, os, json, smtplib
from email.mime.text import MIMEText
from pathlib import Path
client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
# Tool 1: Read/write files
def read_file(path: str) -> str:
p = Path(path)
if not p.exists():
return f"File not found: {path}"
return p.read_text(encoding='utf-8')
def write_file(path: str, content: str) -> str:
Path(path).write_text(content, encoding='utf-8')
return f"Saved: {path}"
# Tool 2: Send email (Gmail SMTP)
def send_email(to: str, subject: str, body: str) -> str:
gmail = os.getenv("GMAIL_ADDRESS")
password = os.getenv("GMAIL_APP_PASSWORD")
if not gmail:
return "Gmail not configured (simulation)"
msg = MIMEText(body, 'plain', 'utf-8')
msg['Subject'] = subject
msg['From'] = gmail
msg['To'] = to
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login(gmail, password)
smtp.send_message(msg)
return f"Email sent: {to}"
# Tool 3: Save/retrieve JSON data
def save_data(key: str, value: str, store_file: str = "agent_store.json") -> str:
store = {}
if Path(store_file).exists():
store = json.loads(Path(store_file).read_text())
store[key] = {"value": value, "updated": __import__('datetime').datetime.now().isoformat()}
Path(store_file).write_text(json.dumps(store, ensure_ascii=False, indent=2))
return f"Saved: {key}"
def get_data(key: str, store_file: str = "agent_store.json") -> str:
if not Path(store_file).exists():
return "No data found"
store = json.loads(Path(store_file).read_text())
return store.get(key, {}).get("value", f"Key not found: {key}")
Day 12-14: HITL (Human-in-the-Loop) Telegram Approval
HITL is a pattern where AI receives human approval before performing risky actions. It's the core of the "AI Team Lead" structure.
# ai-agents/hitl_agent.py
import anthropic, os, requests, time, json
from datetime import datetime
client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
TELEGRAM_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
TELEGRAM_CHAT = os.getenv("TELEGRAM_CHAT_ID")
def telegram_send(text: str) -> int:
"""Send message and return message_id"""
r = requests.post(
f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": TELEGRAM_CHAT, "text": text, "parse_mode": "HTML"}
)
return r.json().get("result", {}).get("message_id", 0)
def telegram_ask_approval(action_name: str, details: str, timeout: int = 300) -> bool:
"""Request approval via Telegram → wait for /yes or /no response within 5 minutes"""
msg = f"""🤖 Approval Request
━━━━━━━━━━━━━━
Task: {action_name}
Details: {details}
Time: {datetime.now().strftime('%H:%M:%S')}
━━━━━━━━━━━━━━
✅ /yes — Approve ❌ /no — Deny
⏱ Auto-deny if no response within {timeout//60} minutes"""
msg_id = telegram_send(msg)
print(f"📨 Approval request sent (msg_id={msg_id})")
# Polling: Wait for /yes or /no
deadline = time.time() + timeout
last_update = 0
while time.time() < deadline:
r = requests.get(
f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/getUpdates",
params={"offset": last_update + 1, "timeout": 10}
).json()
for update in r.get("result", []):
last_update = update["update_id"]
text = update.get("message", {}).get("text", "").strip().lower()
if text == "/yes":
telegram_send("✅ Approved. Executing.")
return True
if text == "/no":
telegram_send("❌ Denied. Stopping.")
return False
telegram_send("⏰ Timeout — auto-denied")
return False
def run_hitl_pipeline(task: str):
"""Pipeline that requires human approval before risky operations"""
print(f"📋 Analyzing task: {task}")
# Step 1: Establish execution plan with Claude
plan_resp = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1000,
messages=[{"role": "user",
"content": f"Summarize the execution plan for the following task in 3 steps: {task}"}]
)
plan = plan_resp.content[0].text
# Step 2: Request human approval
approved = telegram_ask_approval(
action_name=task[:50],
details=f"Execution plan:\n{plan[:300]}"
)
if not approved:
print("❌ User denied → stopping execution")
return
# Step 3: Execute after approval
print("✅ Approval complete → starting execution")
result_resp = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=2000,
messages=[{"role": "user", "content": f"Execute the following task and report the results: {task}"}]
)
result = result_resp.content[0].text
telegram_send(f"📊 Execution complete\n\n{result[:500]}")
print(f"Results: {result}")
if __name__ == "__main__":
run_hitl_pipeline("Analyze price changes for 3 competitors and send email")
Week 3 (Day 15~21): Building Production Harness ⏱️ 2-3 hours each
I've built the agent. Now I create a structure that runs 24 hours without breaking.
# ai-agents/daily_orchestrator.py
"""Auto-run daily at 07:00 — register with Windows Task Scheduler"""
import subprocess, os, json, time
from datetime import datetime
from pathlib import Path
LOG_DIR = Path("logs")
LOG_DIR.mkdir(exist_ok=True)
log_file = LOG_DIR / f"orchestrator_{datetime.now().strftime('%Y-%m-%d')}.log"
def log(msg: str):
ts = datetime.now().strftime("%H:%M:%S")
line = f"[{ts}] {msg}"
print(line)
with open(log_file, 'a', encoding='utf-8') as f:
f.write(line + '\n')
def run_step(name: str, script: str, timeout: int = 300) -> bool:
log(f"▶ STEP start: {name}")
try:
result = subprocess.run(
["python", script],
capture_output=True, text=True, timeout=timeout, encoding='utf-8'
)
if result.returncode == 0:
log(f"✅ STEP completed: {name}")
return True
else:
log(f"❌ STEP failed: {name}\n{result.stderr[:500]}")
return False
except subprocess.TimeoutExpired:
log(f"⏰ STEP timeout: {name}")
return False
except Exception as e:
log(f"🔥 STEP error: {name} — {e}")
return False
def send_daily_report(results: dict):
"""Report daily execution results via Telegram"""
import requests
token = os.getenv("TELEGRAM_BOT_TOKEN")
chat = os.getenv("TELEGRAM_CHAT_ID")
if not token: return
icons = {True: "✅", False: "❌"}
lines = [f"📊 Daily Orchestrator Report",
f"Date: {datetime.now().strftime('%Y-%m-%d')}",
"━━━━━━━━━━━━━━"]
for step, ok in results.items():
lines.append(f"{icons[ok]} {step}")
total = len(results)
passed = sum(results.values())
lines += ["━━━━━━━━━━━━━━", f"Result: {passed}/{total} successful"]
requests.post(
f"https://api.telegram.org/bot{token}/sendMessage",
json={"chat_id": chat, "text": "\n".join(lines), "parse_mode": "HTML"}
)
PIPELINE = [
("News collection", "agents/news_collector.py"),
("Competitor monitoring", "agents/competitor_monitor.py"),
("SNS trend tracking", "agents/sns_keyword_tracker.py"),
("Blog generation", "agents/blog_generator.py"),
("Email delivery", "agents/email_sender.py"),
]
if __name__ == "__main__":
log("🚀 Orchestrator started")
results = {}
for name, script in PIPELINE:
results[name] = run_step(name, script)
time.sleep(2)
send_daily_report(results)
log("🏁 Orchestrator completed")
Day 25-27: KPI Dashboard (HTML)
# ai-agents/kpi_dashboard.py
"""Read agent_runs.jsonl and generate KPI HTML dashboard"""
import json
from pathlib import Path
from datetime import datetime, timedelta
from collections import defaultdict
def load_runs(log_file: str = "agent_runs.jsonl") -> list:
if not Path(log_file).exists():
return []
with open(log_file, 'r', encoding='utf-8') as f:
return [json.loads(line) for line in f if line.strip()]
def calc_kpi(runs: list) -> dict:
"""Calculate core KPIs"""
last_7 = [r for r in runs
if r.get("ts", "") >= (datetime.now() - timedelta(days=7)).isoformat()]
agents = defaultdict(lambda: {"total": 0, "success": 0, "tokens": 0})
for r in last_7:
a = agents[r.get("agent", "unknown")]
a["total"] += 1
if r.get("event") == "complete":
a["success"] += 1
a["tokens"] += r.get("tokens_used", 0)
return {
"period": "Last 7 days",
"total_runs": len(last_7),
"agents": dict(agents),
"success_rate": sum(a["success"] for a in agents.values()) /
max(sum(a["total"] for a in agents.values()), 1) * 100
}
def format_report(kpi: dict) -> str:
"""Generate text KPI report (for terminal output and file storage)"""
sep = "=" * 50
lines = [
sep,
" AI Agent KPI Report",
f" Period: {kpi['period']}",
f" Generated: {datetime.now().strftime('%Y-%m-%d %H:%M')}",
sep,
f" Total runs: {kpi['total_runs']} times",
f" Success rate: {kpi['success_rate']:.1f}%",
f" Active agents: {len(kpi['agents'])} agents",
"-" * 50,
]
for agent, data in kpi["agents"].items():
rate = data["success"] / max(data["total"], 1) * 100
lines.append(f" {agent:<20} {data['total']:>4} times {rate:>5.1f}% {data['tokens']:>8,} tokens")
lines.append(sep)
return "\n".join(lines)
if __name__ == "__main__":
runs = load_runs()
kpi = calc_kpi(runs)
report = format_report(kpi)
print(report)
# Save as JSON (easy format for other tools to read)
out = Path(f"kpi_{datetime.now().strftime('%Y%m%d')}.json")
out.write_text(json.dumps(kpi, ensure_ascii=False, indent=2), encoding='utf-8')
print(f"\n✅ KPI JSON saved: {out}")
Days 28-30: Automated KPI Reporting + Final Deployment
📅 Automation Schedule Design Principles
The core of Days 28-30 is deciding "when, what, and how to run automatically".
Recommended schedule structure:
• Daily at 07:00 — Run collector bot → generator bot → orchestrator in sequence
• Every Monday at 09:00 — Send weekly KPI report via Telegram
• 1st of each month — Cost settlement + set next month's goals
Scheduler selection criteria:
• Windows: Task Scheduler — Register via GUI or use schtasks command
• Mac/Linux: cron — Edit with crontab -e
• Cloud deployment: GitHub Actions schedule, Railway cron, or n8n Schedule trigger recommended
KPI reporting works by having kpi_dashboard.py read agent_runs.jsonl, calculate success rates, token usage, and per-agent statistics, then send them via Telegram Bot API (sendMessage).
Day 30 Final Checklist — Confirm solo AI operations team is complete:
☐ Run deployment_harness.py → All 20 items pass
☐ Verify scheduler registration (orchestrator auto-starts daily at 07:00)
☐ Confirm KPI report received on Telegram
30-day roadmap completion checklist:
□ 3 collector bots → Running automatically daily
□ 2 generator bots → Auto-generating blog and SNS drafts
□ 1 agent → Tool Use + HITL Telegram connection complete
□ Orchestrator → Registered in Windows Task Scheduler for 07:00
□ Cost monitoring → Monthly budget alert configured
"After 30 days, you are no longer a person who wants to try AI. You are a person operating an AI system."
▶
30-day completion challenge — Check progress daily with AI Hunter📌 Watch hands-on bot and agent operation videos on the AI Hunter channel
Let me put in perspective how insane this growth rate is.
The smartphone market achieved a 23% annual growth rate over 10 years from 2007 to 2017. AI agents are growing at twice that speed.
What's even more shocking is the corporate adoption rate.
According to McKinsey's 2024 survey, 72% of global corporations responded that they would "adopt AI agents in core operations by 2027." However, only 11% of companies answered that they have "sufficient talent to design and operate AI agents."
What happens when the supply-demand gap is this large?
Prices skyrocket.
And by 'price,' I mean 'your salary.'
Here's an analogy. Do you remember how rare iPhone app developers were in 2008? iOS developers earned 2-3 times more than web developers back then. The AI agent market is at exactly that point right now.
There's one difference. The speed is faster.
In 2007, nobody knew what a smartphone was. In 2024, everyone knows ChatGPT. Corporate adoption can only happen faster.
Stanford HAI's 2024 AI Index Report says this: "AI agents will transition from the 'experimental phase' to the 'production phase' starting in 2025."
Those who learn in the experimental phase versus those who scramble to catch up in the production phase. I don't need to explain who has the advantage.
2. Wage Gap: Those Who Handle AI Agents vs. Those Who Don't
Now let's talk money. Let's be honest.
The reason you're learning AI agents ultimately comes down to money.
According to the World Economic Forum's Future of Jobs Report 2024, 23% of jobs worldwide will be restructured into "forms of collaboration with AI" by 2027. And the field where the largest wage gap emerges during this restructuring is precisely "the capability to design and operate AI systems."
Let's look at specific numbers.
2027 Projected Salaries (US basis, consolidated Glassdoor + LinkedIn data)
• AI agent design/operations capable: $185,000~$320,000 per year (approximately ₩240 million~₩420 million)
• AI tool simple users: $75,000~$110,000 per year (approximately ₩100 million~₩140 million)
• AI utilization incapable: $45,000~$70,000 per year (approximately ₩60 million~₩90 million)
Even with the same job title of 'marketer,' the salary difference between someone who designs AI agents and automates campaigns versus someone who just types "write ad copy" into ChatGPT is 2-3 times.
Why does this gap emerge?
A bakery analogy makes this clear.
Think of AI as an 'oven.' Previously, the skill of baking bread was competitive advantage. But now every bakery has the latest oven. Anyone can push the oven buttons. Competitive advantage shifts to "the ability to design how to arrange the oven, what bread to bake when, and which customers to sell to."
AI agents are precisely that 'design capability.'
Simply 'using' AI is like pressing an oven button. 'Designing' an AI agent is like operating an entire bakery system.
Anthropic's 2024 State of AI report says this: "The productivity gap between organizations with AI agents and those without will reach a 4x difference by 2027." There is only one choice you can make. Which side you stand on.
For you who have finished this book
Here's what you've learned in this book, summarized.
Stack all three together, and you're a solo business that moves like a team.
Limitlessman proved this firsthand. 21 bots, 2 agents, 1 orchestrator. Annual labor cost savings of 170 million won. Operating 3 content channels simultaneously. One person doing the work of four.
It's not theory—it's an actual system running right now, at this very moment.
Next steps — Two paths
"The distance between reading a book and deploying a system. Most people stop at that distance."
Two paths lie ahead of you.
🛠️ Build it yourself
Follow this book's guide and build it yourself.
The book includes how-to for building 21 bots + 2 agents + 1 orchestrator. Follow along with Claude and OpenAI's official documentation, and you can have your system running in 1-2 weeks.
Estimated time: 1-2 weeks Cost: Claude API usage only ($5-50/month)
💡 Recommended learning sequence
① Main text LEVEL 0-1 (environment setup) → ② LEVEL 2 (build your first bot) → ③ LEVEL 3 (orchestrator)
🤝 Have Limitlessman do it
If you don't have time to build it yourself, or if you need a validated system from the start.
Limitlessman is currently operating the system shown in this book. We build the same structure tailored to your business and hand it over to you.
97% read this book and never start.
There's one reason. "I'll do it later" — this one sentence hands automation's compound effect to your competitor.
Open one tab right now. That 30 seconds creates a 6-month gap.
🎬 AI Hunter Channel · Bot·Agent Practical Operation Videos Released
AI Hunter YouTube Channel Bot·Agent Operation Video Collection
You can directly verify bot·agent·harness system operations covered in the book through videos. Collection bot·Comment bot·Landing page screen recordings · Live workflow demonstrations New videos are uploaded every week
In our busy lives, time for ourselves always gets pushed back.
But finishing this book today,
that's already the most precious gift you've given yourself.
Tomorrow, I'll be someone who understands AI a little better than today.
That change is quiet, but it builds steadily and surely,That is the greatest gift you can give yourself.