OPEN HYPER STEP
← 목록으로 (ai-startup)
AI-STARTUP · 36 / 100
ai-startup
CHAPTER 36 / 100
읽기 약 2
FUNCTION

AI 소셜 미디어: X/인스타 자동 포스팅


핵심 개념

콘텐츠 캘린더·자동 생성·발행·반응 분석 — 주 7일 자동.

본문

콘텐츠 캘린더

📋 코드 (12줄)
[1주 plan]
월: 인사이트 (긴 트윗·LinkedIn)
화: 코드 팁 (스니펫 + 이미지)
수: 사례 분석
목: AMA / 질문
금: 주간 회고
토: 영감·인용
일: 휴식 (가벼운 콘텐츠)


→ 매일 1포스트 = 주 7개
→ 자동 + 인간 검토

자동 생성

TYPESCRIPT📋 코드 (21줄)
async function generatePost(theme: string, format: 'tweet' | 'thread' | 'linkedin') {
  const result = await generateText({
    model: anthropic('claude-sonnet-4-6'),
    system: `You write engaging social media for indie SaaS founders.

Style:
- Conversational, no corporate speak
- Concrete examples (numbers, screenshots)
- Hook in first line
- Avoid clichés
- Korean if specified`,
    prompt: `Generate a ${format} post about: ${theme}

Format-specific requirements:
- tweet: max 280 chars, punchy
- thread: 5-7 tweets, narrative arc
- linkedin: 1500 chars, story format`,
  });

  return result.text;
}

Twitter API (X)

TYPESCRIPT📋 코드 (33줄)
import { TwitterApi } from 'twitter-api-v2';

const client = new TwitterApi({
  appKey: process.env.X_APP_KEY!,
  appSecret: process.env.X_APP_SECRET!,
  accessToken: process.env.X_ACCESS_TOKEN!,
  accessSecret: process.env.X_ACCESS_SECRET!,
});


// 단일 트윗
await client.v2.tweet({
  text: postText,
});


// Thread
async function postThread(tweets: string[]) {
  let prevId: string | undefined;
  for (const text of tweets) {
    const result = await client.v2.tweet({
      text,
      reply: prevId ? { in_reply_to_tweet_id: prevId } : undefined,
    });
    prevId = result.data.id;
    await sleep(2000);
  }
}


// 이미지 첨부
const mediaId = await client.v1.uploadMedia('./image.png');
await client.v2.tweet({ text, media: { media_ids: [mediaId] } });

스케줄링

TYPESCRIPT📋 코드 (29줄)
// Vercel Cron — 매일 오전 9시
// vercel.json
{
  "crons": [
    { "path": "/api/cron/post-daily", "schedule": "0 9 * * *" }
  ]
}


// app/api/cron/post-daily/route.ts
export async function GET() {
  const today = new Date().getDay();  // 0=일, 1=월...
  const themes = {
    1: '주간 인사이트',
    2: '코드 팁',
    3: '사례 분석',
    4: 'AMA',
    5: '주간 회고',
    6: '영감',
    0: '가벼운 콘텐츠',
  };

  const post = await generatePost(themes[today], 'tweet');

  // Slack 검토 (5분 대기)
  await postToSlack({ text: `검토 필요: ${post}`, approveUrl: ... });

  return Response.json({ scheduled: post });
}

인스타그램

TYPESCRIPT📋 코드 (27줄)
// Instagram Graph API (Facebook 페이지 필요)
const FB_PAGE_TOKEN = process.env.FB_PAGE_TOKEN;
const IG_USER_ID = process.env.IG_USER_ID;

// 1. 미디어 컨테이너 생성
const containerRes = await fetch(
  `https://graph.facebook.com/v18.0/${IG_USER_ID}/media?` +
  new URLSearchParams({
    image_url: 'https://...',
    caption: '...',
    access_token: FB_PAGE_TOKEN!,
  }),
  { method: 'POST' },
);

const { id: containerId } = await containerRes.json();


// 2. 발행
await fetch(
  `https://graph.facebook.com/v18.0/${IG_USER_ID}/media_publish?` +
  new URLSearchParams({
    creation_id: containerId,
    access_token: FB_PAGE_TOKEN!,
  }),
  { method: 'POST' },
);

콘텐츠 → 다채널

📋 코드 (16줄)
1개 인사이트 →
- Twitter Thread
- LinkedIn 글
- Instagram 카드 이미지
- YouTube 쇼츠 스크립트
- 블로그 짧은 버전


[자동화]
1. 핵심 메시지 1개 작성
2. LLM이 각 채널 형식 변환
3. 인간 검토 → 발행
4. 일주일에 걸쳐 분산 발송


→ 1개 콘텐츠로 7개 포스트

분석

TYPESCRIPT📋 코드 (11줄)
// X API — 메트릭
const tweet = await client.v2.singleTweet(tweetId, {
  'tweet.fields': ['public_metrics'],
});

console.log(tweet.data.public_metrics);
// { retweet_count, reply_count, like_count, quote_count, impression_count }


// → 잘 된 포스트 패턴 분석
// → AI에 피드백 (어떤 톤이 잘 됐는지)

다음 챕터

CH.37 "AI 영상 스크립트".


AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
무료

월 $0 — 검증·시작 단계

AI 소셜 미디어을 무료 도구만으로
시작하는 방법을 알려줘.
소자본

월 $20~50 — MVP·초기 운영

월 $20~50 예산으로 AI 소셜 미디어을
검증·MVP 단계까지 진행하는 전략은?
프로덕션

월 $200~500 — 성장 단계

AI 소셜 미디어을 프로덕션 단계로
확장할 때 필요한 도구·운영 체계는?
스택

풀스택 — 도구 조합 분석

2026년 AI 소셜 미디어 관련 도구 5개를
조합한 추천 스택을 알려줘.

⭐ 이것만 기억하세요
AI 소셜 미디어: X/인스타 자동 포스팅 이 3가지만 확실히 잡으세요
1.주 7개 자동 + 인간 검토 = 일관된 채널 운영
2.1개 인사이트 → 7개 채널 자동 변환
3.Vercel Cron + X API + 검토 워크플로우


공유하기
진행도 36 / 100