준비 중인 채널

Bluesky

포샌디로 AI가 Bluesky에 올리게 될 방법이에요. OAuth 대신 앱 비밀번호로 연결하고, 글자는 그래핌으로 세고, 링크는 따로 처리해요.

준비 중인 채널이에요. 아래는 연결이 열리면 쓰게 될 방법이에요. 열리면 블로그와 이 페이지에 알려드려요.

연결 방법: 앱 비밀번호

Bluesky에는 다른 앱이 쓰는 승인 화면이 없어요. 그래서 이렇게 연결하게 돼요.

  1. Bluesky 설정에서 앱 비밀번호를 만들어요.
  2. 그 값을 대시보드에 붙여넣어요.

플랫폼 심사는 없어요. 포샌디는 앱 비밀번호를 URL에 넣지 않아요.

한눈에

항목종류값
글자 수텍스트300
이미지미디어글 하나에 4장까지. 더 넣으면 앞의 4장만 올라가고 경고가 붙어요
캐러셀미디어없음. 이미지는 글 안에 차례로 들어가요
영상미디어글 하나에 1개
텍스트만미디어가능
24시간 발행한도11,666
24시간 삭제한도35,000
상태상태준비 중

연결이 열리면 서버가 이 값으로 검사하게 돼요. Bluesky는 글자를 그래핌(읽는 사람 눈에 한 글자로 보이는 단위)으로 세고, UTF-8 바이트 상한도 같이 둬요. 그래서 이모지 300개로 된 글은 바이트 상한에 걸려요.

langs를 꼭 넣어야 하는 이유

Bluesky의 피드 생성기는 글의 언어로 글을 걸러요.

  • options.bluesky.langs가 없어도 글은 올라가요. 하지만 언어별 피드에는 절대 안 나와요.
  • Bluesky에는 수정 기능이 없어서 나중에 고칠 수도 없어요.
  • 실제로 쓴 언어를 BCP-47 코드로 1~3개 넣어요.

링크와 멘션

Bluesky는 본문에 있는 링크를 알아서 찾아 주지 않아요. 그래서 포샌디가 facets를 만들어 줄 예정이에요.

  • 본문의 URL, @멘션, #해시태그가 눌리는 링크가 돼요.
  • 첫 번째 URL은 Open Graph 정보를 읽어 미리보기 카드로 만들어요.

URL은 본문에 그냥 적으면 돼요.

첫 글 올리기

본문과 langs를 넣어 publish를 부르게 돼요. 이미지는 4장까지 격자로, 영상은 1개 들어가요.

curl -X POST https://api.posendy.com/v1/posts \
  -H "Authorization: Bearer $POSENDY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Shipped nested replies today. https://posendy.com",
    "accountIds": ["conn_..."],
    "options": { "bluesky": { "langs": ["en"] } }
  }'

options.bluesky 값

이름타입설명
langsstring[]글에 쓴 언어예요. ["ko"]나 ["en", "ko"]처럼 BCP-47 코드 1~3개를 넣어요. 피드 생성기가 이 값으로 거르기 때문에, 없으면 언어별 피드에 안 나와요. Bluesky는 글 수정이 없어서 올린 뒤에는 못 고쳐요. 실제로 쓴 언어를 넣어요.
contentstring이 채널에만 보낼 본문이에요. 넣으면 공통 본문 대신 이 값이 나가고, 글자 수와 미디어 검사도 이 값으로 해요. 안 넣으면 공통 본문을 써요.

연결이 열리면 GET /v1/platforms도 같은 내용을 돌려주게 돼요.

안 되는 것

  • 올린 글 수정: Bluesky에 없는 기능이에요.
  • Instagram식 캐러셀: 여러 장은 격자로 보여요.

삭제는 돼요. Bluesky 화면 쪽 서버(앱뷰)는 지운 글을 한동안 계속 보여줄 수 있어서, 포샌디는 계정의 데이터 서버에서 지워졌는지 확인하게 돼요.

자주 묻는 것

Bluesky 비밀번호를 포샌디에 줘야 하나요?

아니요. Bluesky 설정에서 따로 만들고 언제든 없앨 수 있는 앱 비밀번호를 만들어 대시보드에 붙여넣어요. 이 값은 요청 본문으로만 보내고 URL에는 넣지 않아요.

내 글이 언어별 피드에 왜 안 나오나요?

langs를 넣지 않아서예요. 피드 생성기가 이 값으로 걸러요. 올린 뒤에는 고칠 수 없어서, 지우고 langs를 넣어 다시 올려야 해요.

300자인데 왜 거절됐나요?

Bluesky는 UTF-8 3,000바이트 상한도 같이 둬요. 이모지나 ZWJ 결합 문자가 많은 글은 그래핌 수로는 통과해도 바이트 수에서 걸려요. 오류 메시지에 어느 쪽 상한에 걸렸는지 나와요.