AI

Bright Data SDK를 활용한 Flyte의 SEO 분석 AI 워크플로우

AI 워크플로우에서 Bright Data SDK를 활용해 실시간 웹 데이터를 통합함으로써 Flyte에서 SEO 분석을 자동화하는 방법을 알아보세요.
4 분 읽기
Flyte × Bright Data MCP

이 튜토리얼에서는 다음을 배울 수 있습니다:

  1. Flyte가 무엇이며 AI, 데이터, 머신러닝 워크플로우에 있어 특별한 점은 무엇인지.
  2. 웹 데이터를 통합할 때 Flyte 워크플로가 더욱 강력해지는 이유.
  3. SEO 분석을 위한 AI 기반 워크플로우 구축을 위해 Flyte와 Bright Data SDK를 통합하는 방법.

시작해 보겠습니다!

Flyte란 무엇인가요?

Flyte는 현대적인 오픈소스 워크플로우 오케스트레이션 플랫폼으로, 생산 환경 수준의 AI, 데이터 및 머신러닝 파이프라인 구축을 지원합니다. 주요 강점은 팀과 기술 스택을 통합하여 데이터 과학자, ML 엔지니어, 개발자 간의 협업을 촉진하는 데 있습니다.

Kubernetes 기반으로 구축된 Flyte는 확장성, 재현성 및 분산 처리를 위해 설계되었습니다. Python SDK를 통해 워크플로를 정의한 후 클라우드 또는 온프레미스 환경에 배포하여 효율적인 리소스 활용과 간소화된 워크플로 관리의 문을 열 수 있습니다.

본문 작성 시점 기준, Flyte GitHub 저장소는 6,500개 이상의 스타를 자랑합니다!

핵심 기능

Flyte가 지원하는 주요 기능은 다음과 같습니다:

  • 강력한 타입 인터페이스: 각 단계에서 데이터 타입을 정의하여 정확성을 보장하고 데이터 가드레일을 적용합니다.
  • 불변성: 워크플로 상태 변경을 방지하여 재현성을 보장하는 불변 실행.
  • 데이터 계보: 전체 워크플로 라이프사이클에 걸쳐 데이터의 이동 및 변환을 추적합니다.
  • 맵 작업 및 병렬 처리: 최소한의 구성으로 작업을 효율적으로 병렬 실행합니다.
  • 세분화된 재실행 및 장애 복구: 이전 워크플로 상태를 변경하지 않고 실패한 작업만 재시도하거나 특정 작업을 재실행합니다.
  • 캐싱: 반복 실행을 최적화하기 위해 작업 출력을 캐시합니다.
  • 동적 워크플로우 및 분기: 요구 사항에 따라 진화하고 선택적으로 분기를 실행하는 적응형 워크플로우를 구축합니다.
  • 언어 유연성: Python, Java, Scala, JavaScript SDK 또는 모든 언어의 원시 컨테이너를 사용하여 워크플로를 개발합니다.
  • 클라우드 네이티브 배포: AWS, GCP, Azure 또는 기타 클라우드 공급자에 Flyte를 배포합니다.
  • 개발에서 프로덕션으로의 간편한 이동: 개발 또는 스테이징 환경에서 프로덕션 환경으로 워크플로를 손쉽게 이동합니다.
  • 외부 입력 처리: 필요한 입력이 준비될 때까지 실행을 일시 중지합니다.

모든 기능을 살펴보려면 공식 Flyte 문서를 참조하십시오.

AI 워크플로에 최신 웹 데이터가 필요한 이유

AI 워크플로의 성능은 처리하는 데이터의 품질에 달려 있습니다. 공개 데이터도 가치 있지만, 비즈니스 관점에서 진정한 차이를 만드는 것은 실시간 데이터 접근성입니다. 가장 방대하고 풍부한 데이터 소스는 무엇일까요? 바로 웹입니다!

실시간 웹 데이터를 AI 워크플로우에 통합하면 더 깊은 통찰력을 얻고 예측 정확도를 높이며 정보에 기반한 의사 결정을 내릴 수 있습니다. 예를 들어 SEO 분석, 시장 조사, 브랜드 감성 추적과 같은 작업은 모두 온라인에서 끊임없이 변화하는 최신 정보에 의존합니다.

