Communitygithub.com

원본 영상에서 쇼츠까지: Shorts·Reels·TikTok 게시

완성된 짧은 MP4를 의존성 없는 휴대용 Python CLI로 Buffer를 통해 YouTube Shorts, TikTok, Instagram Reels, Facebook, LinkedIn에 게시합니다. Buffer 계정을 하나 이상 연결하고, 계정을 넘나들며 채널을 그룹으로 묶고, 플랫폼별 제목과 캡션을 작성하고, 검토 가능한 게시 계획을 저장한 뒤 실제 게시 상태와 링크를 보고합니다.

원본 영상에서 쇼츠까지: Shorts·Reels·TikTok 게시란 무엇인가요?

‘원본 영상에서 쇼츠까지’ 레시피 3단계(게시), 출처 BRPLia/publish-shorts-skill(스킬 이름 buffer-shorts, 문서는 스페인어). SKILL.md를 읽는 모든 에이전트에서 동작하며 npx skills add BRPLia/publish-shorts-skill 로 설치합니다. scripts/buffer_shorts.py를 구동하는데, Python 3.9+ 표준 라이브러리만 쓰고 JSON을 반환하며 서버·브라우저·추가 패키지가 필요 없습니다. 온보딩에서는 계정 이름과 Buffer API 키 전달 방식만 묻고, 실제로 연결된 채널을 찾아 여러 계정에 걸친 그룹으로 저장할 수 있습니다. 영상마다 MP4 경로와 대상 그룹을 받아 플랫폼별로 충실한 문구(YouTube는 제목과 설명, TikTok은 캡션만)를 쓰고, 계정·문구·파일 지문이 담긴 계획을 저장한 다음 게시하고 채널별로 계정, 플랫폼, 상태(sending, scheduled, accepted), post_id, 링크, 오류를 보고합니다. 영상을 생성하거나 편집하지는 않습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add BRPLia/publish-shorts-skill

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

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

문서

Buffer Shorts

"이 비디오를 내 소셜 미디어에 게시해줘"와 같은 주문을 구체적인 계획과 검증 가능한 게시물로 변환합니다. 이 폴더에서 scripts/buffer_shorts.py를 실행합니다. CLI는 표준 Python 3.9+를 사용하며, JSON을 반환하고 Content Publisher, 서버, 브라우저 또는 외부 Python 종속성이 필요하지 않습니다.

첫 번째 접촉

  1. 절대 경로나 사용자 이름을 가정하지 않고 이 폴더를 찾습니다.
  2. 필요한 경우에만 README.md를 읽어 설치 방법과 제한 사항을 확인합니다.
  3. channels를 실행하여 이미 구성된 계정을 확인합니다. 워크스페이스의 권한 및 터미널 규칙을 준수합니다. 도움말을 표시해도 아무것도 게시되지 않습니다.
  4. 계정이 없으면 다음 온보딩을 안내합니다. 이미 있으면 재사용합니다.

대화형 온보딩

누락된 정보(계정 이름 및 키 전달 방법)만 질문합니다. 설명: "Buffer에서 소셜 미디어를 연결하고 설정 → API에서 API 키를 만드세요. 제가 채널을 감지하고 구성을 저장하므로 ID를 찾을 필요가 없습니다." URL: https://publish.buffer.com/settings/api 경로가 변경되면 Buffer → Settings → API로 이동합니다.

대화 예시:

  • 사용자: "Buffer를 설정해줘, 이 계정은 Mi marca야."
  • 에이전트: "Buffer에서 네트워크를 연결하세요. 키는 로컬 프롬프트에 숨겨서 입력하거나, 로컬 파일에 저장하거나, 채팅 기록에 남아도 괜찮다면 여기서 공유할 수 있습니다."
  • 사용자가 선택한 방법으로 키를 전달합니다.
  • 에이전트가 설정하고 채널을 감지하여 이름을 알려줍니다. 키는 반복하지 않습니다.
  • 에이전트: "YouTube Mi Canal, TikTok Mi Canal 및 Instagram Mi Canal을 찾았습니다. Mi marca 그룹에 저장할까요?" 사용자가 이미 그룹/대상을 지정했다면 바로 생성합니다.

로컬 숨김 입력의 경우:

python scripts/buffer_shorts.py accounts add --label "Mi marca"

이 명령은 사용자가 getpass를 사용하여 입력할 수 있는 대화형 터미널이 필요합니다. 사용자가 입력할 수 있다고 기대하면서 대화형 입력이 없는 도구에서 실행하지 마십시오.

사용자가 준비한 로컬 파일의 경우:

python scripts/buffer_shorts.py accounts add --label "Mi marca" --key-file ".local/key-input.txt"

