이 문서에서는 Developer Knowledge API를 사용하여 Google의 공개 개발자 문서를 프로그래매틱 방식으로 검색하고 가져오는 방법을 보여줍니다. API를 사용하면 웹페이지를 수동으로 스크랩하는 대신 애플리케이션에서 관련 텍스트 스니펫을 찾거나 전체 마크다운 문서를 가져올 수 있습니다.
이 문서에서는 다음 작업의 예를 확인할 수 있습니다.
- 문서 코퍼스를 검색합니다.
- 검색 결과를 페이지로 나누기
- 검색에 복잡한 필터를 적용합니다.
- 전체 문서 콘텐츠를 가져옵니다.
- 지연 시간을 줄이기 위해 응답 페이로드를 최적화합니다.
시작하기 전에 원하는 도구의 환경을 설정하세요.
gcloud
REST
API를 사용 설정하고 Developer Knowledge API 키를 생성합니다. 그런 다음 키를 환경 변수에 저장합니다.
export DEVELOPERKNOWLEDGE_API_KEY="YOUR_API_KEY"
YOUR_API_KEY를 Developer Knowledge API 키로 바꿉니다.
문서 검색
gcloud developer-knowledge documents search-chunks 명령어 또는 documents.searchDocumentChunks REST 메서드를 사용하여 쿼리 문자열과 일치하는 문서 청크를 찾습니다. 결과에는 일치하는 문서의 콘텐츠 청크와 함께 해당 문서의 전체 콘텐츠를 검색하는 데 사용할 수 있는 parent 참조가 포함됩니다.
다음 예에서는 'BigQuery'와 일치하는 문서를 검색합니다.
gcloud
gcloud developer-knowledge documents search-chunks \ --query="BigQuery"
REST
curl "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks?query=BigQuery&key=$DEVELOPERKNOWLEDGE_API_KEY"
출력은 다음과 비슷합니다.
{
"results": [
{
"parent": "documents/docs.cloud.google.com/bigquery/docs/introduction",
"id": "chunk_0",
"content": "BigQuery is a fully managed enterprise data warehouse...",
"document": {
"name": "documents/docs.cloud.google.com/bigquery/docs/introduction",
"uri": "https://docs.cloud.google.com/bigquery/docs/introduction",
"title": "BigQuery overview",
"dataSource": "docs.cloud.google.com",
"updateTime": "2025-01-15T12:00:00Z"
},
"relevanceScore": 0.92
}
]
}
results 목록의 각 결과에는 다음이 포함됩니다.
parent: 문서 리소스 이름 (예:documents/docs.cloud.google.com/bigquery/docs/introduction)id: 문서 내 청크 식별자입니다 (예:chunk_0).content: 문서에서 일치하는 텍스트 스니펫입니다.document: 소스 문서에 관한 메타데이터입니다(예:title,uri,dataSource,updateTime).relevanceScore: 검색어에 대한 청크의 관련성 점수입니다(범위:[0.0, 1.0]).
응답 스키마 및 사용 가능한 모든 메타데이터 필드에 대한 자세한 내용은 documents.searchDocumentChunks API 참조를 참고하세요.
검색 결과 페이지로 나누기
검색어에서 여러 일치 항목이 반환되는 경우 페이지로 나누기 매개변수를 사용하여 결과 집합을 탐색할 수 있습니다.
--page-size(gcloud CLI) 또는pageSize(정수): 페이지당 반환할 최대 결과 수를 지정합니다. 지정하지 않으면 API는 기본적으로 5개의 결과를 반환합니다. 허용되는 최댓값은 100이며, 100을 초과하는 값은 100으로 변환됩니다.--limit(gcloud CLI) 또는pageToken(문자열): gcloud CLI에서--limit를 사용하여 페이지에 걸쳐 반환되는 총 결과 수를 제어합니다. REST 요청에서 이전 응답에서 수신한pageToken값을 전달하여 결과의 다음 페이지를 가져옵니다.
gcloud
--page-size 및 --limit 플래그를 전달하여 페이지당 결과 수와 반환된 총 결과 수를 제어합니다.
gcloud developer-knowledge documents search-chunks \ --query="BigQuery" \ --page-size=5 \ --limit=10
REST
첫 번째 페이지를 요청하려면 요청에서
pageSize파라미터를 전달합니다.curl "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks?query=BigQuery&pageSize=5&key=$DEVELOPERKNOWLEDGE_API_KEY"
추가 결과를 사용할 수 있는 경우 응답에
nextPageToken이 포함됩니다.{ "results": [ { "parent": "documents/docs.cloud.google.com/bigquery/docs/introduction", "id": "chunk_0", "content": "BigQuery is a fully managed enterprise data warehouse...", "document": { "name": "documents/docs.cloud.google.com/bigquery/docs/introduction", "uri": "https://docs.cloud.google.com/bigquery/docs/introduction", "title": "What is BigQuery?", "dataSource": "docs.cloud.google.com", "updateTime": "2025-01-15T12:00:00Z", "view": "DOCUMENT_VIEW_BASIC" }, "relevanceScore": 0.88 } ], "nextPageToken": "CAUQABgB" }후속 페이지를 검색하려면 다음 요청에서
nextPageToken값을pageToken매개변수에 전달합니다.curl "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks?query=BigQuery&pageSize=5&pageToken=CAUQABgB&key=$DEVELOPERKNOWLEDGE_API_KEY"
결과의 마지막 페이지에 도달하면
nextPageToken이 응답에서 생략됩니다.
검색결과 필터링하기
gcloud CLI에서 --query-filter 플래그를 사용하거나 REST 요청에서 filter 매개변수를 사용하여 검색 결과에 엄격한 필터를 적용합니다. 필터 표현식은 각 청크의 상위 문서 메타데이터에 적용됩니다.
필터 표현식은 500자 글자 수 제한이 있습니다.
지원되는 필드
다음 상위 문서 필드를 사용하여 검색 결과를 필터링할 수 있습니다.
content_length_bytes(정수): 문서의content필드 길이(바이트)입니다.data_source(문자열): 문서의 소스 도메인입니다(예:docs.cloud.google.com또는firebase.google.com). 지원되는 모든 데이터 소스는 코퍼스 참조를 참고하세요.update_time(타임스탬프): 문서가 마지막으로 업데이트된 타임스탬프입니다. 값은 RFC 3339 형식을 사용해야 합니다 (예:"2025-01-01T00:00:00Z").uri(문자열): 문서의 전체 URI입니다 (예:https://docs.cloud.google.com/bigquery/docs/tables).
지원되는 연산자
필터 표현식 파서는 필드의 데이터 유형에 따라 다양한 연산자를 지원합니다.
- 문자열 필드 (
data_source,uri): 정확한 문자열 일치를 위해=(같음) 및!=(같지 않음) 지원 부분, 접두사, 정규 표현식 일치는 지원되지 않습니다. - 타임스탬프 필드 (
update_time):=,<,<=,>,>=지원 - 정수 필드 (
content_length_bytes):=,!=,<,<=,>,>=을 지원합니다. - 논리 연산자:
AND,OR,NOT(또는-)을 사용하여 조건을 결합합니다.
필터 예시
다음 예에서는 필터 표현식을 구성하는 방법을 보여줍니다. gcloud CLI를 사용하는 경우 --query-filter 플래그에 표현식을 전달합니다. curl으로 REST API를 호출할 때는 filter 매개변수를 URL로 인코딩하거나 --data-urlencode를 사용해야 합니다.
단일 데이터 소스 일치
검색 결과를 단일 문서 도메인으로 제한합니다.
data_source = "docs.cloud.google.com"
gcloud
gcloud developer-knowledge documents search-chunks \ --query="Cloud Functions deployment" \ --query-filter='data_source = "docs.cloud.google.com"'
REST
curl -G "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks" \ --data-urlencode "query=Cloud Functions deployment" \ --data-urlencode 'filter=data_source = "docs.cloud.google.com"' \ --data-urlencode "key=$DEVELOPERKNOWLEDGE_API_KEY"
여러 데이터 소스 일치
OR를 사용하여 여러 소스의 문서를 포함합니다.
data_source = "docs.cloud.google.com" OR data_source = "firebase.google.com"
gcloud
gcloud developer-knowledge documents search-chunks \ --query="database" \ --query-filter='data_source = "docs.cloud.google.com" OR data_source = "firebase.google.com"'
REST
curl -G "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks" \ --data-urlencode "query=database" \ --data-urlencode 'filter=data_source = "docs.cloud.google.com" OR data_source = "firebase.google.com"' \ --data-urlencode "key=$DEVELOPERKNOWLEDGE_API_KEY"
타임스탬프로 필터링
RFC 3339 타임스탬프와 함께 비교 연산자를 사용하여 특정 날짜 이후에 업데이트된 콘텐츠를 찾습니다.
update_time >= "2025-01-01T00:00:00Z"
gcloud
gcloud developer-knowledge documents search-chunks \ --query="BigQuery" \ --query-filter='update_time >= "2025-01-01T00:00:00Z"'
REST
curl -G "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks" \ --data-urlencode "query=BigQuery" \ --data-urlencode 'filter=update_time >= "2025-01-01T00:00:00Z"' \ --data-urlencode "key=$DEVELOPERKNOWLEDGE_API_KEY"
콘텐츠 길이로 필터링
content_length_bytes와 함께 비교 연산자를 사용하여 바이트 크기에 따라 문서를 찾습니다.
content_length_bytes < 5000
gcloud
gcloud developer-knowledge documents search-chunks \ --query="Cloud Storage" \ --query-filter='content_length_bytes < 5000'
REST
curl -G "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks" \ --data-urlencode "query=Cloud Storage" \ --data-urlencode 'filter=content_length_bytes < 5000' \ --data-urlencode "key=$DEVELOPERKNOWLEDGE_API_KEY"
데이터 소스, 타임스탬프, 그룹화 결합
AND, OR, 괄호 (...)를 결합하여 특정 날짜 이후에 업데이트된 특정 소스로 결과를 제한합니다.
(data_source = "developer.chrome.com" OR data_source = "web.dev") AND update_time >= "2025-01-01T00:00:00Z"
gcloud
gcloud developer-knowledge documents search-chunks \ --query="service worker" \ --query-filter='(data_source = "developer.chrome.com" OR data_source = "web.dev") AND update_time >= "2025-01-01T00:00:00Z"'
REST
curl -G "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks" \ --data-urlencode "query=service worker" \ --data-urlencode 'filter=(data_source = "developer.chrome.com" OR data_source = "web.dev") AND update_time >= "2025-01-01T00:00:00Z"' \ --data-urlencode "key=$DEVELOPERKNOWLEDGE_API_KEY"
데이터 소스 제외
NOT 또는 !=를 사용하여 특정 소스의 결과를 제외합니다.
data_source != "firebase.google.com"
gcloud
gcloud developer-knowledge documents search-chunks \ --query="authentication" \ --query-filter='data_source != "firebase.google.com"'
REST
curl -G "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks" \ --data-urlencode "query=authentication" \ --data-urlencode 'filter=data_source != "firebase.google.com"' \ --data-urlencode "key=$DEVELOPERKNOWLEDGE_API_KEY"
문서 가져오기
gcloud developer-knowledge documents describe 명령어 또는 documents.get REST 메서드를 사용하여 단일 문서의 전체 콘텐츠를 가져옵니다.
다음 예에서는 리소스 이름으로 문서를 가져옵니다.
gcloud
gcloud developer-knowledge documents describe \ documents/docs.cloud.google.com/storage/docs/creating-buckets
REST
curl "https://developerknowledge.googleapis.com/v1/documents/docs.cloud.google.com/storage/docs/creating-buckets?key=$DEVELOPERKNOWLEDGE_API_KEY"
응답은 메타데이터와 content 필드의 전체 마크다운 콘텐츠가 포함된 Document 리소스입니다.
리소스 이름과 URI 비교
Developer Knowledge API에서 문서를 참조할 때는 리소스 이름과 웹 URI의 차이점을 참고하세요.
- 리소스 이름 (
parent,name):documents/{uri_without_scheme}형식으로 지정됩니다 (예:documents/docs.cloud.google.com/storage/docs/creating-buckets). 이 값을gcloud developer-knowledge documents describe의 위치 인수,GetDocument의 경로 매개변수 또는BatchGetDocuments의names매개변수로 전달합니다. - 웹 URI (
uri): 스키마를 포함한 전체 웹 URL (예:https://docs.cloud.google.com/storage/docs/creating-buckets).--query-filter또는filter표현식 (예:uri = "https://docs.cloud.google.com/storage/docs/creating-buckets")을 구성할 때uri필드에 이 형식을 사용합니다.
BatchGetDocuments로 여러 문서 가져오기
documents.batchGet 메서드를 사용하여 단일 API 호출에서 이름으로 최대 20개의 문서를 검색합니다. 이는 GetDocument 요청을 여러 번 수행하는 것보다 효율적입니다.
다음 예에서는 이름으로 두 문서를 가져옵니다.
curl "https://developerknowledge.googleapis.com/v1/documents:batchGet?names=documents/docs.cloud.google.com/storage/docs/creating-buckets&names=documents/firebase.google.com/docs/firestore/quickstart&key=$DEVELOPERKNOWLEDGE_API_KEY"
응답에는 요청한 순서대로 요청된 Document 리소스 목록이 포함됩니다.
응답 페이로드 최적화
마크다운 형식의 문서 콘텐츠는 클 수 있습니다. 애플리케이션에 메타데이터 (예: 페이지 제목, URI, 타임스탬프) 또는 특정 필드만 필요한 경우 페이로드 크기를 최적화하여 대역폭과 지연 시간을 줄일 수 있습니다.
문서 뷰 사용
gcloud CLI의 --view 플래그 또는 REST 요청의 view 매개변수는 Document 메시지에 채워지는 필드를 제어합니다.
--view 플래그와 DocumentView 열거형은 다음 값을 지원합니다.
--view=basic(gcloud CLI) 또는DOCUMENT_VIEW_BASIC: 기본 메타데이터 필드 (name,uri,dataSource,title,description,updateTime,view)만 반환합니다.content필드는 생략됩니다.--view=content(gcloud CLI) 또는DOCUMENT_VIEW_CONTENT: 마크다운content필드와 함께 메타데이터 필드를 반환합니다.gcloud developer-knowledge documents describe,GetDocument,BatchGetDocuments의 기본값입니다.--view=full(gcloud CLI) 또는DOCUMENT_VIEW_FULL: 모든 문서 필드를 반환합니다.
대규모 마크다운 콘텐츠를 다운로드하지 않고 문서 메타데이터만 가져오려면 기본 문서 보기를 지정하세요.
gcloud
gcloud developer-knowledge documents describe \ documents/docs.cloud.google.com/storage/docs/creating-buckets \ --view=basic
REST
curl "https://developerknowledge.googleapis.com/v1/documents/docs.cloud.google.com/storage/docs/creating-buckets?view=DOCUMENT_VIEW_BASIC&key=$DEVELOPERKNOWLEDGE_API_KEY"
BatchGetDocuments와 함께 view=DOCUMENT_VIEW_BASIC을 사용할 수도 있습니다.
curl "https://developerknowledge.googleapis.com/v1/documents:batchGet?names=documents/docs.cloud.google.com/storage/docs/creating-buckets&names=documents/firebase.google.com/docs/firestore/quickstart&view=DOCUMENT_VIEW_BASIC&key=$DEVELOPERKNOWLEDGE_API_KEY"
필드 마스크 사용
응답 페이로드를 특정 필드로 추가 제한하려면 표준 Google API fields 쿼리 매개변수(필드 마스크)를 사용하세요.
GetDocument에서 필드 필터링
문서의 title, uri, updateTime 필드만 가져오려면 다음을 실행하세요.
curl "https://developerknowledge.googleapis.com/v1/documents/docs.cloud.google.com/storage/docs/creating-buckets?fields=title,uri,updateTime&key=$DEVELOPERKNOWLEDGE_API_KEY"
BatchGetDocuments에서 필드 필터링
일괄 처리의 각 문서에 대해 특정 필드만 검색하려면 다음을 실행하세요.
curl "https://developerknowledge.googleapis.com/v1/documents:batchGet?names=documents/docs.cloud.google.com/storage/docs/creating-buckets&fields=documents(name,title,uri)&key=$DEVELOPERKNOWLEDGE_API_KEY"
SearchDocumentChunks에서 필드 필터링
청크 id 및 content, 상위 문서 title 및 uri, 검색의 nextPageToken만 반환하려면 다음을 실행하세요.
curl "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks?query=BigQuery&fields=results(id,content,document(title,uri)),nextPageToken&key=$DEVELOPERKNOWLEDGE_API_KEY"
오류 처리
Developer Knowledge API는 표준 HTTP 상태 코드를 반환합니다. 다음 기능 예에서는 Developer Knowledge API의 HTTP 상태 코드와 원인을 매핑합니다.
400 INVALID_ARGUMENT:filter표현식 문자열이 500자를 초과합니다.update_time타임스탬프가 유효하지 않습니다 (RFC 3339 형식을 사용해야 함).BatchGetDocuments요청에 20개가 넘는 문서 이름이 제공되었습니다.
401 UNAUTHENTICATED: 요청에 API 키가 누락되었거나 잘못된 키를 사용합니다. 인증을 참고하세요.404 NOT_FOUND: 요청된 문서 이름이 존재하지 않거나 코퍼스에 포함되지 않은 도메인에 속합니다.429 RESOURCE_EXHAUSTED: 프로젝트가 할당량을 초과했습니다. 할당량 및 한도를 참고하세요.
다음 단계
- 문서에서 답변 생성하기를 참고하세요.
- 개발자 지식 MCP 서버에 연결하고
retrieving-developer-knowledge에이전트 스킬을 설치하여 AI 코딩 지원이 공식 문서를 검색하고 읽을 수 있도록 지원합니다. - Python, Node.js, Go, Java에서 클라이언트 라이브러리를 사용하는 방법을 알아봅니다.
- gcloud CLI를 사용하는 방법을 알아봅니다.
- 코퍼스 참조를 탐색하여 지원되는 모든 문서 소스를 확인하세요.
- 전체 메서드 사양은 REST API 참조를 검토하세요.
- API 비율 제한 및 할당량의 할당량 및 한도를 확인합니다.