문제는 최신 웹 데이터를 확보하는 것이 어렵다는 점입니다. 웹사이트마다 구조가 다르고, 각기 다른 스크래핑 접근법이 필요하며, 잦은 업데이트가 이루어집니다. 바로 여기에 Bright Data Python SDK 같은 솔루션이 필요합니다!

이 SDK를 사용하면 프로그래밍 방식으로 실시간 웹 콘텐츠를 검색, 스크래핑 및 상호작용할 수 있습니다. 더 구체적으로, 몇 가지 간단한 메서드 호출만으로 Bright Data 인프라의 가장 유용한 제품들에 접근할 수 있게 해줍니다. 이를 통해 웹 데이터 접근이 안정적이고 확장 가능해집니다.

Flyte와 Bright Data의 웹 기능을 결합하면 끊임없이 변화하는 웹 환경에 맞춰 최신 상태를 유지하는 자동화된 AI 워크플로를 구축할 수 있습니다. 다음 장에서 그 방법을 확인해 보세요!

Flyte와 Bright Data Python SDK로 SEO AI 워크플로우 구축하기

이 가이드 섹션에서는 Flyte에서 다음과 같은 AI 에이전트를 구축하는 방법을 배웁니다:

  1. 키워드(또는 핵심 구문)를 입력으로 받아 Bright Data SDK를 사용하여 웹에서 관련 결과를 검색합니다.
  2. Bright Data SDK를 활용하여 지정된 키워드에 대한 상위 3개 페이지를 스크래핑합니다.
  3. 검색 결과 페이지의 콘텐츠를 OpenAI에 전달하여 SEO 인사이트가 담긴 마크다운 보고서를 생성합니다.

다시 말해, Flyte와 Bright Data의 연동을 통해 SEO 분석을 위한 실제 AI 워크플로를 구축하게 됩니다. 이는 상위 노출 페이지들이 높은 순위를 유지하기 위해 활용하는 전략을 기반으로 실행 가능한 콘텐츠 관련 인사이트를 제공합니다.

시작해 봅시다!

필수 사항

이 튜토리얼을 따라하려면 다음이 설치되어 있어야 합니다:

Bright Data Python SDK 사용을 위한 계정 설정은 튜토리얼에서 안내해 드리므로 당장은 걱정하지 않으셔도 됩니다. 자세한 내용은 문서를 참고하세요.

공식 Flyte 설치 가이드에서는 uv를 통한 설치를 권장합니다. 따라서 uv를 전역으로 설치/업데이트하려면 다음 명령어를 실행하세요:

pip install -U uv

1단계: 프로젝트 설정

터미널을 열고 SEO 분석 AI 프로젝트용 새 디렉터리를 생성하세요:

mkdir flyte-seo-workflow

flyte-seo-workflow/ 폴더에는 Flyte 워크플로우용 Python 코드가 포함됩니다.

다음으로 프로젝트 디렉터리로 이동합니다:

cd flyte-seo-workflow

현재 Flyte는 Python 버전 3.9 이상, 3.13 미만 (권장 버전 3.12 ) 만 지원합니다.
Python 3.12용 가상 환경을 다음과 같이 설정하세요:

uvvenv --python 3.12

가상 환경을 활성화합니다. Linux 또는 macOS에서는 다음 명령을 실행하세요:

source .venv/bin/activate

Windows에서는 다음과 같이 실행합니다:

.venv/Scripts/activate

workflow.py라는 새 파일을 추가합니다. 이제 프로젝트에는 다음이 포함되어야 합니다:

flyte-seo-workflow/
├── .venv/
└── workflow.py

workflow.py는 메인 Python 파일을 나타냅니다.

가상 환경을 활성화한 상태에서 필요한 종속성을 설치하세요:

uv pip install flytekit brightdata-sdk openai

