AI TOOLS

대표이미지 127편이 같은 그림이었다 — 스톡 API로 하루에 푼 기록

junetapa 2026. 9. 1 약 9분

블로그 목록을 넘기다 같은 로봇 사진이 두 번 지나갔다. 세어 보니 256편 중 127편이 서른다섯 종의 이미지를 돌려쓰고 있었다. 카테고리마다 기본 이미지를 하나씩 두고 새 글이 그것을 물려받는 구조였다. AI로 한 장씩 만들면 정확하지만 장당 8~10분이라 127편에는 쓸 수 없었다. 스톡 이미지 API로 하루 만에 0으로 만든 과정과, 그 사이 걸린 것들을 적는다.

먼저 적어 둘 것

이 글은 같은 그림을 돌려쓰는 문제를 푼 기록이지 「좋은 대표이미지를 고르는 법」이 아니다. 스톡 사진은 글에 딱 맞지 않는다. 트래픽 상위 글은 여전히 한 장씩 따로 만드는 편이 낫고, 이 방법은 나머지 다수의 중복만 푼다. 그리고 라이선스는 서비스마다 다르므로, 아래 판단을 그대로 옮겨 쓰기 전에 본인 용도로 약관을 다시 읽어야 한다.

숫자부터 셌다 — 256편 중 127편

눈으로 본 것은 「로봇 사진이 두 번 나왔다」였다. 그것만으로는 규모를 모른다. 목록 데이터를 열어 이미지 파일명으로 세어 봤다.

결과는 서른다섯 종을 127편이 나눠 쓰고 있었다. 절반이다. 원인은 두 갈래였다. 하나는 카테고리마다 둔 기본 이미지가 그 카테고리 글 전체에 그대로 붙어 있던 것, 다른 하나는 예전에 붙여 둔 외부 스톡 두 장을 열여덟 편이 공유하던 것이다.

여기서 방법이 갈린다. 생성형 AI로 글마다 한 장씩 만들면 내용에 정확히 맞는다. 실제로 그 방식으로 두 편을 만들어 봤는데 한 장에 8분에서 10분이 걸렸다. 127편이면 하루로 끝나지 않는다. 그래서 상위 글은 AI로 개별화하고, 나머지는 스톡으로 중복만 푸는 쪽으로 나눴다.

세는 김에 규격도 같이 봤다. 카테고리 기본 이미지 여섯 종은 가로 400픽셀에 세로 200픽셀이었다. 오픈그래프가 권하는 크기의 3분의 1이다. 이 크기로는 SNS에 링크를 붙였을 때 큰 카드가 아니라 작은 썸네일로 나간다. 어차피 손대는 김에 이것도 권장 규격으로 다시 만들었다.

기준을 이렇게 두면 목표가 분명해진다. 예쁜 이미지를 고르는 것이 아니라 고유 이미지 수가 전체 편수와 같아지게 만드는 것이다. 이 문장이 뒤에 나오는 판정 기준이 된다.

고칠 자리가 «세 갈래»였다

처음에는 두 곳만 고치면 되는 줄 알았다. 목록 카드가 읽는 데이터 파일 하나, 그리고 글 파일 안의 공유용 메타 태그 하나다. 실제로 그 둘을 고치고 나서 다시 세었더니 중복 0이 나왔다.

그런데 화면을 열어 보니 같은 그림이 그대로 깔려 있었다. 빠진 곳이 있었다. 글 파일 에서 기본 이미지를 참조하는 자리가 160건 더 있었다.

  • 글 상단 배경 — 그 글 자신의 배경인데 기본 이미지를 쓰고 있었다 (48편)
  • 본문 아래 「관련 글」 카드 — 다른 글의 썸네일인데 역시 기본 이미지였다 (88건)
  • 구조화 데이터 안의 이미지 필드 (4건)

덧붙여, 같은 사이트 안에서도 트랙마다 구조가 달랐다. 어떤 트랙은 상단 배경과 공유용 이미지가 같은 사진이고, 다른 트랙은 상단은 사진이면서 공유용은 따로 만든 카드였다. 후자를 사진으로 채워 놓았다가 목록에서 혼자 튀는 것을 뒤늦게 발견했다. 파일 이름 앞에 자리를 뜻하는 말을 붙여 두면 이런 혼동이 줄어든다.

