주요 콘텐츠로 건너뛰기
문서모듈내장 모듈

내장 모듈 라이브러리

플랫폼에 기본 포함된 120개 이상의 모듈 — sub_workflow로 직접 호출하거나 자신의 워크플로에 조합합니다.

Braidrun에는 120개 이상의 내장 모듈이 딸려 있습니다. 각 모듈은 캡슐화된 워크플로로, 타입이 지정된 입력 / 출력 계약을 가지며, 다른 워크플로가 sub_workflow 단계로 참조하되 내부 구현을 신경 쓸 필요가 없습니다.

내장 모듈은 읽기 전용입니다

내장 모듈은 플랫폼과 함께 배포되며, 서비스 시작 시 모듈 라이브러리에 자동으로 로드되고 귀하의 워크플로 쿼터를 소모하지 않습니다. 편집하거나 삭제할 수 없고, 플랫폼 업그레이드 시 자동으로 새 버전을 받습니다. 내부 로직을 수정하려면 「내 워크플로로 복제」로 편집 가능한 사본을 얻으십시오.

범용 도구(약 80개)

utility-module-* 접두사이며, 데이터 처리, HTTP 요청, 검색 스크래핑, 텍스트 AI, 모니터링 체크 같은 업무와 무관한 범용 절차를 아우릅니다. 대표 모듈:

utility-module-http-request

범용 REST 클라이언트: GET / POST / PUT / DELETE / PATCH, query / body / headers와 basic / bearer / api-key 인증을 지원하며, 타임아웃과 지수 백오프 재시도가 내장되어 있고 상태 코드와 응답 본문을 반환합니다.

일반적인 입력:url, method
utility-module-json-transform

JSON 데이터에 대해 extract / filter / map / flatten / merge / pick / omit / sort 변환을 체인으로 실행합니다.

일반적인 입력:input_json / input_path, operations_json
utility-module-csv-processor

CSV를 읽어 filter / sort / select / groupby / dedupe 등 작업을 실행하며, 구분자를 자동 감지하고 CSV 또는 JSON을 출력합니다.

일반적인 입력:input_path, operations_json, output_format
utility-module-web-search

Web 검색: DuckDuckGo(key 불필요) 또는 Serper.dev로, 상위 N개 결과의 제목, 링크, 요약을 반환합니다.

일반적인 입력:query, provider, max_results
utility-module-text-summarizer

LLM 장문 요약으로, bullets / paragraph / tldr / headline 네 가지 스타일과 길이 상한을 지원합니다.

일반적인 입력:input_text / input_path
utility-module-sentiment-analyzer

LLM 감성 분석: 극성(positive / neutral / negative / mixed), 신뢰도, 감성을 이끄는 핵심 문구를 출력합니다.

일반적인 입력:text, language_hint

전달과 알림

워크플로 말단의 안정적인 알림 출구로, 대부분 순수 코드 단계로 구현되며 LLM에 의존하지 않아, 모델 자격 증명 누락으로 알림 경로가 실패하는 것을 방지합니다. 대표 모듈:

utility-module-slack-webhook

Slack Incoming Webhook으로 메시지 전송: 순수 텍스트 또는 Blocks 리치 텍스트로, 표시명과 아이콘을 커스터마이즈할 수 있습니다.

일반적인 입력:webhook_url, text / blocks_json
utility-module-dingtalk-webhook

딩톡 그룹 봇: text / markdown / link 세 가지 메시지로, secret을 전달하면 HMAC-SHA256 서명을 자동으로 계산합니다.

utility-module-email-sender

SMTP 이메일 전송: HTML 본문, 첨부, CC / BCC로, STARTTLS와 SMTPS 두 가지 보안 모드를 지원합니다.

일반적인 입력:smtp_host, smtp_port
utility-module-twilio-sms

Twilio REST API로 SMS를 전송하며, 인증 코드와 알림류 통지에 적합합니다.

