아이폰 자동화

아이폰 단축어로 X·스레드 링크를 Notion에 저장하는 구성

X(트위터)나 Threads에서 본 아이디어를 나중에 찾으려면 링크를 한곳에 모아두는 방법이 편합니다. 이 글은 공유된 URL 한 개를 추출해 Notion에 새 페이지를 만들도록 요청하는 단축어 구성을 설명합니다. 아래 화면은 iOS 26.5 시뮬레이터에서 직접 조립한 UI 기록이며, X·Threads 공유부터 실제 Notion 계정 저장까지 완료한 시험 기록은 아닙니다.

설정에는 아이폰의 단축어 앱을 사용합니다. Mac이나 Xcode는 필수가 아닙니다.

아래 화면은 Xcode의 iPhone 17 Pro Max Simulator, iOS 26.5에서 직접 만든 단축어입니다.
메뉴 이름은 실제 화면에서 확인한 한국어 표기를 사용했습니다.
iOS 버전에 따라 버튼 위치는 조금 달라질 수 있지만 필요한 동작은 같습니다.

구성하려는 흐름은 네 단계입니다. 저장 성공은 마지막 요청 뒤 Notion에 만들어진 페이지와 URL을 확인해야 판정할 수 있습니다.

X·Threads 공유 시트
→ 입력에서 URL 가져오기
→ Notion 페이지 생성 JSON 만들기
→ POST https://api.notion.com/v1/pages

아이폰 단축어 Notion 자동 저장 준비물

먼저 다음 항목을 준비합니다.

  • 아이폰의 단축어 앱
  • Notion에 만든 링크 수집용 데이터 소스
  • Notion 내부 연결의 토큰
  • Notion 데이터 소스 ID

Notion 수집함에는 아래 세 속성만 있으면 됩니다. 속성 이름과 형식은 JSON과 정확히 같아야 합니다.

속성 이름 Notion 형식 기본값
Name 제목 Social link
URL URL 공유한 링크
Status 선택 Unread

Notion 개발자 페이지에서 내부 연결을 만들고 Insert content 권한을 켭니다. 그다음 수집함 데이터 소스의 연결 목록에 이 연결을 추가합니다. 접근 권한이나 대상 공유가 빠지면 403 또는 404 오류가 날 수 있으므로 응답의 code와 message를 함께 확인합니다.

현재 Notion API에서는 데이터베이스 ID와 데이터 소스 ID를 구분합니다. 아래 JSON의 부모에는 database_id가 아니라 data_source_id를 넣습니다.

0. Notion 토큰과 데이터 소스 ID 준비하기

여기서 가장 중요한 구분은 database ID가 아니라 data source ID를 페이지의 부모로 사용한다는 점입니다. Notion 공식 문서의 2026-03-11 API 예시도 parent.type과 parent.data_source_id를 사용합니다.

Notion 쪽 준비도 화면 순서대로 하면 어렵지 않습니다.

  1. Notion 개발자 포털에서 Build → Internal connections로 이동합니다.
  2. Create a new connection을 누르고 연결 이름을 Social Link Collector처럼 정합니다.
  3. 만든 연결의 Configuration 탭에서 Insert content 권한을 켭니다.
  4. 같은 화면의 Installation access token을 복사해 암호 관리자에 보관합니다. 이 값이 YOUR_NOTION_TOKEN 자리에 들어갑니다.
  5. Content access 탭에서 Edit access를 누르고 링크 수집용 데이터베이스를 선택합니다.
  6. Notion 앱에서 그 데이터베이스를 연 뒤 오른쪽 위 ··· → Manage data sources → Copy data source ID를 누릅니다. 이 값이 YOUR_DATA_SOURCE_ID 자리에 들어갑니다.

Copy database link로 얻은 32자리 database ID와 data source ID는 같다고 가정하면 안 됩니다. Manage data sources 메뉴가 안 보이면 데이터베이스 전체 페이지를 열었는지, 본인에게 편집 권한이 있는지부터 확인합니다.

