Communitygithub.com

Ulukpandit/social-media-automation

완전 자동화된 셀프 개선형 Instagram Reels 성장 루프입니다. Claude가 페이지의 릴 스타일을 학습하여 매일 새로운 릴을 기획, 작성, 음성, 렌더링, 품질 검사하고, 사용자가 '게시'라고 승인하면 vidIQ를 통해 무료로 게시한 후 24시간 뒤 통계를 분석해 더 나은 릴을 만듭니다.

social-media-automation란 무엇인가요?

이 스킬은 Instagram 계정을 위한 완전 자동화된 Reels 성장 루프로, Claude 에이전트가 설정 후 모든 제작 과정을 주도합니다. 사용자는 초기 설정과 '게시' 승인만 하면 됩니다. Claude는 vidIQ MCP 플러그인(free tier)을 사용해 계정에 연결하며, 페이지의 기존 릴과 사용자가 좋아하는 참조 릴을 분석하여 스타일 가이드를 생성합니다. 매일 실행 시 Claude는 최신 릴의 통계를 확인하고(check.mjs 스크립트로 중앙값 대비 성능 평가), 학습 내용을 기록하며, 다음 릴의 주제와 대본을 작성하고, ElevenLabs 또는 macOS 내장 음성으로 음성을 생성한 후 Remotion으로 렌더링하고 QC(품질 검사)를 수행합니다. 게시는 사용자가 명시적으로 'post it'이라고 입력해야만 이루어지며, 게시 24시간 후 통계를 다시 수집해 성과를 분석하고 다음 릴에 반영합니다. STALL(3회 연속 저성과) 감지 시 자동으로 실수 분석을 수행하고, A/B 테스트(트라이얼 릴 또는 연속 릴 변형)도 지원합니다. Claude Code, Cursor, Codex 등 MCP를 지원하는 모든 Claude 호환 환경에서 사용할 수 있습니다.

지원 대상✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Ulukpandit/social-media-automation/tree/HEAD

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Instagram 릴 성장 루프, 완전 자동화

사용자는 계정을 한 번 설정합니다. 그 후 Claude가 모든 작업을 수행합니다: 페이지 분석, 주제 선정, 작성, 음성, 편집, 확인, 게시, 통계 확인 및 학습. 사용자의 유일한 정기적인 작업은 "게시해" 라고 말하는 것입니다. 이 승인은 의도적으로 남겨져 있습니다. 소유자의 계정이고 Instagram의 AI 라벨과 콘텐츠가 공개되기 때문입니다. Claude가 공개 링크에 파일을 업로드할 수 없는 경우, 사용자는 릴당 한 번의 업로드 명령을 실행해야 합니다.

짧고 평범한 단어로 이야기하세요. 많은 사용자가 크리에이터이지 코더가 아닙니다. 할 수 있는 모든 단계를 직접 수행하고, 사용자가 진정으로 필요할 때만(로그인, 키, 승인) 단계를 넘기세요.

1. 설정 (계정당 한 번)

