소개
건설 분야 취업을 준비하면서, 퇴근 후엔 자격증·어학 공부로 바빠 업계 동향을 따로 챙길 시간이 없었어요. 그래서 매일 아침 대형 건설사 20곳(도급순위 기준)의 수주·동향 뉴스를 AI가 요약해서 텔레그램으로 보내주는 봇을 4주 로드맵으로 만들고 있습니다.
오늘 목표는 그중 "AI 요약 연결" 단계였어요 — 그동안 모아둔 뉴스 기사 제목을, Gemini API를 이용해서 "건설업 취준생이 왜 눈여겨봐야 하는지" 관점으로 한 줄 요약하는 것까지 해보고 싶었습니다.
진행 방법
사용한 도구: Google Apps Script(무료 자동화 스크립트), Google 뉴스 RSS 검색, Google 시트(중복 기사 기록용), Gemini API(요약)
시작하자마자 두 가지 벽에 부딪혔어요.
1) 실행 시간 초과 — 건설사 20곳을 한 곳씩 순서대로 요청하다 보니, Apps Script 무료 실행 한도(6분)를 넘겨버렸습니다. 우선 도급순위 10위까지로 줄여서 해결했어요.
const COMPANIES = [ '삼성물산', '현대건설', 'GS건설', '현대엔지니어링', '대우건설',
'DL이앤씨', '롯데건설', '포스코이앤씨', 'SK에코플랜트', '현대산업개발',
];
2) Gemini API 키 발급 막힘 — 며칠째 "Failed to create project, The request is suspicious" 에러로 막혀있었는데, 광고 차단기 끄기·브라우저 변경·쿠키 초기화를 시도한 끝에 키를 받았습니다. 발급받은 키는 코드에 직접 적지 않고, Apps Script의 "스크립트 속성"(Project Settings → Script Properties)에 저장해서 코드가 공개돼도 키는 노출되지 않게 했어요.
📷 여기에 "API 키 세부정보" 화면 캡처를 넣으면 좋아요.
두 벽을 넘고, 아래 프롬프트로 Gemini API에 기사 제목을 보내 요약을 받는 함수를 만들었습니다.
당신은 건설업 취업 준비생에게 뉴스를 요약해주는 비서입니다.아래 뉴스 제목을 보고, 건설업 취준생이 왜 눈여겨봐야 하는지
핵심만 한국어 한 문장으로 요약하세요.
다른 설명 없이 요약 문장 하나만 출력하세요.
건설사: {회사명}
뉴스 제목: {기사 제목}
function summarizeArticle_(company, title) { const props = PropertiesService.getScriptProperties();
const apiKey = props.getProperty('GEMINI_API_KEY');
const model = 'gemini-3.6-flash';
const url = https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey};
const prompt = ...(위 프롬프트, 회사명·제목만 바꿔 넣음);
const payload = { contents: [{ parts: [{ text: prompt }] }] };
const response = UrlFetchApp.fetch(url, {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload),
muteHttpExceptions: true,
});
const result = JSON.parse(response.getContentText());
return result.candidates[0].content.parts[0].text.trim();
}
현대건설 기사 3건으로 실제 테스트했고, 텔레그램으로 결과를 받아봤습니다.
📷 여기에 텔레그램으로 받은 요약 메시지 캡처를 넣으면 좋아요.
결과와 배운 점
결과: 단순히 제목을 줄인 게 아니라, "채용 가능성"·"지원 전략"까지 짚어주는 요약이 왔어요.
현대건설이 도시정비 수주 10조 원 달성을 앞두며 주택 및 정비사업 분야의 독보적인 경쟁력을 보여주고 있어, 해당 부문의 사업 지속성과 관련 직무의 채용 가능성을 가늠하는 데 중요한 지표입니다.
배운 점
Apps Script는 한 번 실행에 6분 시간 제한이 있다 — 여러 건을 순서대로 처리하는 코드는 건수가 늘수록 위험해진다. (급하면 범위를 줄이고, 여유 있으면 "동시 요청(병렬 처리)"으로 구조를 바꾸는 두 선택지가 있다)
API 키처럼 민감한 값은 코드에 직접 쓰지 않고 "스크립트 속성" 같은 별도 저장소에 넣으면, 코드를 공개 저장소에 올려도 안전하다.
Gemini API 키 형식도 예전에 흔히 알려진 것(
AIzaSy...)과 달라져서(AQ....), API는 계속 바뀐다는 걸 체감했다.
시행착오: 20개 건설사를 한 번에 처리하려다 시간 초과를 겪은 것, Gemini API 키가 며칠째 발급이 안 됐던 것.
도움이 필요한 부분: 지금은 도급순위 10위까지만 되고 있어요. 20위까지 확장하려면 여러 요청을 동시에 보내는 방식(병렬 요청)으로 바꿔야 하는데, 아직 안 해봤어요. 이 부분 경험 있으신 분 계시면 팁 주시면 감사하겠습니다!
앞으로의 계획: 다음은 이 요약들을 실제 텔레그램 브리핑 메시지(건설사별 섹션, 최신순)로 조립해서 전송하는 단계입니다. 그다음엔 웹 대시보드까지 만들 예정이에요.
마지막으로: 이번 스터디를 통해서 AI에 대한 두려움과 무서움이 없어진 것이 첫 번째였고, 제가 할 수 있다는 용기를 심어주었습니다. 비록 시간이 없어서 하나의 프로젝트를 완성하진 못했지만, 이 스터디가 끝나고도 저혼자서 달려보겠습니다. 화이팅!