본문 바로가기
n8n, Automation Tool/n8n Project

Sense Stock, D+3

by 그때 그때 끄적 2025. 6. 3.
반응형

📅 Sense Stock 개발 일지 (2025-06-03)

n8n 기반 뉴스 요약 자동화 시스템 Sense Stock 구축 중 진행한 작업들을 정리합니다.
오늘은 주로 프롬프트 고도화, Firecrawl Extract 적용, 기존 출력 Output 값 활용 등을 다뤘습니다.

 

🔧 사용 도구

도구 역할
🔷 n8n 전체 워크플로우 자동화 도구
🔷 Firecrawl.dev 사이트 內 기사 검색 + URL 수집 API (Firecrawl MCP Sever)
🔷 ChatGPT 키워드 정제 및 후속 분석
  • 오늘의 목표
    • Firecrawl Search 노드를 통해 Yahoo Finance 뉴스 기사 정확하게 수집
    • 검색 쿼리 최적화로 비뉴스 URL 제거 및 정확도 향상
    • 크롤링 실패 시 대응 로직 점검 및 Firecrawl Extract 활용 방안 검토
    • AI Agent 프롬프트 구조 고도화, 토큰 최적화 전략 마련
  • 진행 내용
    • Firecrawl Search 노드 설정에서 limit: 1로 제한하여 단일 기사만 수집
    • 초반 쿼리(site:finance.yahoo.com)는 뉴스기사가 아닌 URL까지 포함되어 정확도 낮음
    • inurl:news 연산자를 추가해 뉴스 기사만 타겟팅 → 요약 적합 기사 URL 추출 성공
    • 크롤링 실패 케이스 다수 확인
      • 유료 기사의 경우 Crawling 실패(Error 500)
      • "No content available", 본문 내용은 없는데 Success => Data가 그대로 넘어감
        Firecrawl Extract 기능 활용으로 대체 (구조화 데이터 추출 가능)
    • AI Agent 프롬프트 최적화 작업 착수
      • 출력 예시가 많을수록 토큰 비용 및 레이턴시 증가 → 선택적 간소화 전략 적용
      • 이전 노드의 Output 값을 직접 참조 가능
        → 예: 항목 10, 11번은 별도 입력 없이 전 노드 출력 활용하여 프롬프트 구성 가능

 

 

Step 1. Scraping 대상은 우선 1개 기사로 제한

Firecrawl Search 설정

  • limit: 1로 기사 1개만 가져오도록 제한
  • 초기 query:
{ "query": "{{ $json.best_keyword }} site:finance.yahoo.com" }

→ 비뉴스 URL까지 포함되어 정확도가 낮음

 

검색 쿼리 개선 (Query Operators 적용)

  • 수정 쿼리:
{ "query": "{{ $json.best_keyword }} site:finance.yahoo.com inurl:news" }
  • 효과: 뉴스 기사만 타겟팅하여 요약에 적합한 페이지 추출 가능

https://cord-ai.tistory.com/218

 

🔥 Firecrawl 완전정복: 웹 자동화 & AI 추출 도구 정리

웹페이지 크롤링, 콘텐츠 추출, 구조화 데이터 분석까지Firecrawl 하나로 끝내는 웹 자동화 도구 가이드🔧 Firecrawl란?Firecrawl은 웹 데이터를 효율적으로 수집하고 가공하는 데 특화된 AI 기반 도구

cord-ai.tistory.com

 

⚠️Step 2. 크롤링 실패 대응

❌ Error 500, Timeout, No content available

  • 유료 기사 혹은 Yahoo의 JS 렌더링 방식으로 인해 크롤링이 실패
  • .html로 끝나는 URL의 경우 차단 비율 높음
  • 본문이 있음에도 Firecrawl이 "No content available"로 인식하는 경우 발생

대처 방식

Firecrawl Extract 기능 사용

  • structured data 추출 가능
  • 필요 시 Prompt → Schema 구조화 가능

 

Step 3. AI Agent 프롬프트 고도화

