Communitygithub.com

sultanlive/instagram-post

Instagram에 게시물을 올리고, Reel, 캐러셀을 예약합니다. OpenClaw, Hermes, Claude Code 또는 Codex에서 1Social MCP 서버(OAuth, API 키 불필요)를 통해 사용자 본인의 Instagram 계정에 게시합니다. 게시 전 캡션, 해시태그, 종횡비, 미디어 규칙을 확인하고 최대 30일 앞까지 예약하며 게시 영수증을 반환합니다.

instagram-post란 무엇인가요?

이 스킬은 개발자가 AI 에이전트(Claude Code, Codex, OpenClaw, Hermes 등)를 통해 Instagram 게시물(사진, Reel, 캐러셀)을 작성, 게시, 예약 및 관리할 수 있도록 해줍니다. 1Social MCP 서버를 기반으로 하며 OAuth 인증을 사용하므로 별도의 API 키가 필요 없고, 사용자는 브라우저에서 1Social에 로그인하기만 하면 됩니다. 주요 워크플로우는 계정 확인 → 미디어 업로드 → 초안 작성 및 미리보기 → 사용자 확인 → 게시 또는 예약(최대 30일 후) 순서로 진행됩니다. Instagram의 규칙(캡션 2,200자, 최대 30개 해시태그, 종횡비 4:5~1.91:1, 이미지/비디오 필수 등)을 자동으로 검사하고, preview_post를 무료로 호출하여 문제를 미리 발견할 수 있습니다. 게시 후에는 게시물 상태 확인, 수정, 예약 취소, 게시된 게시물 삭제(Instagram은 삭제 API 미지원으로 실제 삭제 불가) 기능을 제공하며, 전달 실패 시 재시도 및 unknown 상태에 대한 수동 확인 기능도 포함되어 있습니다. 또한 하나의 1Social 계정으로 Instagram, TikTok, LinkedIn 등 여러 네트워크에 동시 게시도 가능합니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/sultanlive/1social-skills/tree/main/plugins/instagram-by-1social/skills/instagram-post

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

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

문서

1Social을 사용한 Instagram 게시

1Social은 사용자 본인의 Instagram 계정에 게시하며, 실제로 게시된 결과를 보고합니다.

설정 (최초 1회)

아래 단계는 1Social MCP 서버를 연결합니다. list_accounts 같은 도구가 보이지 않으면 먼저 연결하세요. 로그인은 브라우저에서 OAuth로 진행되며, 저장할 API 키는 없습니다. 사용자에게 먼저 물어보고 아래 명령어를 실행하세요. 로그인 단계에서는 사용자가 직접 1Social에 로그인하는 페이지가 열립니다.

  • OpenClaw: openclaw mcp set 1social '{"url":"https://mcp.1social.dev/mcp","transport":"streamable-http","auth":"oauth"}' 그 다음 openclaw mcp login 1social. 확인은 openclaw mcp doctor 1social --probe로 합니다.
  • Hermes: ~/.hermes/config.yaml에 다음을 추가:
    mcp_servers:
      1social:
        url: "https://mcp.1social.dev/mcp"
        auth: oauth
    
    그 다음 hermes mcp login 1social (헤드리스 호스트에서는: hermes mcp login 1social --flow device).
  • Claude Code: claude mcp add --transport http 1social https://mcp.1social.dev/mcp
  • 기타 클라이언트: https://1social.dev/mcp 에서 각각의 설정 방법을 확인할 수 있습니다.