이 셋을 놓친 채 「중복 0」이라고 판정할 뻔했다. 데이터만 세면 화면에 남은 것을 못 본다. 판정은 반드시 라이브 화면 쪽에서 한 번 더 해야 한다.

관련 글 카드에서 한 가지가 더 걸렸다. 카드의 alt 문구로 그 글을 찾아 이미지를 붙이려 했는데 28건이 전부 실패했다. alt는 축약형이었다.

사람이 읽는 글자로 짝을 맞추지 않는다

alt="Perplexity vs ChatGPT 비교"
title="Perplexity AI vs ChatGPT 검색 비교 (2026.6 최신) — 직접 써본 솔직한 결론"

정확 일치도, 부분 일치도 0건이었다. 카드를 감싼 <a href>는 실제 파일 경로라 정확하다. 그것으로 바꾸니 28건이 한 번에 붙었다. 기계가 쓰는 주소가 있으면 그것을 쓴다.

대표이미지를 고칠 자리가 목록 데이터와 공유용 메타 말고도 본문 안에 세 종류 더 있었음을 정리한 도해
앞의 둘만 고치고 「중복 0」이라 판정할 뻔했다. 화면에는 같은 그림이 그대로 깔려 있었다.

Pixabay와 Pexels 중 무엇을 쓸 것인가

먼저 확인한 것은 디자인 도구의 스톡을 API로 끌어올 수 있는지였다. 결론은 안 된다. 그 도구의 공개 API에서 자산을 다루는 기능은 사용자가 직접 올린 파일만 대상으로 하고, 내장 스톡을 검색하는 통로가 없다. 스톡은 편집기 안에서만 쓸 수 있다.

그다음 후보가 Pexels와 Pixabay였다. 갈린 지점은 «우리가 하려는 일이 그 서비스가 권하는 방식인가»였다.

Pixabay 문서는 이미지를 쓸 의도라면 먼저 자신의 서버로 내려받으라고 적는다. 영구적인 핫링크는 금지한다. 우리는 받아서 우리 서버에 올린다 — 정확히 그 방식이다. 요청 한도는 60초당 100회이고, 별도의 출처 표기 의무는 없다.

Pexels도 상업적 이용이 가능하고 라이선스 자체가 출처 표기를 요구하지는 않는다. 다만 이용약관에 「콘텐츠를 그 자체로(standalone) 판매하거나 배포할 수 없다」는 조항이 있다. 글의 대표이미지로 쓰는 것이 여기 걸리는지 아닌지는 해석이 갈릴 수 있는 자리다. 크롭만 한 이미지가 SNS 카드로 나가는 형태라면 더 그렇다.

그래서 기본을 Pixabay로 잡았다. 판단이 애매한 조항이 없는 쪽을 고른 것이다. Pexels를 쓸 때는 워터마크를 얹어 새 창작물 쪽으로 두기로 했다.

이 판단을 그대로 옮기지 않는다

약관은 바뀌고 용도마다 해석이 다르다. 위 내용은 2026년 9월 기준으로 문서를 읽고 정리한 것이며, 법률 자문이 아니다. 광고 수익이 붙는 사이트라면 「비상업적 이용」 조항이 있는 서비스는 처음부터 후보에서 빼는 편이 안전하다.

Pixabay 와 Pexels 의 이용 조건을 자체 호스팅 권장 여부와 배포 제한 조항을 기준으로 두 칸으로 비교한 도해
두 서비스 다 상업적 이용을 허용한다. 갈린 것은 «우리가 하려는 일이 그 서비스가 권하는 방식인가»였다.

도구에 넣은 것 — 중복 방지가 핵심이다

API를 부르고 이미지를 받아 자르는 것은 어렵지 않다. 진짜 문제는 다른 데 있었다. 도구가 같은 사진을 다시 고르면 지금 푸는 문제를 도구가 되풀이한다.

그래서 받은 사진의 고유 번호를 파일에 적고, 다음 회차 검색 결과에서 그 번호를 빼도록 했다. 이것이 이 도구에서 가장 중요한 한 줄이다.

1

가로형만, 충분히 큰 것만 받는다