나머지 알림 모듈은 Discord, Feishu, WeCom, Microsoft Teams, Mattermost, Rocket.Chat 그룹 봇, Mailgun / SendGrid 이메일, Bark, Pushover, ServerChan 푸시를 지원합니다. Telegram 파일 전송 모듈은 .md / .xlsx / .pdf / .csv 보고서와 설명을 지정한 대화로 바로 보내며, dedupe_key로 재실행 시 중복 전송을 방지합니다.

금융 분석(약 10개)

module-* 접두사의 퀀트 도구 체인: 시세 → 기술 지표 → 포트폴리오 분석 → 백테스트. 시세 모듈은 API key가 필요 없으며(텐센트 금융 / Yahoo Finance / CoinGecko 데이터 소스), 지표와 백테스트 모듈은 순수 표준 라이브러리로 구현됩니다.

module-stock-quote

다중 시장 실시간 시세: A주 / 홍콩주 / 미국주 / 암호화폐로, 심볼 접두사에 따라 데이터 소스를 자동 라우팅하고 통일된 quotes_json을 반환합니다.

module-stock-history

과거 K선(OHLCV) 취득으로, 시간 오름차순으로 정렬된 통일 bars_json을 반환하며 지표와 백테스트 모듈에 바로 넣을 수 있습니다.

module-technical-indicators

기술 지표 계산: SMA / EMA / RSI / MACD / BOLL / KDJ / ATR, 그리고 가장 최근 골든크로스 / 데드크로스 신호를 출력합니다.

일반적인 입력:bars_json
module-portfolio-analyzer

포트폴리오 성과 분석: 누적 / 연환산 수익, Sharpe / Sortino / Calmar, 최대 낙폭, 승률로, 벤치마크 비교를 선택할 수 있습니다.

module-backtest-engine

일별 백테스트 엔진: 이동평균 교차 / RSI / MACD / 볼린저 네 가지 내장 전략 또는 커스텀 신호로, 수수료, 슬리피지, 손절/익절을 지원합니다.

일반적인 입력:bars_json

같은 시리즈에는 주식 뉴스, 조건부 종목 선별, 옵션 가격 산정, 리스크 지표, 시장 개요 등 모듈도 있어, 시세에서 리포트까지 완전한 파이프라인으로 엮을 수 있습니다.

광고와 그로스(약 40개)

이 모듈들은 어느 구독제 앱 팀의 실제 광고 집행 운영에서 왔으며, Apple Search Ads、Google Ads와 App 수익 데이터를 아우릅니다. 용도별로 주요 몇 가지를 나열합니다:

  • ASA 리포트 가져오기:campaigns / keywords / adgroups / searchterms 네 가지 차원으로, 인터페이스 필드 명명 차이를 자동으로 평준화합니다.
  • ASA 엔티티 목록:광고 캠페인, 광고 그룹, 키워드, 제외 키워드의 일괄 가져오기.
  • Google Ads 도구:GAQL 쿼리를 실행하여 구조화하여 반환하며, 광고 캠페인 성과 리포트와 접근 가능한 계정 발견 기능도 있습니다.
  • App 수익 가져오기:시간창별로 수익과 구독 데이터를 취득합니다.
  • 시간창 해석:룩백 일수에 시간대를 더해 표준화된 시작/종료 날짜로 변환하여, 한 배치의 리포트에서 「어제 / 지난주」의 의미가 완전히 일치하도록 보장합니다.
  • 리포트 조립:다중 Sheet Excel 구축과 Markdown 리포트 템플릿 렌더링.
  • 다중 App 배치 처리:같은 하위 프로세스를 한 배치의 App 각각에 한 번씩 실행하고 결과를 병합합니다.
  • 품질 리뷰 루프:생성 → 채점 → 미달 시 재시도 → 달성 시 종료의 표준화된 품질 게이트.

모듈 계약

