워크플로
client.workflows를 통해 여러 SDK 호출을 실행하고 결과를 하나로 통합해 반환하는 복합 헬퍼입니다.
모든 워크플로 메서드는 client.workflows에 있습니다. 각 메서드는 직접 작성해야 하는 일련의 일반 SDK 호출을 대신하며, 클라이언트에서 조합한 하나의 통합 결과를 반환합니다. 워크플로에 대응하는 단일 REST 엔드포인트는 없으므로, 결과의 키는 REST 응답으로 전송되는 필드 이름이 아니라 SDK 자체에서 정의한 이름입니다.
워크플로는 여러 번 호출하므로, 실행에 사용하는 API 키에는 워크플로가 접근하는 모든 리소스에 대한 접근 권한이 필요하며, 워크플로 호출 1회는 내부 요청마다 각각 1회씩 호출 한도에 반영됩니다. 메서드는 숫자 ID 또는 base64로 인코딩된 ID를 허용하는 location_id를 받으며, 자세한 내용은 사업장 ID를 참조합니다.
workflows.auto_reply_to_reviews
한 번의 호출로 템플릿을 사용하여 사업장의 리뷰에 답글을 작성합니다. 나머지 리뷰를 수동으로 처리하면서 긍정적인 리뷰의 답글 작성률을 유지하는 데 사용합니다.
client.workflows.auto_reply_to_reviews( location_id: str | int, *, template: str = "Thank you for your feedback!", min_rating: int = 4, only_unanswered: bool = True, dry_run: bool = False,) -> list[dict[str, Any]]auto_paging_iter()를 사용하여 reviews.list의 페이지를 순회한 다음, 두 필터를 모두 통과한 리뷰마다 reviews.respond를 한 번씩 호출하는 작업을 대신합니다.
# See what would be sent, without postingplan = client.workflows.auto_reply_to_reviews( 16808, template="Thanks for the {rating}-star review!", min_rating=4, dry_run=True,)for entry in plan: print(entry["id"], entry["rating"], entry["status"]) # Then post for realresults = client.workflows.auto_reply_to_reviews(16808, min_rating=4)print(f"Replied to {len(results)} reviews")처리한 리뷰마다 하나의 dict를 담은 일반 목록을 반환하며, 각 dict에는 id, rating, reply, status가 포함됩니다. 먼저 dry_run=True로 실행합니다. 반환되는 항목의 status가 dry_run로 설정되므로, 답글이 게시되기 전에 선택된 대상을 확인할 수 있습니다.
workflows.listings_health_audit
한 번의 호출로 사업장의 등록 정보 현황인 프리미엄 등록 정보, 음성 등록 정보, 중복 등록 정보, 점수를 가져옵니다. 사업장별 상태 패널에서 3번의 개별 호출 대신 사용합니다.
client.workflows.listings_health_audit(location_id: str | int) -> APIObject동일한 사업장에 대한 listings.premium, listings.voice, listings.duplicates 호출을 대신하며, 프리미엄 결과를 syncStatus별로 집계합니다.
audit = client.workflows.listings_health_audit(16808)print(f"Health score: {audit.health_score}%")print(f"Synced: {audit.synced_count} of {len(audit.premium)}")print(f"Duplicates found: {len(audit.duplicates)}")for issue in audit.issues: print(issue.get("site"), issue.get("syncStatus"))location_id, premium, voice, duplicates, synced_count, issue_count, issues, health_score가 포함된 APIObject를 반환합니다. health_score는 프리미엄 등록 정보 중 syncStatus가 SYNCED인 비율을 정수 백분율로 나타낸 값이며, 프리미엄 등록 정보가 없으면 0입니다. issues에는 syncStatus 값이 존재하면서 SYNCED가 아닌 프리미엄 등록 정보가 포함됩니다.
workflows.weekly_reputation_report
지정한 기간에 대해 하나의 사업장의 리뷰, 리뷰 분석, 프로필 분석, 등록 정보 동기화 상태를 조회합니다. 5번의 호출이 이루어지므로 실시간 대시보드보다는 정기 보고서에 사용합니다.
client.workflows.weekly_reputation_report( location_id: str | int, *, start_date: str | None = None, end_date: str | None = None,) -> APIObjectstart_date와 end_date는 YYYY-MM-DD 형식의 문자열이며, 둘 다 선택 사항입니다. reviews.analytics.overview, first=50를 사용하는 reviews.list, analytics.google, analytics.bing, listings.premium 호출을 대신하며, 기간을 받는 각 호출에 지정한 기간을 그대로 전달합니다.
report = client.workflows.weekly_reputation_report( 16808, start_date="2026-09-01", end_date="2026-09-07",)print(report.review_summary.get("averageRating"))print(report.analytics.get("google", {}).get("views"))print(report.listings_health.get("sync_rate"))location_id, review_summary(리뷰 분석 개요), recent_reviews(해당 기간의 리뷰 최대 50개), analytics(google와 bing가 포함된 dict), listings_health(total, synced, sync_rate가 포함된 dict)이 포함된 APIObject를 반환합니다. sync_rate는 백분율 형식의 문자열이며, 사업장에 프리미엄 등록 정보가 없으면 N/A입니다.