검색 요청에 가로 방향과 최소 너비 조건을 건다. 세로 사진을 가로 규격으로 자르면 가운데만 남아 무엇인지 알 수 없게 된다. 정렬은 인기순으로 두되 그것이 «맞는 사진»을 뜻하지는 않는다.

2

중앙 크롭 후 규격으로 줄인다

원본 비율과 목표 비율을 비교해 넘치는 축만 잘라낸다. 그다음 목표 크기로 줄이고, 파일이 기준보다 크면 품질을 단계적으로 낮춰 다시 저장한다. 이 과정에서 대부분 100~200KB 안에 들어온다.

3

쓴 번호를 기록한다

사진 번호와 검색어, 촬영자, 원본 주소를 함께 적어 둔다. 다음 회차에는 그 번호가 후보에서 제외된다. 이 기록이 없으면 몇 달 뒤 같은 검색어로 같은 사진을 다시 받게 된다.

걸린 것들 — 검색어는 딴 데로 간다

가장 많이 걸린 것은 동음이의어였다. 프로그래밍 언어 이름을 넣으면 뱀이 나오고, 모델 이름을 넣으면 동물이 나온다. iOS 개발 글에 쓸 사진을 찾으려고 「swift」를 넣었더니 칼새 사진이 줄줄이 나왔다. 「fine tuning」은 기타 줄을, 「comparison」은 자동차를 가져왔다.

더 위험한 것은 상표였다. 유명 플랫폼 화면이나 로고가 찍힌 사진이 결과에 섞인다. 스톡 서비스가 배포를 허용해도 그 안의 로고까지 상업적으로 쓸 수 있는 것은 아니다. 두 건을 골라 놓고 뒤늦게 발견해 다시 골랐다.

사람 얼굴이 크게 나온 컷도 뺐다. 초상 문제가 걸릴 수 있고, 글 내용과도 대개 맞지 않는다.

그리고 목업 사진에 안내 문구가 박혀 있는 경우가 있다. 화면 자리에 「여기에 디자인을 넣으세요」 같은 영문이 그대로 인쇄된 사진인데, 작게 보면 눈치채기 어렵다.

자동 판정으로는 못 거른다

얼굴 검출기를 돌려 봤지만 진짜 얼굴을 놓치고 엉뚱한 것을 잡았다. 결국 구운 이미지를 한 장에 모아 붙인 연락지를 만들어 눈으로 봤다. 이 단계를 건너뛴 회차에서만 사고가 났다. 열 장 남짓이면 몇 초면 훑는다.

검색어를 고치는 요령은 단순하다. 낱말 하나로는 거의 실패하고, 맥락을 이루는 낱말을 두세 개 붙이면 결과가 제자리를 찾는다. 「swift」는 새가 나왔지만 「ios app development xcode」로 바꾸니 앱 설계 스케치가 나왔다. 그래도 첫 판에 맞는 경우는 절반쯤이라, 후보를 먼저 훑어보는 단계는 결국 남는다.

검색 결과의 순서에도 함정이 있었다. 후보를 먼저 보고 「세 번째 것」이라고 골라 두었다가 다음 호출에서 인덱스가 한 칸씩 밀렸다. 정렬이 호출마다 흔들리기 때문이다. 그 뒤로는 순번이 아니라 사진 고유 번호로 집도록 도구를 고쳤다.

스톡 검색에서 실제로 걸린 함정 다섯 가지를 자동으로 걸러지는지 여부와 함께 정리한 도해
검색어가 그럴듯해도 결과는 딴 데로 간다. 자동 판정으로 걸러지는 것은 이 중 하나도 없었다.

결과와 남은 것

아침에 서른다섯 종 127편이던 중복은 하루 만에 0이 됐다. 판정은 라이브 데이터로 했다. 전체 256편에 고유 이미지 256종, 중복 0, 결손 0이다.

중복을 세는 과정에서 하나가 더 나왔다. 남아 있던 여덟 편은 이미지가 «겹친» 것이 아니라 아예 없는 상태였다. 공유용 메타 태그 자체가 없어서 SNS에 링크를 붙이면 카드가 비었다. 중복보다 나쁜 상태인데, 중복만 세면 이것이 안 보인다.

분모를 어떻게 두느냐가 판정을 바꾼다