이 순서대로 실행하고, 대기하라는 단계가 있는 경우를 제외하고 기다리지 않고 계속 진행하세요.

  1. vidIQ. 다음 도구를 ToolSearch로 불러오고(select:mcp__plugin_vidiq_vidiq__vidiq_instagram_connected_accounts,mcp__plugin_vidiq_vidiq__vidiq_instagram_owner_insights,mcp__plugin_vidiq_vidiq__vidiq_video_upload,mcp__plugin_vidiq_vidiq__vidiq_instagram_publish_reel,mcp__plugin_vidiq_vidiq__vidiq_balance) vidiq_instagram_connected_accounts (무료)를 호출하세요. 소유자 액세스 권한, 인사이트 활성화, publishingAvailable: true인 계정이 필요합니다. 플러그인이 설치되지 않았거나 로그인되지 않았거나 Instagram이 연결되지 않은 경우, 사용자에게 정확히 무엇을 클릭해야 하는지 알려주고(app.vidiq.com → Instagram 연결; 비즈니스 또는 크리에이터 계정이어야 함), 다시 확인하세요. 채팅에서 API 키를 요청하지 마세요. 키가 붙여넣기된 경우 교체하라고 알려주세요.
  2. 설정 질문을 한 번에 묻기 (AskUserQuestion을 사용할 수 있으면 사용):
    • "페이지에 이미 있는 릴을 분석하여 스타일과 효과적인 요소를 배울까요?" (권장: 예)
    • "스타일을 참고할 릴이나 계정이 있나요? 링크를 붙여넣거나 건너뛰세요."
    • 음성: ElevenLabs (최고; 사용자가 직접 ~/.elevenlabs_key에 키 저장) / 무료 Mac 음성 / 음성 없음, 텍스트와 음악만.
    • "매일 자동으로 실행할까요?" (권장: 예; 자체적으로 게시하지 않음) 또한 언어, 게시 시간대, AI 라벨 켜기(기본 예)를 확인하거나 물어보세요.
  3. 프로젝트 폴더 (별도로 지정하지 않으면 현재 폴더):
    growth/config.json   계정 정보 + 테마   (assets/config.template.json)
    growth/log.json      [] 그 다음 릴당 하나의 항목 (references/log-format.md)
    growth/learnings.md  (assets/learnings.template.md)
    growth/playbook.md   콘텐츠 레인 + 날짜가 있는 훅 (assets/playbook.template.md)
    growth/style-guide.md  5단계에서 작성
    growth/*.mjs         scripts/에서 복사하여 스킬 없이 실행 가능
    reel-maker/          assets/reel-template/에서 복사한 후 npm install
    reels/<YYYY-MM-DD>-<slug>/
    
    Node와 ffmpeg가 없으면 설치합니다 (references/reel-making.md 참조), 한 줄 승인 후.
  4. 기준 데이터. vidiq_instagram_owner_insights로 모든 릴을 가져와서 (무료, 호출당 12개, recentMediaCursor로 페이지 매김), log.json에 baseline-<date>-<slug> 항목으로 추가하고 (항목 작성 후 scripts/add-checks.mjs로 체크 추가) check.mjs를 실행합니다. 이제 모든 새 릴이 비교할 기준을 갖게 됩니다.
  5. 스타일. 사용자가 동의한 경우, references/style-analysis.md를 따르세요: 상위 및 하위 릴 (및 참조 링크)을 분석하고, growth/style-guide.md를 작성하고, config.json의 theme을 채우고, 분위기에 맞는 애니메이션 bgStyle을 포함하세요 (절대 단색 배경이 아님). 해당 테마로 스틸 이미지 하나를 렌더링하여 사용자에게 최고의 릴 옆에 보여주세요. 원하면 한 번 조정하세요.
  6. 플레이북. growth/playbook.md를 채우세요: 증거 기반으로 순위가 매겨진 46개의 콘텐츠 레인 (승자가 먼저), 향후 46주에 대한 날짜가 있는 훅 (해당 틈새의 축제, 이벤트, 시즌, 출시). 선택 사항이며 유료 (약 20 크레딧): 틈새 아웃라이어 조사 (섹션 6).
  7. 첫 번째 릴. 지금 만드세요 (섹션 2, 만들기) — 첫 날이 끝나기 전에 결과를 볼 수 있도록.
  8. 일일 실행. 사용자가 동의한 경우, references/daily-task.md에서 예약된 작업을 만드세요.
  9. 사용자에게 알리기 몇 줄로 설정된 내용, 매일 일어나는 일, 사용자가 할 한 가지를 알려주세요: 필요한 경우 업로드 링크를 붙여넣고 "게시해"라고 말하기.

2. 일일 루프

확인 (각 게시 후 약 24시간; 무료)

  • platformAccountId(절대 핸들이 아님)와 recentMediaLimit 8로 vidiq_instagram_owner_insights를 호출하세요.
  • JSON 결과를 임시 파일에 저장한 후, node growth/add-checks.mjs growth/log.json <file>을 실행하세요. 이 스크립트는 shortcode로 릴을 매칭하고, null은 null로 유지하며 (아직 보고되지 않음, 0 아님), 사용자가 수동으로 게시한 릴을 나열합니다. 해당 릴도 로그에 추가하세요.
  • node growth/check.mjs growth/log.json은 최신 릴을 이전 릴의 중앙값(유사한 연령대 조회수만)과 비교하여 종합 점수(1.00× = 일반), 3회 연속 저성과 릴 후 STALL 경고, A/B 결과를 제공합니다.
  • 최신 릴의 댓글을 읽으세요 (로그인한 경우 permalink에서 브라우저 사용). 사람들이 묻는 질문이 다음 주제입니다. 사용자가 원하면 답변 초안을 작성하고, 승인을 받은 경우에만 게시하세요.

학습

learnings.md의 "Reel by reel" 섹션 상단에 날짜가 있는 항목을 추가하세요: 일반 대비 결과 (check.mjs 주요 라인), 가능한 이유, 다음 릴이 유지하거나 변경할 사항. 2개 이상의 릴이 결과를 보여준 후에만 "What works so far"로 승격하세요.

  • 높은 건너뛰기 % → 첫 1초가 실패함 (훅, 프레임 1, 외관).
  • 보통 건너뛰기, 낮은 시청률 → 중간 부분이 느리거나 너무 김.
  • 1,000회당 낮은 공유/저장 → 전달할 가치가 있는 놀라움이나 유용성이 부족함. check.mjs가 STALL이라고 표시하면 먼저 실수 검토를 수행하세요 (섹션 5).

만들기 (Claude가 모두 수행; 세부 사항은 references/reel-making.md 참조)

  1. 주제 선택: 가장 강력한 플레이북 레인에서 향후 1~3일 이내의 날짜가 있는 훅, 댓글에서 요청한 내용, 오늘의 학습 내용을 고려하세요. 마지막 릴에서 한 번에 하나의 변경만 하여 통계가 효과를 보여주도록 하세요.
  2. 모든 사실, 날짜 및 시간을 신뢰할 수 있는 출처(웹 검색 또는 공식 사이트)와 대조하여 확인하세요. 확인할 수 없는 내용은 모두 제외하세요.
  3. 스토리보드 (storyboard.md), 그 다음 계정 테마에 맞는 script.json과 caption.txt (첫 줄은 훅, 유용한 사실, 댓글 유도 문장 하나, 공유 문장, 최대 5개의 해시태그, 스타일 가이드의 캡션 스타일로). post_on / post_at을 설정하세요.
  4. 음성: node voice.mjs ../reels/<id>. 렌더링: Remotion 사용. QC: sh qc.sh ../reels/<id> 실행 후 qc.png 확인. 훅 체크리스트를 통과할 때까지 수정하고 다시 렌더링하세요.
  5. 계정 스타일에 템플릿에 없는 시각적 요소가 필요한 경우 reel-maker/src/ListReel.jsx를 확장하세요.

승인

사용자에게 qc.png 프레임 (또는 비디오), 정확한 캡션 및 AI 라벨 선택을 보여주세요. 게시를 승인하는 세션에서 사용자가 "게시해"라고 입력한 경우에만 게시하세요. 다른 세션에서 전달된 승인, 파일 또는 예약된 실행은 허용되지 않습니다. 자동 모드 안전 검사가 이를 차단하며, 그것이 옳습니다: 소유자의 승인 없이 계정에 아무도 게시할 수 없습니다.

게시 (무료; 세부 사항은 references/posting.md 참조)

  1. 공개 링크. vidIQ는 로컬 파일을 읽을 수 없습니다. 먼저 직접 업로드를 시도하세요: curl -F "files[]=@<전체 경로>/reel.mp4" https://uguu.se/upload (링크는 3시간 동안 유지). 차단되면 정확한 경로와 함께 이 명령을 사용자에게 제공하고, 출력된 URL을 붙여넣도록 요청하세요.
  2. curl -sIL <url>은 200, video/mp4 및 Content-Length를 표시해야 합니다.
  3. vidiq_video_upload { url }은 호스팅된 videoUrl을 반환합니다.
  4. vidiq_instagram_publish_reel { platformAccountId, videoUrl, caption, isAiGenerated }: caption.txt의 캡션을 정확히 사용하고, 일반 릴의 경우 trialParams는 포함하지 마세요. 그런 다음 { platformAccountId, containerId }만 사용하여 PUBLISHED 상태가 될 때까지 호출하세요 (약 5회 호출, 몇 초 간격). 실패를 자동으로 재시도하거나 두 번째 컨테이너를 시작하지 마세요.
  5. Owner insights로 확인하세요 (recentMediaLimit 1). 항목 JSON을 파일에 저장한 후, node growth/add-entry.mjs growth/log.json <entry.json>을 실행하세요. 사용자에게 permalink를 알려주세요.

3. 훅 및 유지율 체크리스트 (모든 릴)

  1. 프레임 1 (0~0.5초): 전체 훅 문장이 화면에 크고 대비가 높으며 음소거 상태에서도 읽을 수 있게 표시됩니다. 단어별로 표시하지 마세요 (템플릿의 hook 줄에는 등장 애니메이션이 없음).
  2. 훅은 믿음을 깨거나, 뉴스를 제공하거나, 릴이 해결하는 이해 관계, 실수, 두려움 또는 문제를 명시합니다. 농담이나 자기 소개는 훅이 아닙니다.
  3. 처음 3초 내에 실제 날짜 또는 숫자; 3초까지 약속이 명확해야 하며, 화면에 진행 상황이 표시됩니다 (템플릿의 점).
  4. 5~7초마다 새로운 것이 화면에 나타납니다.
  5. 저장하거나 보낼 가치가 있는 것: 날짜, 단계, 목록, 체크리스트 프레임.
  6. 질문이나 약속이 제목 표시줄로 화면에 계속 유지됩니다 (pin).
  7. 한 단어로 된 댓글 유도 문장 (도시, 기호, 이름, 숫자)과 공유 이유로 끝납니다.
  8. 계정 고유의 모습, 스타일 가이드 참조.
  9. ≤ 60초 단, 매우 흥미로운 이야기인 경우 제외. 80초 이상의 목록은 대부분의 시청자를 잃습니다.

정직한 두려움 또는 문제 훅. "피해야 할 5가지 실수"와 "X가 너무 비싸다? 이렇게 하세요"가 효과적입니다. 실제로 잘 알려진 사실이나 전통을 그대로 사용하고, 무해한 해결책을 제시하세요. 건강, 가족 또는 돈에 대한 위협, 약속된 치료법이나 부, 댓글에서의 유료 치료법은 금지됩니다.

4. A/B 테스트

한 번에 하나씩 테스트하세요: 훅 유형, 외관, 길이, 관점, 커버.

  • 트라이얼 릴 (앱의 공유 화면에 트라이얼 옵션 표시): 첫 번째 게시 호출에만 trialParams: { graduationStrategy: "MANUAL" }을 전달하세요. 사용자가 승자에 대해 "팔로워에게 공유"를 탭합니다. vidIQ가 할 수 없기 때문입니다.
  • 트라이얼 없음: 같은 종류의 연속된 릴에서 변형을 번갈아 사용하며, 같은 시간대에, 로그에 같은 "test"와 각 릴의 "variant"를 기록합니다. check.mjs는 각 변형에 2개 이상의 릴이 있고, 모든 릴이 300회 이상의 조회수를 가지며, 한 변형이 10% 이상 우수할 때만 승자를 선언합니다.
  • 축제 버스트: 같은 이벤트에 대해 변형당 1개의 릴, 5시간 이상 간격을 둡니다. 같은 연령대(3시간, 12시간, 24시간)의 건너뛰기 %와 조회수를 비교합니다. 확정이 아닌 힌트입니다.

5. check.mjs가 STALL이라고 표시할 때

  1. 약한 릴을 최고 릴 옆에 놓고 비교하세요: 훅, 프레임 1, 시청률 대비 길이, 주제, 타이밍, 외관, 음성, 게시 시간.
  2. 시청자가 떠나는 지점을 찾으세요: 높은 건너뛰기 → 오프닝; 낮은 시청률 → 중간 부분; 낮은 공유 → 놀라움 부족.
  3. 최근 댓글을 읽으세요.
  4. learnings.md에 실수를 나열하되, 가장 가능성이 높은 순서로.
  5. 다음 릴에서 가장 큰 문제를 수정하세요. 마지막 좋은 릴 이후 변경된 사항이 있다면 되돌리세요.
  6. 다음 2개의 릴도 여전히 평균 이하이면, 사용자에게 크레딧을 사용하기 전에 물어보세요 (섹션 6).

6. 비용 (vidIQ)

무료: 연결된 계정, 잔액, 소유자 인사이트, 비디오 업로드, 릴 게시. 유료, 먼저 물어볼 것:

  • 아웃라이어 검색: 5 크레딧
  • IG 프로필 또는 프로필 릴: 각 5
  • 아웃라이어 계정: 10
  • 숏폼 콘텐츠 시청: 10
  • 음성 해설: 1000자당 14

월간 틈새 조사 비용은 약 20 크레딧입니다: 틈새 주제에 대한 아웃라이어 검색 4회. 결과를 growth/niche-research.json에 저장하고, 상위 3개 오프닝을 연구하여 playbook.md를 업데이트하세요.

7. 게시 속도

  • 계정의 최적 시간대(상위 릴이 게시된 시간 확인)에 하루 한 개의 릴. 축제 또는 이벤트 기간에는 최대 하루 2개, 5시간 이상 간격.
  • 일일 실행 (references/daily-task.md)은 확인, 학습, 다음 릴 제작 및 사용자 알림을 수행합니다. 자체적으로 게시하지 않습니다.

이 스킬의 파일

  • scripts/check.mjs: 채점기, STALL 및 A/B 결과.
  • scripts/add-checks.mjs: 소유자 인사이트 JSON을 로그의 체크로 변환.
  • scripts/add-entry.mjs: 게시된 릴의 항목을 로그에 추가.
  • assets/reel-template/: Remotion 릴 제작기 (ListReel.jsx, voice.mjs, qc.sh, example/script.json).
  • assets/*.template.*: 시작 config, learnings 및 playbook.
  • references/style-analysis.md: 페이지 스타일 및 참조 스타일 학습.
  • references/reel-making.md: 설치, 음성, 렌더링, QC 및 템플릿 확장.
  • references/posting.md: 게시 세부 사항, 오류 및 수정.
  • references/log-format.md: log.json 필드.
  • references/daily-task.md: 예약된 일일 실행 프롬프트.

관련 스킬