키가 채팅으로 전달된 경우, 먼저 .local/을 만들고 에이전트의 파일 도구를 사용하여 .local/key-input.txt에 키만 작성합니다. 위 명령을 실행하고 성공을 확인한 후 파일 도구로 임시 파일을 삭제합니다. 키는 .local/config.json에 남습니다. 키를 셸 명령, 인수, 문서, 예제 또는 메시지에 직접 삽입하지 마십시오.

--key-env VARIABLE_NAME 또는 --key-stdin도 지원됩니다. 키를 만들거나 다른 프로젝트의 키를 복사하지 마십시오. config.json을 표시하지 마십시오. accounts list와 channels는 비밀 없이 결과를 표시하도록 설계되었습니다.

여러 계정

"다른 계정 추가"를 요청하면 다른 이름과 키로 accounts add를 반복합니다. 이전 계정을 교체하지 않고 채널이 추가됩니다. Buffer에 연결을 추가한 경우, accounts refresh를 실행하고 선택적으로 --account ID를 사용합니다.

각 계정의 무료 플랜은 현재 Buffer 제한에 따라 최대 3개의 채널을 제공합니다. 동일한 계정의 여러 키가 이 제한을 늘리지 않습니다. 이 스킬은 독립적인 계정을 관리하고 실제 연결을 발견하며 최대 3개를 강제하지 않습니다. 더 많은 채널이 있는 플랜에도 유용합니다. 무제한 연결이나 Buffer가 여러 계정 전략을 승인한다고 약속하지 마십시오. 공급자의 조건과 같은 현재 조건을 문서화하십시오.

각 채널에는 ACCOUNT_ID:CHANNEL_ID 형식의 참조(ref)가 있습니다. 두 네트워크의 이름이 같더라도 이 ID를 유지하십시오. "youtube"가 두 채널과 일치하면 어느 것인지 질문하고 해당 참조를 사용하십시오. 전체에 게시하거나 첫 번째를 선택하지 마십시오. 그룹은 여러 계정의 대상을 결합할 수 있습니다:

python scripts/buffer_shorts.py group "Mi marca" --targets "REF_1,REF_2,REF_3"

비디오 준비

  1. MP4 경로와 대상(그룹 또는 참조 기준)을 가져옵니다. channels를 사용하고 임의로 만들지 마십시오.

  2. 사용자의 전사/컨텍스트 또는 비디오 검사를 사용하여 콘텐츠를 이해합니다. 검사할 수 없으면 간단한 설명을 요청하십시오. 파일 이름에서 사실, 결과, 수백만 뷰 또는 브랜드를 추론하지 마십시오.

  3. 초안을 작성하기 전에 선택한 네트워크에 대한 제목/캡션을 짧게 웹 검색합니다: 최대 3개의 그룹화된 검색과 3페이지, 약 60초의 예산을 목표로 합니다. 공식 출처를 우선시하고 최대 3개의 유용한 개선 사항을 적용합니다. 절차는 references/copy-refresh.md를 참조하십시오. 같은 날 같은 게시물 배치에 대해 검토된 내용을 재사용합니다. 날짜, 출처 및 규칙을 .local/copy-research.json에 저장합니다. 공개 파일에는 절대 저장하지 마십시오. 키, 계정 ID 또는 사용자의 개인 텍스트를 검색하지 마십시오. 탐색할 수 없으면 기본 원칙을 사용하고 현재 조회가 없었음을 알리십시오. 알고리즘 참신함을 만들거나 게시를 늦추지 마십시오.

  4. 각 네트워크에 맞게 정확하고 간결하며 적절한 텍스트를 작성합니다. YouTube는 제목과 설명을 분리합니다. TikTok은 독립적인 비디오 제목이 아닌 캡션을 사용합니다.

  5. 필요한 경우 서비스 또는 참조별 설정이 포함된 로컬 JSON을 준비합니다:

    { "youtube": {"title": "구체적인 제목", "description": "유용한 설명", "category_id": "27"}, "tiktok": {"caption": "후크 및 컨텍스트 #주제"}, "instagram": {"caption": "컨텍스트 및 클릭 유도 문구"}, "facebook": {"caption": "릴용 텍스트"}, "linkedin": {"title": "학습 내용", "caption": "전문적인 컨텍스트"} }

참조별 항목이 서비스별 항목보다 우선합니다. 기본 제목과 기본 설명은 필수입니다. 자동으로 이모지나 #youtube/#tiktok을 추가하지 마십시오. AI 생성 정보가 있을 때만 ai_generated를 표시하십시오. 생략한다고 해서 비디오가 AI를 사용하지 않는다는 것을 의미하지는 않습니다. 사용자가 개인정보 보호 또는 아동용 콘텐츠를 조정하려는 경우, 이 버전에서는 전송 전에 Buffer에서 해당 옵션을 검토해야 합니다. CLI가 이를 구성한다고 약속하지 마십시오.