❓ 프롬프트가 길면 사용량이 많아질까?

    • 예시 출력이 많아지면 토큰 사용량 증가 → 비용, 레이턴시 고려 필요
    • 형식이 정해진 경우에는 ‘예시 출력’을 사용하고, 이외에 디테일이 필요하면 생략하는 편이 효율적

🔁 이전 노드 Output 활용 가능 여부

  • 전 노드에서 출력한 output은 그대로 참조 가능
  • 아래 항목별 지침 정리에서 10, 11번 항목의 경우에는 이전 Output 값 활용
더보기
항목별 지침 정리

 

번호 항목명  설명
1 headline 한 줄 요약 제목
2 summary 사건 개요 → 주요 변화 → 전망
3 sentiment 긍정 / 부정 / 중립
4 score 긍정도 점수 (0~100)
5 sentiment_reason 판단의 핵심 근거 문장
6 issue_type 정책 / 기업행동 / 기술진보 / 사건사고 등
7 trigger 이슈 핵심 발표 문장
8 related_companies 수혜 종목 (이름, 티커, 수혜 이유)
9 strategy 단기 진입 / 장기 보유 / 주의 등
10 market_reaction 시장 반응과 기대 해석(이전 Output 값 활용)
11 keywords 핵심 키워드 3~5개 (이전 Output 값 활용)
12 country 주요 국가
13 date_range 기사 날짜 범위

 

오늘의 정리

항목 내용
크롤링 제한 Yahoo .html URL 자주 실패, waitFor 늘려도 한계
실패 대응 Function → isError 처리 → 제외(미구현, 명일 진행)
AI 요약 구조 고정 JSON 형식 + 예시 기반 프롬프트
보완 포인트 Firecrawl Extract 기능 활용 = 크롤링 제한 없이 가져옴(현재까지는...)

지금까지의 진행 요약

현재까지 전체 흐름은 다음과 같다:

  1. 사용자 요청 입력
  2. 요청 텍스트에서 핵심 이슈 및 Best Keyword 추출
    • (이슈 정보는 최종 Output에 참조 형태로 포함)
  3. Best Keyword 기반으로 관련 기사 URL 수집
    → Firecrawl MCP 활용
  4. 여러 기사 요약 시 Loop Over Items (Split in Batches) 활용
  5. 요약 결과 Slack 등 외부 채널로 전달

🧱 Workflow 구조

사용자 요청 
↓ 
Best Keyword 추출 (GPT) 
↓ 
Yahoo Finance 검색 → 기사 URL 리스트 생성 
↓ 
각 URL 순회하며 요약 (Split In Batches + OpenAI) 
↓ 
기사 요약 결과 병합 
↓ 

## [미구현] 최종 통합 요약 & 전략 분석

 


❓ 다음 단계에서 고민 중인 점들

  1. 프롬프트 길이에 따른 비용 및 레이턴시
    • 기사 수가 늘어나면 GPT 호출 비용 및 응답 시간 증가 가능
    • 프롬프트 최적화 필요
  2. 기사 수 제한 및 크롤링 실패 대응 로직
    • 기본 기사 수는 5개
    • 일부 기사 크롤링 실패(또는 본문 내용이 없는 경우) 시 해당 항목은 자동 제외 처리 필요
    • 현재 Split in Batches로 루프 후 Done에서 합쳐지므로
      → 실패 항목 필터링 로직이 추가로 필요함
  3. 답변 러닝타임 알림 기능
    • 사용자가 기다리는 동안 상태 피드백 필요
    • Slack 등에서 "요약 중입니다…" 메시지 → 완료 후 결과 전달
반응형

'n8n, Automation Tool > n8n Project' 카테고리의 다른 글

Sense Stock, D+5  (4) 2025.06.06
Sense Stock, D+4  (4) 2025.06.04
Sense Stock, D+2  (2) 2025.06.02
Sense Stock, D+1  (0) 2025.05.29
Sense Stock, 기획 - Ver.1  (2) 2025.05.28

댓글