방금 설치한 라이브러리는 다음과 같습니다:

  • flytekit: Flyte 워크플로우 및 태스크 작성을 위한 라이브러리입니다.
  • brightdata-sdk: Python에서 Bright Data 솔루션에 접근할 수 있도록 지원합니다.
  • openai: OpenAI의 대규모 언어 모델(LLM)과 상호작용하기 위한 라이브러리입니다.

참고: Flyte는 공식 ChatGPT 커넥터(ChatGPTTask)를 제공하지만, 이는 구버전 OpenAI API에 의존합니다. 또한 엄격한 타임아웃 등 몇 가지 제한 사항이 있습니다. 이러한 이유로 일반적으로 커스텀 통합을 진행하는 것이 더 좋습니다.

선호하는 Python IDE에 프로젝트를 로드하세요. Python 확장 프로그램이 설치된 Visual Studio Code 또는 PyCharm Community Edition을 권장합니다.

완료! 이제 Flyte에서 AI 워크플로 개발을 위한 Python 환경이 준비되었습니다.

2단계: AI 워크플로 설계

코딩에 바로 착수하기 전에 한 걸음 물러서서 AI 워크플로가 수행해야 할 작업을 고려해 보는 것이 도움이 됩니다.

먼저, Flyte 워크플로는 다음으로 구성됨을 기억하세요:

  • 작업(Tasks): @task 어노테이션으로 표시된 함수입니다. 이는 Flyte에서 컴퓨팅의 기본 단위입니다. 작업은 독립적으로 실행 가능하며, 강력한 타입 지정과 컨테이너화된 빌딩 블록으로 워크플로를 구성합니다.
  • 워크플로우: @workflow로 표시되며, 태스크를 연결하여 구성됩니다. 한 태스크의 출력이 다음 태스크의 입력으로 전달되어 유향 비순환 그래프(DAG)를 형성합니다.

이 경우 다음 세 가지 간단한 태스크로 목표를 달성할 수 있습니다:

  1. get_seo_urls: 입력 키워드 또는 핵심 구문을 받아 Bright Data SDK를 사용하여 결과 Google SERP(검색 엔진 결과 페이지)에서 상위 3개 URL을 검색합니다.
  2. get_content_pages: URL을 입력으로 받아 Bright Data SDK를 사용하여 페이지를 스크래핑하고,AI 처리에 이상적인 Markdown 형식으로 콘텐츠를 반환합니다.
  3. generate_seo_report: 페이지 콘텐츠 목록을 받아 프롬프트에 전달하여, 일반적인 접근 방식, 주요 통계(단어 수, 단락 수, H1, H2 등) 및 기타 관련 지표와 같은 SEO 인사이트를 포함하는 마크다운 보고서를 생성하도록 요청합니다.

flytekit에서 Flyte 태스크와 워크플로를 임포트하여 구현 준비:

from flytekit import task, workflow

훌륭합니다! 이제 실제 워크플로를 구현하기만 하면 됩니다.

단계 #3: API 키 관리

작업 구현 전에 OpenAI 및 Bright Data 통합을 위한 API 키 관리를 처리해야 합니다.

Flyte에는 API 키 및 인증 정보와 같은 스크립트 내 비밀 정보를 안전하게 처리할 수 있는 전용 비밀 관리 시스템이 제공됩니다. 프로덕션 환경에서는 Flyte의 비밀 관리 시스템에 의존하는 것이 모범 사례이며 적극 권장됩니다.

이 튜토리얼에서는 간단한 스크립트를 다루므로 코드에 API 키를 직접 설정하여 간소화할 수 있습니다:

import os

os.environ["OPENAI_API_KEY"] = "<YOUR_OPENAI_API_KEY>"
os.environ["BRIGHTDATA_API_TOKEN"] = "<YOUR_BRIGHTDATA_API_TOKEN>"

자리 표시자를 실제 API 키 값으로 대체하세요:

관리자 권한이 부여된 Bright Data API 키를 사용하는 것이 권장됨을 유의하십시오. 이를 통해 Bright Data Python SDK가 클라이언트 초기화 시 자동으로 계정에 연결하고 필요한 제품을 설정할 수 있습니다.

