사이트에서 요청을 저장하거나, 진행 상황을 기록하거나, 연결된 앱의 정보를 표시해야 할 수 있습니다. 무엇을 저장할지, 정보를 어디에서 가져올지, 누가 접근할 수 있어야 하는지 ChatGPT에 알려주세요.
저장소와 로그인 기능 선택하기
새 프로젝트에서는 Sites 워크플로우에서 권장하는 사이트 스타터로 시작할 수 있습니다. 기존 프로젝트라면 배포를 요청하기 전에 호환되는 배포 아티팩트를 생성할 수 있는지 ChatGPT에 확인해 달라고 하세요.
ChatGPT가 필요한 저장소와 사용자 식별 기능을 선택할 수 있도록 사이트의 용도를 설명하세요.
| 사이트 요구 사항 | Sites에 요청할 내용 |
|---|---|
| 콘텐츠 중심 웹사이트 또는 랜딩 페이지 | 사용자 경험에 필요한 경우에만 애플리케이션 상태를 영구 저장하는 사이트 |
| 레코드, 사용자 진행 상황 또는 게임 점수 저장 | 구조화된 데이터를 영구 저장하는 관계형 데이터베이스 D1 |
| 이미지, 문서, 오디오, 동영상 등의 파일 업로드 | 파일용 객체 저장소 R2 |
| 메타데이터로 검색할 수 있는 업로드 파일 | 메타데이터는 D1에, 파일 내용은 R2에 저장 |
| 현재 워크스페이스 사용자를 식별해야 하는 내부 사이트 | 워크스페이스 인증을 거친 사용자 정보 |
| 공개 사이트 로그인 또는 외부 ID 공급자 연동 | 인증 기능이 있는 사이트 |
테마 선택이나 배너 닫기 같은 일시적인 화면 상태에는 영구 저장소를 요청하지 마세요. 사용자가 호스팅된 사이트에 계속 남아 있기를 기대하는 제품 데이터에는 영구 저장소를 요청하세요.
ChatGPT로 로그인 기능 추가하기
공개 사이트는 누구나 이용할 수 있도록 열어 두면서, 원하는 방문자에게 ChatGPT로 로그인하는 옵션을 제공할 수 있습니다. 로그인한 방문자에게는 진행 상황 저장, 개인화된 화면, 개인별 레코드 같은 기능을 제공할 수 있습니다. 워크스페이스 구성원만 이용할 수 있는 사이트에서는 이미 ChatGPT 사용자 정보를 바탕으로 공유 설정을 적용합니다.
Sites에 로그인 기능을 추가해 달라고 요청하세요.
작동 방식
Sites는 플랫폼에서 제공하는 경로로 로그인 및 로그아웃 플로우를 처리한 뒤 방문자를 사이트로 다시 안내합니다.
<a href="/signin-with-chatgpt">Sign in with ChatGPT</a>
<a href="/signout-with-chatgpt">Sign out</a>방문자가 로그인하면 Sites는 다음 요청 헤더로 사용자 정보를 서버에 전달합니다.
oai-authenticated-user-email에는 인증된 이메일 주소가 들어 있습니다.oai-authenticated-user-full-name에는 프로필 이름이 들어 있을 수 있습니다. 이 값은 선택 사항이므로 이름이 없거나 비어 있으면 이메일 주소를 사용하세요.
접근 권한은 서버 측 코드에서 판단하세요. 성과 이름을 나누어 제공하는 헤더에 의존하지 마세요.
SIWC 우회 토큰으로 비공개 사이트 호출하기
스크립트나 서비스에서 로그인이 필요한 사이트를 호출하려면 ‘ChatGPT로 로그인’(SIWC) 우회 토큰을 사용하세요. 이 토큰을 사용하면 브라우저에서 대화형 로그인 세션을 시작하지 않고도 사이트의 로그인 검사를 통과할 수 있습니다.
사이트 소유자는 ChatGPT Work 또는 Codex에 해당 사이트의 토큰을 생성해 달라고 요청하세요.
에이전트는 generate_siwc_bypass_token을 호출하고 siwc_bypass_bearer_token을 반환합니다. 새 토큰을 생성하면 해당 사이트의 기존 토큰이 교체되므로 이전 토큰을 사용하는 모든 서비스에서 값을 업데이트하세요.
다음 HTTP 요청 헤더에 토큰을 담아 보내세요.
OAI-Sites-Authorization: Bearer <siwc_bypass_bearer_token>
Sites는 요청을 사이트로 전달하기 전에 이 헤더를 처리하고 제거합니다. 사이트에서 자체 API 인증 정보도 요구한다면 일반 Authorization 헤더에 별도로 담아 보내세요. Sites는 이 헤더를 그대로 전달합니다.
우회 토큰을 사용한 요청에는 로그인한 방문자의 신원 정보가 없습니다. 따라서 위에서 설명한 인증된 사용자 헤더가 제공되지 않으며 방문자가 연결한 앱에도 접근할 수 없습니다. 추가로 필요한 권한 검사는 사이트의 서버 측 코드에서 수행하세요. 방문자의 신원이나 플러그인 권한이 필요한 기능에는 일반 로그인 플로우를 사용하세요.
토큰을 가진 사람은 누구나 해당 사이트의 로그인 검사를 통과할 수 있으므로 토큰을 비밀로 관리하세요. 서비스의 비밀 저장소에 보관하고 브라우저 코드, URL, 소스 관리 시스템에는 넣지 마세요. 토큰이 노출되면 새 토큰을 생성하고 사이트를 호출하는 모든 스크립트와 서비스에서 토큰을 교체하세요. 새 토큰은 즉시 사용할 수 있지만, 이전 토큰도 캐시된 설정이 만료될 때까지 최대 5분간 유효할 수 있습니다.
플러그인으로 사용자 데이터를 사이트에 가져오기
Sites에서 플러그인을 사용하면 각 방문자가 직접 연결한 앱에서 데이터를 가져오는 사이트를 만들 수 있습니다. 예를 들어 이슈 대시보드에서는 내가 접속하면 나에게 할당된 이슈가, 팀원이 접속하면 그 팀원에게 할당된 이슈가 표시됩니다. 각 방문자는 ChatGPT로 로그인한 뒤 사용할 연결 계정과 허용할 접근 범위를 선택합니다.
워크스페이스에서 플러그인 사용을 활성화해야 하며, 사이트는 해당 워크스페이스 구성원에게만 공개해야 합니다. 방문자는 워크스페이스 구성원이어야 하며 기존에 부여받은 앱 권한을 사용합니다. 관리자는 Sites에서 플러그인 사용 활성화하기에서 개별 플러그인 권한과 테넌트 제한 사항을 확인할 수 있습니다.
연결된 앱의 데이터로 사이트 만들기
- ChatGPT Work 또는 Codex에 사이트를 만들어 달라고 요청하세요. 사용할 플러그인 커넥터의 이름과 수행할 작업을 알려주거나, 어떤 플러그인을 사용할 수 있는지 물어보세요.
- 실제 데이터로 미리보기를 테스트하세요. 에이전트는 사이트를 만들고 미리보기를 표시할 때 사이트 작성자가 사용할 수 있는 연결을 이용합니다.
- 에이전트에 워크스페이스용으로 사이트를 게시하고 팀원들과 링크를 공유해 달라고 요청하세요.
예를 들어 다음과 같이 요청할 수 있습니다.
원본 문서 링크를 제공하는 문서 검색 도구나 티켓과 메시지를 한데 모아 보여 주는 프로젝트 개요 페이지도 만들 수 있습니다.
데이터 불러오기
페이지가 열리면 Sites는 방문자의 연결과 권한을 사용해 연결된 앱의 데이터를 읽습니다. 캐싱과 데이터 다시 불러오기는 Sites가 관리합니다. 수동 새로고침 기능이 필요하면 ChatGPT Work 또는 Codex에 추가해 달라고 요청하세요.
기본적으로 커넥터가 커서를 반환하면 Sites는 더 보기 기능으로 다음 페이지의 데이터를 가져옵니다.
기술 참고 사항: 플러그인 탐색
Sites는 getContext()를 호출해 플러그인이 제공하는 작업을 확인합니다. 이 함수는 캐시된 도구 이름, 설명, 스키마를 반환하며 탐색 결과를 새로 고치지는 않습니다.
연결된 앱에서 지원하는 작업과 사용 가능 여부는 도움말 센터의 ChatGPT Sites 만들기 및 사용하기에서 확인하세요.
방문자가 직접 연결 선택하기
연결된 앱을 사용하는 기능을 이용하려면 방문자는 ChatGPT로 로그인하고 사이트에서 요청하는 앱 접근 권한을 검토합니다. 그런 다음 사용할 연결 계정과 허용할 접근 범위를 선택하고 사이트로 돌아옵니다. 사이트를 공유해도 사이트를 만든 사람이 연결한 계정에 대한 접근 권한까지 공유되지는 않습니다. 사이트는 각 방문자가 접근을 허용한 앱에서 데이터를 받습니다.
방문자는 앱 접근을 허용하지 않고도 사이트를 계속 이용할 수 있지만, 해당 권한이 필요한 기능은 작동하지 않습니다. 앱을 사용할 수 없다면 올바른 워크스페이스에 앱이 연결되어 있는지, 워크스페이스 설정에서 해당 앱을 허용하는지 확인하세요.