반응형
📡 GPTs 과 GNews API 연동으로 실시간 뉴스
이전 글에서 실시간 뉴스를 서비스하기위해 NewsAPI와 Cloudflare를 이용하였습니다. 같은 주제이지만 이 글에서는 GNews API과 Google Apps Script(GAS)를 활용하여 활용여 실시간 뉴스 요약 시스템을 지원하는 GPTs를 만들어 보도록 하겠습니다. GNews API는 NewsAPI와는 다르게 한글 뉴스도 지원하는 특징을 가졌습니다.
✅ 구조 개요
사용자 (GPT 프롬프트)
↓
GPTs → GAS Webhook → GNews API 호출
↓
뉴스 JSON 응답 반환
🔧 구성 요소 요약
구성 요소 | 설명 |
---|---|
GPTs | 사용자에게 카테고리를 입력받아 GAS로 전달 |
GAS Web App | category를 받아 GNews API 호출 → 응답 구조화 후 반환 |
GNews API | 최신 뉴스 5개 반환 (JSON), 한글도 지원 |
1. 🔑 GNews API Key 준비
- https://gnews.io/register 접속
- 이메일로 가입 후 대시보드에서 API Key 확인 및 계정 활성화
- 무료 요금제: 일일 최대 100회 요청 가능
- API 예시:
https://gnews.io/api/v4/top-headlines?category=technology&lang=ko&token=YOUR_API_KEY
Sign up - GNews API
Sign up to get a free API key.
gnews.io
2. 🛠️ Google Apps Script 작성 및 배포
2-1. 스크립트 코드 작성 (GNews 전용)
function doPost(e) {
try {
Logger.log('Received request: ' + JSON.stringify(e));
if (!e || !e.postData || !e.postData.contents) {
throw new Error('요청 데이터가 없습니다.');
}
const categoryMap = {
"기술": "technology",
"비즈니스": "business",
"건강": "health",
"과학": "science",
"스포츠": "sports",
"엔터테인먼트": "entertainment",
"세계": "world",
"국내": "nation"
};
const apiKey = "bXXXXXXfd8"; // 하드코딩
const input = JSON.parse(e.postData.contents);
const inputCategory = input.category || '기술';
const category = categoryMap[inputCategory];
if (!category) {
return ContentService.createTextOutput(JSON.stringify({
articles: [],
error: '해당 분야의 뉴스가 없습니다.'
})).setMimeType(ContentService.MimeType.JSON);
}
const url = `https://gnews.io/api/v4/top-headlines?category=${category}&lang=ko&max=5&token=${apiKey}`;
Logger.log('Request URL: ' + url);
const response = UrlFetchApp.fetch(url);
const json = JSON.parse(response.getContentText());
const articles = (json.articles || []).map((a) => ({
title: a.title,
description: a.description,
source: a.source.name
}));
return ContentService.createTextOutput(JSON.stringify({ articles }))
.setMimeType(ContentService.MimeType.JSON);
} catch (err) {
Logger.log('Error: ' + err.message);
return ContentService.createTextOutput(JSON.stringify({
articles: [],
error: err.message
})).setMimeType(ContentService.MimeType.JSON);
}
}
2-2. API 키 등록 (보안용, 선택)
- 스크립트 편집기 >
파일 → 프로젝트 속성 → 스크립트 속성
- 이름:
GNEWS_API_KEY
, 값: GNews API 키 입력
2-3. Web App으로 배포
- 상단 메뉴 →
배포 → 새 배포
- 유형: 웹 앱 선택
- 실행 사용자: 나 자신 / 접근 권한: 익명 가능
- 배포 후 Webhook URL 복사
3. 🔗 GPTs Action 연결 스키마 예시
{
"openapi": "3.1.0",
"info": {
"title": "GNews 뉴스 요약 API",
"version": "1.0.0",
"description": "GPTs에서 뉴스 카테고리를 전달받아 Google Apps Script를 통해 GNews API로 최신 뉴스를 요약하여 반환합니다."
},
"servers": [
{
"url": "https://script.google.com/macros/s/USER__URL/exec"
}
],
"paths": {
"/": {
"post": {
"operationId": "fetchNewsGNews",
"summary": "카테고리별 GNews 최신 뉴스 조회",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "한글 뉴스 카테고리 (예: 기술, 건강, 스포츠, 비즈니스 등)"
}
},
"required": ["category"]
}
}
}
},
"responses": {
"200": {
"description": "요청된 카테고리에 대한 뉴스 요약 결과 (제목, 설명, 출처 포함)"
}
}
}
}
}
}
4. 🤖 GPT 프롬프트 예시 (System Message)
당신은 실시간 뉴스 요약 도우미입니다.
사용자가 한글로 입력한 분야(예: 기술, 스포츠 등)를 GNews API로 조회하여,
최신 뉴스 5건의 제목과 출처를 표 형태로 한글로 요약해 보여주세요.
- GNews API는 한글 뉴스도 지원하며, 무료 플랜이 있어 GPT 연동 실습에 매우 적합함
- GAS를 프록시로 사용하면 GPTs의 외부 API 호출 제한을 회피 가능
- 시스템 구축 후 GPTs에서 “기술”, “스포츠” 등 자연어로 입력만 해도 뉴스 요약을 받아볼 수 있음
같은 분야에서 여러가지의 API가 제공되고 있습니다.
News에서 NewsAPI와 GNews 기반으로도 뉴스 요약 시스템을 간단히 구축해 본 경험들을 바탕으로 앱을 구축하는 전반적인 흐름을 이해하고 다양한 아이디어로 앱을 개발할 수 있도록 하세요.
반응형
'AI > 생성형AI' 카테고리의 다른 글
[OAuth 발급]Google 인증을 위한 필수 과정 OAuth 발급 (3) | 2025.05.15 |
---|---|
[생성형 AI]프롬프트 연습 도구들(AIStudio, Playground) (2) | 2025.05.12 |
[GPT업무자동화](7)GPTs로 실시간 뉴스 보기(Cloudflare Workers) (0) | 2025.05.08 |
[GPT업무자동화](6)GPTs에 메일 외부 자원 연동하기(Webhook) (0) | 2025.05.07 |
[GPT업무자동화](5)GPTs에 메일 외부 자원 연동(OAuth) (1) | 2025.05.06 |