토큰은 이 글의 예시처럼 자리표시자로만 기록합니다. 실제 토큰을 메모 앱, 블로그 초안, 스크린샷에 붙여 넣지 않습니다.

1. 아이폰에서 새 단축어 만들기

아이폰에서 단축어 앱을 열고 오른쪽 위 +를 누릅니다. 이름은 소셜 링크 수집으로 정합니다. Mac이나 Xcode를 먼저 설치할 필요는 없습니다.

아이폰 단축어 Notion 자동 저장용 새 단축어 만들기
새 단축어 만들기

2. 공유 입력에서 URL 추출하기

하단 동작 검색에 URL 가져오기를 입력하고 입력에서 URL 가져오기를 추가합니다.

입력에서 URL 가져오기 추가
입력에서 URL 가져오기 추가

처음에는 입력 칸이 비어 있습니다. 파란색 입력을 눌러 단축어 입력을 선택합니다. 최종 화면에서 단축어 입력에서 URL 가져오기로 보이면 제대로 연결된 것입니다.

3. 공유 시트에서 보이게 설정하기

편집기 아래쪽의 원형 i 버튼을 눌러 세부사항을 엽니다. 공유 시트에서 보기를 켭니다.

공유 시트에서 보기 켜기
공유 시트에서 보기 켜기

세부사항을 닫으면 편집기 맨 위에 공유 시트에서 … 받기가 추가됩니다. 파란 입력 유형을 눌러 먼저 지우기로 전체 선택을 해제한 뒤 텍스트와 URL만 켭니다.

입력 유형을 텍스트와 URL로 제한
입력 유형을 텍스트와 URL로 제한

X와 Threads는 앱 버전에 따라 URL만 넘기거나 텍스트 안에 URL을 섞어서 넘길 수 있습니다. 두 형식을 함께 허용하면 입력에서 URL 가져오기가 링크를 추출합니다.

4. Notion에 보낼 JSON 만들기

이 설정의 핵심은 전송할 페이지 속성을 JSON으로 정확히 만드는 것입니다. 동작 검색에서 텍스트를 추가하고 아래 JSON을 붙여 넣습니다.

{
  "parent": {
    "type": "data_source_id",
    "data_source_id": "YOUR_DATA_SOURCE_ID"
  },
  "properties": {
    "Name": {
      "title": [
        {
          "text": {
            "content": "Social link"
          }
        }
      ]
    },
    "URL": {
      "url": "PASTE_URL_HERE"
    },
    "Status": {
      "select": {
        "name": "Unread"
      }
    }
  }
}

YOUR_DATA_SOURCE_ID는 본인의 Notion 데이터 소스 ID로 바꿉니다. 이 예시는 유효한 게시물 URL 하나를 전제로 합니다. URL 변수의 결과가 목록이거나 비어 있으면 요청을 보내지 말고 입력부터 확인합니다. 임의 텍스트를 JSON 문자열 안에 직접 넣는 방식은 따옴표·줄바꿈 처리에 취약하므로, 입력 범위를 넓힐 때는 사전 객체를 구성해 JSON으로 직렬화하는 방식도 별도로 검증해야 합니다.

PASTE_URL_HERE 글자만 선택합니다. 키보드 위 변수 목록에서 앞 단계가 만든 파란색 URL 변수를 누릅니다. 따옴표 사이에 파란 URL 토큰이 들어가야 합니다.

JSON 안에 URL 매직 변수 삽입
JSON 안에 URL 매직 변수 삽입

스크린샷의 토큰이나 ID는 모두 자리표시자입니다. 실제 토큰을 캡처하거나 블로그에 올리면 안 됩니다.

5. Notion API 주소 추가하기

페이지 생성 요청은 Notion의 페이지 생성 엔드포인트로 보냅니다. 두 번째 텍스트 동작을 추가하고 아래 주소만 입력합니다.

https://api.notion.com/v1/pages

이어서 URL 콘텐츠 가져오기 동작을 추가합니다. 바로 앞 텍스트가 API 주소이므로 URL 입력으로 자동 연결됩니다.