즉, 관리자 API 키가 포함된 Bright Data Python SDK는 계정에 필요한 모든 설정을 자동으로 완료합니다.

기억하세요: 프로덕션 스크립트에 비밀 키를 하드코딩하지 마십시오! 항상 Flyte의 비밀 관리자를 사용하십시오.

4단계: get_seo_urls 태스크 구현

문자열로 키워드를 받아들이는 get_seo_urls() 함수를 정의하고, @task 어노테이션을 추가하여 유효한 Flyte 태스크로 만드세요. 함수 내부에서 Bright Data Python SDK의search() 메서드를 사용하여 웹 검색을 수행하세요.

배경에서 search()는 Bright Data SERP API를 호출하며, 이 API는 다음과 같은 형식의 JSON 문자열로 검색 결과를 반환합니다:

The parsed SERP results from the SERP API

문서에서 JSON 출력 기능에 대해 자세히 알아보세요.

JSON 문자열을 사전(dictionary)으로 파싱하고 지정된 수의 SEO URL을 추출합니다. 이 URL들은 입력 키워드로 Google에서 검색했을 때 일반적으로 상위 X개 결과에 해당합니다.

다음과 같이 작업을 구현하세요:

@task()
def get_seo_urls(kw: str, num_links: int = 3) -> List[str]:
    import json
    # Bright Data SDK 클라이언트 초기화
    from brightdata import bdclient
    bright_data_client = bdclient()

    # 지정된 키워드의 Google SERP를 파싱된 JSON 문자열로 가져옴
    res = bright_data_client.search(kw, response_format="json", parse=True)
    json_response = res["body"]
    data = json.loads(json_response)

    # SERP에서 상위 "num_links"개 SEO 페이지 URL 추출
    seo_urls = [item["link"] for item in data["organic"][:num_links]]

    return seo_urls

타입 지정(typing)을 위한 필수 임포트 기억하기:

from typing import List

참고: Bright Data Python SDK 클라이언트를 전역이 아닌 태스크 내부에서 임포트하는 이유가 궁금할 수 있습니다. 이는 의도된 것으로, Flyte 태스크는 독립적으로 실행 가능해야 하기 때문입니다. 즉, 각 태스크는 전역 종속성에 의존하지 않고 자체적으로 실행하는 데 필요한 모든 것을 포함해야 합니다.

5단계: get_content_pages 태스크 구현

이제 SEO URL을 가져왔으므로 Bright Data Python SDK의scrape() 메서드에 전달할 수 있습니다. 이 메서드는 모든 페이지를 병렬로 스크래핑하여 콘텐츠를 반환합니다. 출력을 마크다운 형식으로 받으려면 data_format="markdown" 인수를 설정하기만 하면 됩니다:

@task()
def get_content_pages(page_urls:List[str]) -> List[str]:
    # Bright Data SDK 클라이언트 초기화
    from brightdata import bdclient
    bright_data_client = bdclient()

    # 각 페이지에서 마크다운 콘텐츠 가져오기
    page_content_list = bright_data_client.scrape(page_urls, data_format="markdown")

    return page_content_list

page_content_list는 문자열 목록이 되며, 각 문자열은 해당 입력 페이지의 마크다운 표현입니다.

스크랩()은 내부적으로 Bright Data Web Unlocker API를 호출합니다. 이 API는 봇 방지 기능과 상관없이 모든 웹 페이지에 접근할 수 있는 범용 스크래핑 API입니다.

이전 작업에서 어떤 URL을 얻었든, get_content_pages()는 해당 콘텐츠를 성공적으로 가져와 원시 HTML에서 최적화되고 AI 활용이 가능한 마크다운으로 변환합니다.

6단계: generate_seo_report 작업 구현

스크랩된 페이지 콘텐츠를 기반으로 SEO 보고서를 생성하기 위해 적절한 프롬프트와 함께 OpenAI API를 호출하세요:

def generate_seo_report(page_content_list: List[str]) -> str:
    # OpenAI API 호출을 위한 클라이언트 초기화
    from openai import OpenAI
    openai_client = OpenAI()

    # 원하는 SEO 보고서 생성을 위한 프롬프트
    prompt = f"""
    # 아래 몇 개의 웹 페이지 콘텐츠를 바탕으로,
    # 각 페이지 콘텐츠 분석을 통해 얻은 SEO 인사이트를 포함한 마크다운 형식의 구조화된 보고서를 생성하십시오.

    # 보고서는 다음을 포함해야 합니다:
    # - 모든 페이지에 공통적으로 나타나는 주제 및 요소
    # - 페이지 간 주요 차이점
    # - 단어 수, 단락 수, H2 및 H3 헤딩 개수 등의 통계를 포함한 요약 표

    # 콘텐츠:
    # {"nnPAGE:".join(page_content_list)}
    # """

    # 선택한 AI 모델에 프롬프트 실행
    response = openai_client.responses.create(
        model="gpt-5-mini",
        input=prompt,
    )

    return response.output_text

이 작업의 출력은 원하는 SEO 마크다운 보고서입니다.

참고: 위에서 사용한 OpenAI 모델은 GPT-5-mini였으나, 다른 OpenAI 모델로 대체할 수 있습니다. 마찬가지로 OpenAI 통합 자체를 완전히 교체하고 다른 LLM 제공업체를 사용할 수도 있습니다.

훌륭합니다! 태스크 준비가 완료되었으며, 이제 Flyte AI 워크플로에서 이를 결합할 차례입니다.

7단계: AI 워크플로 정의

작업들을 순차적으로 조정하는 @workflow 함수를 생성합니다:

@workflow
def seo_ai_workflow() -> str:
    input_kw = "best llms"
    seo_urls = get_seo_urls(input_kw)
    page_content_list = get_content_pages(seo_urls)
    report = generate_seo_report(page_content_list)

    return report

이 워크플로우에서:

  1. get_seo_urls 작업은 “best llms” 키워드에 대한 상위 3개 SEO URL을 가져옵니다.
  2. get_content_pages 작업은 해당 URL의 콘텐츠를 스크래핑하여 마크다운 형식으로 변환합니다.
  3. generate_seo_report 작업은 해당 마크다운 콘텐츠를 받아 마크다운 형식의 최종 SEO 인사이트 보고서를 생성합니다.

미션 완료!

8단계: 모든 것을 통합하기

최종 workflow.py 파일에는 다음이 포함되어야 합니다:

from flytekit import task, workflow
import os
from typing import List

# 필요한 시크릿 설정 (API 키로 대체)
os.environ["OPENAI_API_KEY"] = "<YOUR_OPENAI_API_KEY>"
os.environ["BRIGHTDATA_API_TOKEN"] = "<YOUR_BRIGHTDATA_API_TOKEN>"

@task()
def get_seo_urls(kw: str, num_links: int = 3) -> List[str]:
    import json
    # Bright Data SDK 클라이언트 초기화
    from brightdata import bdclient
    bright_data_client = bdclient()

    # 지정된 키워드에 대한 Google SERP를 파싱된 JSON 문자열로 가져옴
    res = bright_data_client.search(kw, response_format="json", parse=True)
    # JSON 문자열을 파싱하여 사전으로 변환
    json_response = res["body"]
    data = json.loads(json_response)

    # SERP에서 상위 "num_links"개 SEO 페이지 URL 추출
    seo_urls = [item["link"] for item in data["organic"][:num_links]]

    return seo_urls

@task()
def get_content_pages(page_urls: List[str]) -> List[str]:
    # Bright Data SDK 클라이언트 초기화
    from brightdata import bdclient
    bright_data_client = bdclient()

    # 각 페이지의 마크다운 콘텐츠 가져오기
    page_content_list = bright_data_client.scrape(page_urls, data_format="markdown")

    return page_content_list

