automation-workflow-builder
npx skills add https://github.com/kyuhyi/bsd_claude_skills --skill automation-workflow-builder
Agent 安装分布
Skill 文档
â¡ Next.js ìëí ìí¬íë¡ì° ë¹ë ì¤í¬
ì´ ì¤í¬ì BSD ë°ì´ë¸ì½ë© ìê°ìë¤ì´ Next.jsì Node.js를 ì¬ì©íì¬ ì»¤ì¤í ìëí ìì¤í ì 구ì¶íê³ ì 무 í¨ì¨ì ê·¹ëíí ì ìëë¡ ëìµëë¤.
ð ì´ ì¤í¬ì´ íë ì¼
- ìëí ì¤ê³: ë°ì´í° íë¦ ë¶ì ë° ìµì ì ìëí ë¡ì§ ì¤ê³
- API ì°ë: ì¸ë¶ ìë¹ì¤(Notion, Slack, Discord ë±)ì API를 Node.jsë¡ ì ì´
- ì¤ì¼ì¤ë§ 구í: Vercel Cron Jobs ëë GitHub Actions를 ì´ì©í ì 기 ìì ì¤ì
- ì¹í (Webhook) ì²ë¦¬: ì¸ë¶ ì´ë²¤í¸ ì¤ìê° ìì ë° ìëµ ìì¤í 구ì¶
- 모ëí°ë§: ìëí ì¤í ë¡ê·¸ ë° ìë¬ ì림 ìì¤í 구í
ð¯ ì¸ì ì´ ì¤í¬ì ì¬ì©íëì?
- “ì¬ì©ìê° í¼ì ì ì¶íë©´ ìëì¼ë¡ PDF를 ìì±í´ì ì´ë©ì¼ë¡ ë³´ë´ê³ ì¶ì´ì”
- “ë§¤ì¼ ì침 í¹ì ì¬ì´í¸ì ë°ì´í°ë¥¼ í¬ë¡¤ë§í´ì ì¬ëì¼ë¡ ë³´ê³ ë°ê³ ì¶ì´ì”
- “ê²°ì ê° ìë£ëë©´ ìëì¼ë¡ ìê° ê¶íì ë¶ì¬íê³ ì°ì»´ ë©ìì§ë¥¼ ë³´ë´ê³ ì¶ì´ì”
ð ï¸ ê¸°ì ì¤í (Code-First Automation)
1. Framework
- Next.js (App Router): API Endpoint ë° Webhook Handler 구ì¶
- Node.js: ê³ ì±ë¥ ë°±ìë ë¡ì§ ì²ë¦¬
2. Automation Tools
- Trigger.dev: ë³µì¡í ìí¬íë¡ì°ë¥¼ ì½ëë¡ ìì±íê³ ê°ìí
- Inngest: ì ë¢°ì± ëì ì´ë²¤í¸ ê¸°ë° ìëí
- Upstash (QStash): ìë²ë¦¬ì¤ íê²½ì ìí ë©ìì§ í ë° ì¤ì¼ì¤ë§
3. Core Libraries
- Axios / Fetch: ì¸ë¶ API íµì
- Zustand / Prisma: ìí ê´ë¦¬ ë° ë°ì´í° ì²ë¦¬
ð» 구í ìì (Next.js API Routes)
1. Webhook Handler (app/api/webhook/route.ts)
import { NextResponse } from "next/server";
export async function POST(req: Request) {
try {
const data = await req.json();
// 1. ë°ì´í° ê²ì¦ ë° ì²ë¦¬
console.log("Webhook received:", data);
// 2. ì¸ë¶ API í¸ì¶ (ì: Slack ì림)
await fetch(process.env.SLACK_WEBHOOK_URL!, {
method: "POST",
body: JSON.stringify({ text: `ìë¡ì´ ì´ë²¤í¸ ë°ì: ${data.message}` }),
});
return NextResponse.json({ success: true });
} catch (error) {
return NextResponse.json({ success: false }, { status: 500 });
}
}
2. Scheduled Task (Vercel Cron)
// app/api/cron/daily-report/route.ts
export async function GET() {
// ë§¤ì¼ ì침 ì ë ë°ì´í°ë¥¼ ìì½íì¬ ì´ë©ì¼ ë°ì¡
const summary = await generateDailySummary();
await sendEmail("admin@example.com", "ì¼ê° ë³´ê³ ì", summary);
return new Response("OK");
}
ð ìëí ìë리ì¤
1. 리ë ê´ë¦¬ ìì¤í
- Tally í¼ ì ì¶ â Next.js API ìì â Notion DB ì ì¥ â Slack ì¦ì ì림
2. ì½í ì¸ ìë ë°°í¬
- Notion ê¸ ìì± ìë£ â Trigger.dev ê°ì§ â ì´ë¯¸ì§ ìµì í â SNS API를 íµí´ ìë ê²ì
ð¬ ìì ëí
ì¬ì©ì: “êµ¬ê¸ ìí¸ì íì´ ì¶ê°ëë©´ ìëì¼ë¡ ì¬ë ë©ìì§ë¥¼ ë³´ë´ë ìì¤í ì Next.jsë¡ ë§ë¤ê³ ì¶ì´”
Claude: “Next.js API Routesì Google Sheets API를 ì°ëíì¬ ìëí ìì¤í ì 구ì¶í´ëë¦¬ê² ìµëë¤. Polling ë°©ìì´ë Webhook ë°©ìì ì íí ì ìì¼ë©°, Node.js 기ë°ì ìì ì ì¸ ì°ë ì½ë를 ìì±í´ ë릴ê²ì…”
ð¯ íµì¬ ì 리
ì´ ì¤í¬ì ì¬ì©íë©´: â No-code í´ì íê³ë¥¼ ë°ì´ëë ë³µì¡í ë¡ì§ 구í ê°ë¥ â ë¹ì© ì ê°: Zapier ë± ì ë£ ìëí í´ ë¹ì©ì í기ì ì¼ë¡ ì¤ì â íì¥ì±: ì°ë¦¬ ìë¹ì¤ì DBì ì§ì ì°ëëë ê°ë ¥í ìì¤í êµ¬ì¶ â ì ì§ë³´ì: 모ë ìëí ë¡ì§ì ì½ëë¡ ê´ë¦¬ (Git ë²ì ê´ë¦¬ ê°ë¥)
BSD íìì´ë¼ë©´: ì´ì ë¨ìí ì¹ì¬ì´í¸ ì ìì ëì´, ë¹ì¦ëì¤ì ì´ì ìì§ì ì§ì ì½ë©í ì ììµëë¤! â¡