「중복이 몇 편인가」로 세면 결손을 놓친다. 「고유 이미지 수 = 전체 편수」를 조건으로 두면 중복과 결손이 한 번에 잡힌다. 같은 데이터를 보면서도 세는 기준에 따라 다른 답이 나온다.

배포에서 일곱 편이 조용히 빠졌다

고친 파일 여덟 편을 올렸는데 결과가 「완료 9개」로 나왔다. 이미지 여덟에 데이터 파일 하나를 더하면 아홉이니, 글 파일 여덟 편이 통째로 빠진 것이었다. 파일 이름에 한글이 들어 있어 명령줄을 지나며 인코딩이 깨졌고, 업로더는 「없다」를 한 줄만 찍고 지나갔다. 오류가 나지 않는다.

그 뒤로는 파일 목록을 명령 인자로 넘기지 않고 목록 파일에 적어 넘긴다. 그리고 판정은 「완료 N개」의 N을 실제로 세어 보는 것으로 바꿨다. 숫자를 세지 않았으면 그날 배포가 절반만 나간 줄 몰랐을 것이다.

남은 것도 있다. 외부 서비스에 직접 연결해 쓰는 이미지가 72편 남아 있다. 지금은 정상적으로 표시되지만 그쪽에서 내리면 그날 깨진다. 이것도 같은 방식으로 내려받아 옮길 예정이다.

정리하면, 이 작업에서 시간이 걸린 곳은 API를 부르는 부분이 아니었다. 고칠 자리를 빠짐없이 찾는 것고른 사진을 눈으로 확인하는 것이었다. 자동화는 앞뒤로 사람이 한 번씩 보는 구조일 때 안전하다.

자주 묻는 질문

스톡 사진을 블로그 대표이미지로 써도 저작권 문제가 없나요?

서비스마다 다릅니다. Pixabay는 자체 라이선스로 상업적 이용과 수정을 허용하고 출처 표기를 요구하지 않으며, 이미지를 쓸 의도라면 자기 서버로 내려받으라고 문서에 명시합니다. 다만 사진 안에 로고나 사람 얼굴이 있으면 사진 자체의 라이선스와 별개로 상표권·초상권이 따로 걸립니다.

API 요청 한도는 얼마나 되나요?

Pixabay는 60초당 100회입니다. 회차당 몇 장씩 받는 방식이면 넉넉합니다. 다만 문서가 체계적인 대량 다운로드를 금지하고 있으므로, 한도 안이라도 한 번에 수백 장을 긁어 오는 방식은 피하는 편이 좋습니다.

AI 생성 이미지를 쓰는 것과 비교하면 어떤가요?

AI 쪽이 글 내용에 훨씬 정확합니다. 대신 한 장에 8~10분이 걸려 백 편 단위 작업에는 맞지 않습니다. 트래픽 상위 글은 AI로 개별화하고 나머지는 스톡으로 중복만 푸는 식으로 나누면 둘의 장점을 같이 씁니다.

고칠 자리를 빠짐없이 찾으려면 어떻게 하나요?

이미지 파일명으로 전체를 검색해 참조하는 자리를 모두 뽑는 편이 확실합니다. 목록 데이터와 공유용 메타만 보면 본문 안의 배경·관련 글 카드·구조화 데이터를 놓칩니다. 고친 뒤에는 데이터가 아니라 실제 서비스되는 페이지에서 다시 세야 합니다.

고른 사진을 매번 눈으로 봐야 하나요?

네. 검색어가 그럴듯해도 결과는 동음이의어나 상표가 섞인 사진으로 갑니다. 자동 판정 도구는 이 종류의 문제를 잡지 못합니다. 여러 장을 한 장에 모아 붙인 이미지를 만들어 훑으면 몇 초면 끝납니다.

이 글은 실제로 운영 중인 블로그에서 겪은 것을 정리한 기록이다. 라이선스에 관한 내용은 2026년 9월 기준으로 각 서비스 문서를 읽고 정리한 것이며 법률 자문이 아니다. 약관은 바뀌고 용도마다 해석이 다르므로 본인 용도로 다시 확인해야 한다.
스톡이미지PixabayPexelsAPI대표이미지OG이미지파이썬블로그자동화저작권이미지최적화
junetapa
junetapa
회사 일을 실제로 AI에게 넘겨 보고 남은 기록을 정리한다.
Twitter Facebook URL 복사