파란 펼치기 버튼을 누르고 메소드를 POST로 바꿉니다.

POST 메소드 설정
POST 메소드 설정

6. Notion 요청 헤더와 본문 연결하기

헤더를 펼치고 아래 세 줄을 추가합니다.

키 값
Authorization Bearer YOUR_NOTION_TOKEN
Notion-Version 2026-03-11
Content-Type application/json

YOUR_NOTION_TOKEN은 본인의 내부 연결 토큰으로 바꿉니다. 앞의 Bearer와 공백 한 칸은 그대로 둡니다.

본문 요청은 파일을 선택합니다. 아래 파일 입력에서 변수 선택을 눌러 첫 번째 텍스트 동작, 즉 JSON 본문을 고릅니다.

헤더와 JSON 본문 연결
헤더와 JSON 본문 연결

직접 구성한 최종 단축어는 네 개의 동작으로 저장됩니다.

저장된 소셜 링크 수집 단축어
저장된 소셜 링크 수집 단축어

7. 실제 아이폰에서 테스트하기

설정을 마쳤다면 실제로 사용할 아이폰에서 X 또는 Threads의 테스트용 링크 한 개를 공유하고, 아래 항목을 확인합니다.

  1. X 또는 Threads에서 저장할 게시물을 엽니다.
  2. 공유 버튼을 누릅니다.
  3. 공유 시트에서 소셜 링크 수집을 선택합니다.
  4. Notion 수집함에 Social link라는 새 행이 생겼는지 확인합니다.
  5. URL 속성을 열어 원문 링크와 같은지 확인합니다.

저장된 행에서 선택 속성 Status의 값이 Unread인지 확인합니다. Notion의 별도 속성 유형인 “상태”가 아니라 이 글의 표에 지정한 “선택” 유형을 사용합니다. API 응답이 오류 객체라면 단축어 실행이 끝났더라도 저장 성공이 아닙니다. 수집한 링크를 AI 초안으로 연결하려면 AI 블로그 자동화에서 초안과 발행 권한을 분리하는 방법도 함께 확인하세요. 링크 수집과 공개 발행은 별도 단계로 다룹니다.

설정 뒤 확인할 완료 기준

단축어가 오류 없이 끝났다는 사실만으로 저장이 완료됐다고 판단하지 않습니다. 아래 항목을 실제 Notion 수집함에서 확인해야 합니다.

확인 항목 완료 기준
공유 입력 X와 Threads에서 각각 한 번씩 실행해 URL이 추출됨
페이지 생성 대상 데이터 소스에 새 행이 한 번만 생성됨
속성 Name, URL, Status가 의도한 형식으로 저장됨
원문 링크 Notion의 URL이 공유한 게시물 주소와 일치함
실패 처리 401·403·validation_error를 성공으로 오인하지 않음

중복 실행이 걱정된다면 같은 링크를 다시 보냈을 때 어떤 규칙으로 처리할지도 별도로 정합니다. 이 글의 단축어는 가장 단순한 수집 흐름을 설명하며, 중복 제거·재시도·다중 사용자 인증까지 구현한 완성형 서비스는 아닙니다.

오류가 날 때 확인할 곳

400 또는 validation_error

  • Name, URL, Status 속성 이름이 Notion 수집함과 같은지 확인합니다.
  • 각 속성 형식이 제목·URL·선택인지 확인합니다.
  • data_source_id에 데이터베이스 ID를 잘못 넣지 않았는지 확인합니다.

401 unauthorized

  • Authorization 값이 Bearer로 시작하는지 확인합니다.
  • 토큰 앞뒤에 따옴표나 불필요한 공백이 들어가지 않았는지 확인합니다.

403 restricted_resource

  • 내부 연결에 Insert content 권한이 있는지 확인합니다.
  • Notion 수집함의 연결 목록에 해당 내부 연결을 추가했는지 확인합니다.

404 object_not_found: 데이터 소스를 찾을 수 없음