각 모듈은 계약 한 부를 선언합니다: 입력은 타입이 지정되며(string / number / boolean / enum / path / json), required、기본값、열거 값、수치 범위를 표시할 수 있습니다. 출력은 이름、유형、출처 변수를 선언합니다. 계약에는 워크플로 구현 버전과 독립적인 contract_version이 있습니다.

yaml
module:
  enabled: true
  display_name: Web Search
  contract_version: 1.0.0
  inputs:
    - {name: query, type: string, required: true}
    - {name: provider, type: enum, default: duckduckgo,
       allowed_values: [duckduckgo, serper]}
    - {name: max_results, type: number, default: "10", min: 1, max: 100}
  outputs:
    - {name: results_json, type: string, source: "{{var:results_json}}"}
    - {name: result_count, type: number, source: "{{var:result_count}}"}

계약을 수정할 때 플랫폼은 새 계약과 기존 계약을 비교합니다: 비파괴적 변경(예: 선택 입력 추가)은 바로 통과되고, 파괴적 변경(기존 참조자에게 영향)은 기본적으로 저장이 거부되어 명시적 확인이 필요하며, 권장 새 계약 버전 번호를 제시합니다. 계약은 deprecated 표시와 마이그레이션 설명도 지원하여, 참조자에게 대체 모듈로 교체하도록 안내합니다.

워크플로에서 참조하기

sub_workflow 단계로 모듈 id를 참조합니다. inputs의 값은 모두 문자열이며(숫자도 "10"으로 작성), 변수 템플릿을 지원합니다. outputs는 모듈의 출력을 상위 워크플로의 변수로 매핑하여 이후 단계에서 바로 사용합니다.

metrics-notify.yamlyaml
workflow:
  - step: fetch_metrics
    sub_workflow:
      name: utility-module-http-request
      version_strategy: latest
      inputs:
        url: "https://api.example.com/v1/metrics"
        method: GET
      outputs:
        status_code: fetch_status
        response_body: metrics_json

  - step: notify
    sub_workflow:
      name: utility-module-slack-webhook
      inputs:
        webhook_url: "{{var:slack_webhook_url}}"
        text: "Metrics updated: {{var:metrics_json}}"
      outputs:
        send_status: notify_status
    depends_on:
      - fetch_metrics
    retry:
      max_attempts: 2
      backoff: exponential
  • version_strategy 기본은 latest이며, 특정 버전에 고정할 수도 있어 모듈 업데이트가 이미 배포된 상위 워크플로에 영향을 주지 않습니다.
  • 모듈을 가리키는 참조는 계약 모드에서 작동하며, inputs / outputs를 계약에 따라 검증합니다. 모듈이 일반 워크플로로 강등되면 참조는 느슨한 모드로 퇴화하여 더 이상 자동 검증하지 않습니다.
  • retry、condition、depends_on 등 단계 수식자는 sub_workflow 단계에서 평소대로 사용할 수 있습니다.

맞춤 모듈

어떤 워크플로든 모듈로 승격할 수 있습니다: 편집기의 워크플로 설정 패널에서 「모듈 계약」 영역을 찾아 표시명, 설명, 입력 / 출력, 계약 버전을 작성하고 「모듈 계약 저장」을 클릭합니다. 이후 그것은 모듈 라이브러리에 나타나며, 다른 워크플로가 sub_workflow로 참조할 수 있습니다.

모듈 신분을 취소(강등)할 때 플랫폼은 먼저 역방향 의존성 검사를 합니다: 아직 이 모듈을 참조하는 상위 워크플로가 있으면 구체적인 참조 위치를 나열하고 작업을 차단하여, 다른 사람의 프로세스를 몰래 망가뜨리는 것을 방지합니다.

모듈도 템플릿과 마찬가지로 마켓에 발행할 수 있으며, 버전 번호를 가지고 설치 시 의존성을 자동으로 해석합니다.