사용자는 1Social 계정이 필요합니다. 새 계정은 무료 체험판으로 시작하며, 체험판 이후 게시를 계속하려면 유료 요금제가 필요합니다 (https://1social.dev/pricing).

워크플로우

  1. 계정 찾기. list_accounts를 호출합니다. 연결된 채널과 해당 ID, 각 네트워크의 실시간 제한, 요금제 및 남은 월별 할당량을 반환합니다. Instagram 계정이 연결되어 있지 않으면, https://1social.dev/app 에서 연결하도록 안내하세요. 연결에는 브라우저가 필요하며 채팅에서는 할 수 없습니다. list_accounts가 이 스킬과 다른 제한을 보고하면 list_accounts를 신뢰하세요.
  2. 네트워크에 맞게 초안 작성. 아래 규칙에 따라 게시물을 작성합니다. 게시물은 segments 목록이며, 각 세그먼트는 { text, mediaIds? }입니다.
  3. 미디어 첨부.
    • 사용자가 채팅에 파일을 첨부한 경우 → media에 넣으세요.
    • 공개 https 링크가 있는 경우 → mediaUrls에 넣으세요.
    • 디스크에만 있는 파일인 경우 (OpenClaw, Hermes, Claude Code, Codex 또는 다른 CLI 에이전트) → upload_media를 호출하고 설명에 나온 업로드 단계를 따른 다음, 반환된 publicUrl을 mediaUrls에 넣으세요. localhost URL은 절대 작동하지 않습니다. 그 전에, 업로드할 파일을 사용자에게 정확히 보여주고 승인을 기다리세요: 업로드는 즉시 공개 링크를 생성하며, 이후 게시를 취소해도 파일이 제거되지는 않습니다.
  4. 미리보기. 채널 ID와 초안을 사용하여 preview_post를 호출합니다. 무료이며 아무것도 게시하지 않습니다. 보고된 모든 문제를 수정하고 다시 미리보기하세요.
  5. 사용자에게 확인. 최종 텍스트, 게시될 계정, 미디어, 게시 시간을 보여주세요. 게시는 공개되며 일부 네트워크에서는 게시물을 내릴 수 없으므로 명확한 승인을 기다리세요.
  6. 게시 또는 예약. publish_post를 호출합니다. scheduledAt: null은 지금 게시합니다. UTC ISO-8601 타임스탬프 (예: 2026-11-03T07:00:00Z)는 예약합니다 (미래 시점, 최대 30일 앞). 사용자의 현지 시간을 직접 UTC로 변환하고, 시간대 없이 시간만 말한 경우 어떤 시간대인지 물어보세요. idempotencyKey(이 초안에 대한 8~128자의 안정적인 문자열)를 설정하여 중복 호출로 두 번 게시되지 않도록 하세요.
  7. 정직하게 보고. 결과는 네트워크별 영수증입니다. 각 네트워크를 반환된 그대로 정확히 보고하세요. unknown은 1Social이 게시물이 실제로 나갔는지 진정으로 알 수 없다는 뜻입니다. 그렇게 말하고, 성공 또는 실패라고 절대 말하지 마세요.

Instagram 규칙

  • 모든 게시물에는 이미지나 비디오가 필요합니다. 캡션만으로는 거부됩니다. 초안을 작성하기 전에 사용자에게 미디어를 요청하세요.
  • 캡션 제한: 2,200자. 해시태그 최대 30개; 3~5개의 관련 해시태그가 보통 태그 더미보다 낫습니다.
  • 이미지 종횡비는 4:5(세로)와 1.91:1(가로) 사이여야 합니다. 정사각형 1:1은 안전합니다. 넓은 배너는 Instagram에서 "종횡비" 오류로 거부됩니다.
  • PNG와 JPEG 모두 작동합니다.
  • 스레드 금지: 초안에 여러 세그먼트가 있으면 1Social이 하나의 캡션으로 합칩니다. 대신 하나의 캡션을 작성하세요.
  • 캡션의 링크는 Instagram에서 클릭할 수 없습니다. 트래픽을 원하면 원시 URL 대신 "링크는 프로필에"라는 문구를 제안하세요.
  • 게시된 Instagram 게시물은 1Social을 통해 삭제할 수 없습니다. Instagram에는 삭제 API가 없습니다. 게시하기 전에 사용자가 캡션에 만족하는지 확인하세요.

작성 팁

  • 처음 125자 내에 갈고리를 넣으세요. "더보기" 전에 보이는 부분입니다.
  • 해시태그는 캡션 끝에, 줄바꿈 후에 넣으세요.

다른 네트워크에도 함께 게시하기

동일한 1Social 계정으로 하나의 게시물을 Instagram, TikTok, LinkedIn, X, Threads, Facebook Pages, YouTube Shorts 및 Bluesky에 동시에 게시할 수 있습니다: list_accounts에서 여러 채널 ID를 나열하세요. preview_post는 선택한 모든 네트워크에 대해 초안을 확인합니다.

게시 후

  • 상태 확인: list_posts (특정 게시물의 postId 제공). 네트워크에서 보고하는 경우 저장된 참여 지표를 포함합니다.
  • 예약된 게시물 변경: update_post. 게시물이 나가기 전에만 작동합니다.
  • 예약 취소: cancel_post. 아직 게시되지 않은 게시물에는 delete_post 대신 이 명령을 사용하세요.
  • 게시된 게시물 삭제: delete_post, 사용자가 확인한 후에만 사용하세요. 실제로 내려간 네트워크별로 보고: Instagram, TikTok, Threads 및 YouTube 게시물은 그대로 유지되며 사용자만 제거할 수 있습니다.
  • 전달 실패: retry_delivery는 하나의 네트워크를 재시도하며 할당량을 다시 소모합니다. 연결 해지와 같은 영구적인 실패에는 거부됩니다. 이 경우 사용자는 https://1social.dev/app 에서 다시 연결해야 합니다.
  • 전달 상태가 unknown: 사용자에게 네트워크를 확인해 달라고 요청하세요. 사용자가 게시물이 실제로 게시되었는지 알려줄 때만 confirm_delivery를 그 답변과 함께 호출하세요. 절대 추측하지 말고, 묻지 않고 retry_delivery를 force와 함께 사용하지 마세요. 두 번째 복사본을 게시할 수 있습니다.

관련 스킬