python scripts/buffer_shorts.py prepare "video.mp4" --group "Mi marca" --title "제목" --description "설명" --copy-file ".local/copy.json"

--group의 대안: --targets "REF_1,REF_2". prepare는 로컬에서 실행됩니다. 비디오를 업로드하거나 게시하지 않습니다. 계정, 텍스트 및 비디오 지문이 포함된 계획의 경로를 반환합니다. 사용자에게 대상과 최종 텍스트를 간단한 언어로 표시합니다.

게시 및 확인

사용자가 이미 해당 비디오를 해당 대상에 게시하도록 요청한 경우, 지시는 게시를 승인합니다. 준비, 텍스트 제안 또는 설정만 요청한 경우, 게시 전에 사용자의 승인을 기다리십시오. 추가 로컬 권한을 존중하십시오. 이미 명확하게 승인된 작업에 대해 다시 확인을 요청하지 마십시오.

python scripts/buffer_shorts.py publish "PLAN_PATH" --yes
python scripts/buffer_shorts.py status "PLAN_PATH"

첫 번째 전송 전에 Buffer가 다운로드할 수 있도록 비디오가 임시 공용 호스트에 호스팅될 것이라고 설명하십시오. 즉시 게시하려면 이 옵션을 사용하십시오. 예약하려면 사용하지 마십시오. --media-url URL은 자체 공용 MP4를 허용합니다. "안티-밴", 도달 범위 또는 바이럴 혜택을 광고하지 마십시오.

CLI는 Buffer에 요청하기 전에 각 전송을 기록합니다. 맹목적인 재시도를 실행하지 않습니다. 요청이 중단되면 unknown/submitting 상태가 재전송을 차단합니다. 결정하기 전에 Buffer와 기록을 확인하십시오. --republish는 명시적인 재게시 요청이 있을 때만 사용하십시오. 오류를 해결하는 데 사용하지 마십시오.

확인 후 불확실한 전송을 복구하려면 Buffer에서 게시물을 찾은 경우 recover PLAN --target REF --post-id ID --yes를 사용하십시오. 콘텐츠가 일치하는지 확인하십시오. CLI는 ID가 선택한 채널에 속하는지 확인합니다. 사용자가 게시물이 생성되지 않았음을 확인한 경우 recover PLAN --target REF --not-sent --yes를 사용하여 새 시도를 허용합니다. 시간 초과로 게시물이 없다고 단정하지 마십시오. 중단 후 잠금이 발생하면 프로세스가 종료되었는지 확인하고 기록을 검토한 후에만 .local/publish.lock을 삭제하십시오.

  • sent: 게시됨; 사용 가능한 경우 external_link 반환.
  • sending/scheduled/accepted: Buffer가 수신했지만 아직 게시 확인되지 않음.
  • error: 실패 보고; 수정 후 재시도 허용.
  • needs_approval/draft: Buffer에서 보류 중인 단계를 완료해야 함.
  • skipped: 이미 전송됨; 결과에 표시된 원래 계획을 확인.
  • unknown/blocked: 검토 필요, 자동 재전송 금지.
  • not_submitted: 해당 대상이 아직 전송되지 않음.

보류 중인 경우 간격을 두고 status를 다시 확인하십시오. PostActionSuccess 또는 ID는 게시를 증명하지 않습니다. 대상별로 보고: 계정/네트워크 이름, 상태, post_id, 링크 및 오류(있는 경우).

범위

주요 어댑터: YouTube, TikTok, Instagram, Facebook 및 LinkedIn. X(service=twitter), Threads, Bluesky 및 Mastodon용 기본 비디오 어댑터도 있습니다. 각각의 제한이 적용됩니다. channels는 어댑터가 없는 감지된 서비스에 대해 supported=false를 표시합니다. "모든 네트워크"라고 단정하지 마십시오.

최대 180초, 최대 150MB의 세로 또는 정사각형 MP4를 사용하십시오. 선택적 ffprobe가 크기/지속 시간을 확인합니다. 없으면 CLI에서 확인되지 않았다고 표시하며 게시 전에 확인해야 합니다. 각 네트워크의 특정 제한이 더 엄격할 수 있습니다. 비디오를 변환하거나 ffmpeg를 자동으로 설치하지 마십시오.

사용자가 요청하지 않는 한 이 스킬을 전역적으로 설치하지 마십시오. 모든 에이전트에서 사용하려면 이 SKILL.md를 읽고 Python 실행 환경만 있으면 됩니다.

관련 스킬