@task
def generate_seo_report(page_content_list: List[str]) -> str:
    # OpenAI API 호출을 위한 OpenAI 클라이언트 초기화
    from openai import OpenAI
    openai_client = OpenAI()

    # 원하는 SEO 보고서 생성을 위한 프롬프트
    prompt = f"""
    # 아래 몇 개의 웹 페이지 콘텐츠를 바탕으로,
    # 각 페이지 콘텐츠 분석을 통해 얻은 SEO 인사이트를 포함한 마크다운 형식의 구조화된 보고서를 생성하십시오.

    # 보고서는 다음을 포함해야 합니다:
    # - 모든 페이지에 공통적으로 나타나는 주제 및 요소
    # - 페이지 간 주요 차이점
    # - 단어 수, 단락 수, H2 및 H3 헤딩 개수 등의 통계를 포함한 요약 표

    # 콘텐츠:
    # {"nnPAGE:".join(page_content_list)}
    # """

    # 선택한 AI 모델에서 프롬프트 실행
    response = openai_client.responses.create(
        model="gpt-5-mini",
        input=prompt,
    )

    return response.output_text

@workflow
def seo_ai_workflow() -> str:
    input_kw = "best llms" # SEO 분석 목표에 맞게 변경
    seo_urls = get_seo_urls(input_kw)
    page_content_list = get_content_pages(seo_urls)
    report = generate_seo_report(page_content_list)

    return report

if __name__ == "__main__":
    seo_ai_workflow()

와! 80줄도 안 되는 파이썬 코드로 완전한 SEO AI 워크플로를 구축했습니다. Flyte와 Bright Data SDK 없이는 불가능했을 것입니다.

CLI에서 워크플로를 실행하려면 다음을 사용하세요:

pyflyte run workflow.py seo_ai_workflow

이 명령어는 workflow.py 파일에서 seo_ai_workflow @workflow 함수를 실행합니다.

참고: 웹 검색, 스크래핑, AI 처리 모두 시간이 소요되므로 결과가 표시되기까지 다소 시간이 걸릴 수 있습니다.

워크플로가 완료되면 다음과 유사한 마크다운 출력을 얻을 수 있습니다:

The Markdown output in the console

이 Markdown 출력을 어떤 Markdown 뷰어에 붙여넣어 스크롤하며 살펴보세요. 아래와 유사하게 표시될 것입니다:

The produced Markdown SEO report

이 출력에는 OpenAI에 요청한 대로 여러 SEO 인사이트와 요약 테이블이 포함되어 있습니다. 이는 Flyte와 Bright Data 통합의 강력한 기능을 보여주는 간단한 예시일 뿐입니다!

자, 이제 완성되었습니다! 다른 작업을 정의하고 다양한 LLM을 활용하여 유용한 에이전트형 및 AI 워크플로 사용 사례를 구현해 보세요.

다음 단계

여기서 제공된 Flyte AI 워크플로 구현은 예시일 뿐입니다. 실제 운영 환경에 적용하거나 제대로 구현하려면 다음 단계를 수행하세요:

  • Flyte가 지원하는 시크릿 관리 시스템 통합: 코드에 API 키를 하드코딩하지 마십시오. Flyte 태스크 시크릿 또는 기타 지원 시스템을 사용하여 자격 증명을 안전하고 우아하게 처리하십시오.
  • 프롬프트 처리: 작업 내부에서 프롬프트를 생성하는 것도 가능하지만, 재현성을 위해 프롬프트 버전을 관리하거나 외부 저장소를 활용하는 것을 고려하세요.
  • 워크플로 배포: 공식 지침에 따라 워크플로를 도커화하고 Flyte 기능을 활용하여 배포 준비를 완료하십시오.

결론

이 블로그 글에서는 Flyte 내에서 Bright Data의 웹 검색 및 스크래핑 기능을 활용하여 AI 기반 SEO 분석 워크플로를 구축하는 방법을 알아보았습니다. Bright Data SDK는 간단한 메서드 호출을 통해 Bright Data 제품에 쉽게 접근할 수 있도록 하여 구현 과정을 단순화했습니다.

보다 정교한 워크플로를 구축하려면 실시간 웹 데이터 수집, 검증 및 변환을 위한 Bright Data AI 인프라의 전체 솔루션 제품군을 살펴보세요.

Bright Data 계정을 무료로 가입하고 AI 지원 웹 데이터 솔루션으로 실험을 시작해 보세요!