대상 ID가 정확한지, 해당 데이터베이스가 내부 연결에 공유되어 있는지 확인합니다. Notion 공식 문서에 따르면 존재하는 리소스라도 연결에 공유되지 않으면 404가 반환될 수 있습니다.

URL이 없거나 여러 개 추출됨

먼저 게시물 링크 하나만 공유해 테스트합니다. URL이 없는 입력은 API로 보내지 않고 중단하고, 여러 URL이 들어오면 저장할 링크 하나를 선택하는 분기를 별도로 추가해야 합니다. 아래 기본 예시는 이 분기를 구현한 완성형 단축어가 아닙니다.

공유 시트에 단축어가 안 보임

  • 세부사항의 공유 시트에서 보기가 켜져 있는지 확인합니다.
  • 입력 유형에 텍스트와 URL이 선택됐는지 확인합니다.
  • X·Threads 앱을 완전히 종료한 뒤 다시 엽니다.

토큰을 단축어에 넣어도 될까

이 방식은 개인용 단축어를 가장 빠르게 만드는 방법입니다. 대신 Notion 토큰이 아이폰 단축어 안에 저장됩니다.

  • 이 단축어를 iCloud 링크나 파일로 공유하지 않습니다.
  • 화면 녹화와 스크린샷에 토큰이 보이지 않게 합니다.
  • 여러 사람이 쓰는 자동화라면 토큰을 단축어에 넣지 말고, 인증된 중간 서버가 Notion API를 호출하도록 구성합니다.

자주 묻는 질문

아이폰 단축어 Notion 자동 저장으로 X와 Threads 링크를 모두 보낼 수 있나요?

두 앱의 공유 입력에서 링크를 추출하도록 구성한 예시입니다. 텍스트·URL 입력을 허용한 뒤 각 앱에서 링크 하나를 공유해 확인해야 합니다. 링크가 없거나 여러 개 추출되면 아래 기본 구성만으로 처리된다고 가정하지 않습니다.

Notion database ID와 data source ID는 같은 값인가요?

같다고 가정하면 안 됩니다. 2026-03-11 버전의 Create a page 요청에서는 부모에 data_source_id를 사용하며, Notion의 Manage data sources 메뉴 또는 Retrieve a database API에서 확인할 수 있습니다.

401과 403 오류의 차이는 무엇인가요?

401 unauthorized는 대개 토큰이나 Bearer 형식 문제이고, 403 restricted_resource는 연결 권한 또는 대상 데이터 소스 접근 권한 문제입니다.

아이폰 단축어에 Notion 토큰을 저장해도 안전한가요?

개인용으로만 쓰고 단축어·화면·백업을 공유하지 않는다면 빠른 구성 방법이 될 수 있습니다. 여러 사람이 사용하는 흐름이라면 토큰을 단축어에 넣지 말고 인증된 중간 서버에서 Notion API를 호출하는 편이 안전합니다.

참고한 공식 문서

마무리: 공유 한 번으로 링크 수집 자동화

목표는 X나 Threads에서 공유 버튼을 누르고 소셜 링크 수집을 선택해 링크를 Notion 수집함에 저장하는 것입니다. 설정 후 실제로 새 행과 올바른 URL이 생성되는지 확인해야 합니다. 핵심은 공유 내용에서 URL 한 개를 추출하고, data_source_id와 현재 API 버전을 정확히 지정하며, 토큰을 외부에 노출하지 않는 것입니다.

관련 글


정보 기준일: 2026-08-26
검증 환경: Xcode iPhone 17 Pro Max Simulator, iOS 26.5
경험 범위: 단축어 UI 구성, 공유 입력, URL 추출, JSON 매직 변수, POST·헤더·본문 연결까지 직접 확인. 실제 Notion 토큰과 데이터 소스 ID는 사용하지 않음.
협찬·광고·원고료: 없음

편집 기준일: 2026-09-14

정정: 2026-09-27. 도입부와 요약을 UI 구성 기록의 범위에 맞추고 입력 URL의 개수 조건을 정리했습니다.