AI 자동화 사례

아이폰 단축어 Notion 자동 저장: X·스레드 링크 저장 방법

X(트위터)나 스레드(Threads)에서 발견한 링크를 노션에 모으고 싶다면, 아이폰 단축어 Notion 자동 저장 흐름을 구성할 수 있습니다. 공유 시트에서 URL을 받아 Notion API로 보내는 방법을 준비 단계부터 테스트까지 설명합니다. 이 예시는 링크를 저장하며 게시물 본문·이미지 전체를 복사하거나 AI로 요약하지 않습니다.

먼저 알아둘 검증 범위: 아래 스크린샷은 iOS Simulator에서 단축어 UI를 구성한 기록입니다. 실제 Notion 토큰과 데이터 소스 ID를 사용한 저장 성공은 검증하지 않았습니다. 아이폰에서 직접 설정할 수 있으며 Mac·Xcode는 필수가 아닙니다. 마지막 테스트와 완료 기준을 본인 환경에서 확인해 주세요.

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

완성되는 흐름은 네 단계입니다.

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 오류가 날 수 있으므로 응답의 codemessage를 함께 확인합니다.

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

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

여기서 가장 중요한 구분은 database ID가 아니라 data source ID를 페이지의 부모로 사용한다는 점입니다. Notion 공식 문서의 2026-03-11 API 예시도 parent.typeparent.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를 먼저 설치할 필요는 없습니다.

스크린샷 촬영 환경: 이 글은 Xcode의 Open Developer Tool → Simulator에서 iPhone 17 Pro Max, iOS 26.5 화면을 사용했습니다. Simulator는 설명용이며 실제 로그인과 저장 테스트는 본인의 아이폰에서 진행합니다.

아이폰 단축어 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로 바꿉니다.

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. 실제 아이폰에서 테스트하기

실제 저장까지 작동하는지는 물리 아이폰에서 확인합니다. Simulator 화면은 설정 순서를 확인하기 위한 것이며, 실제 X·Threads 로그인과 본인의 Notion 토큰은 물리 아이폰에서 테스트합니다.

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

정상이라면 상태는 Unread로 저장됩니다. 수집한 링크를 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을 함께 허용하면 앱이 URL만 보내거나 본문에 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-10. 아이폰 기준 시작 단계, 검증 범위 안내, 404 오류 점검과 관련 글 연결을 보완했습니다. 이 편집 과정에서 실제 토큰을 사용하거나 외부 계정 연결을 재실행하지 않았으며, iOS와 Notion API 화면은 버전에 따라 달라질 수 있습니다.

CONTENTS