콘텐츠 생산 및 자동화

유튜브 태그 뭘 넣어야 하나, 35편에 직접 달아보고 정리

AI 로컬 LLM 2026. 9. 13. 21:44
증상: 영상 제목에 특수 기호(<, > 등)가 포함될 경우, 생성된 태그를 유튜브 스튜디오에 적용할 때 오류 발생.
원인: 유튜브 태그 시스템이 특정 특수 기호를 XML/HTML 문법으로 해석해 유효하지 않은 태그로 처리했기 때문.
해결: 태그 적용 전 특수 기호를 일반 텍스트로 치환하는 전처리 로직을 추가했다.
확인법: 수정된 태그를 실제 영상에 적용하고 유튜브 스튜디오에서 정상 저장되는지 확인.

맥미니로 혼자 돌리는 콘텐츠 자동화 시스템에 언젠가 영상 태그 관리 기능이 꼭 필요했다. 지금까지 발행한 영상이 35개쯤 쌓이니 일관된 태그를 수동으로 하나씩 넣는 건 시간 낭비였다.

그래서 영상 제목과 스크립트 키워드를 기반으로 태그를 자동으로 생성하고, 일괄 적용하는 작은 기능을 만들었다. 하지만 막상 적용하려니 예상치 못한 곳에서 문제가 터졌다.

자동화 스크립트와 마주한 태그 오류

나는 내가 발행한 35개 영상에 태그를 일괄 적용하려고 했다. 목표는 단순했다. 영상 제목을 기반으로 핵심 키워드를 뽑고, 몇 가지 고정 태그를 붙여서 자동화 스크립트가 유튜브 API를 통해 넣어주는 것. 이전에 웹 페이지에서 특정 데이터를 긁어올 때도 겪었던 터라, 문자열 처리쯤이야 싶었다.

 

내 자동화 스크립트는 내부적으로 영상 제목을 가져와 여러 규칙을 거쳐 태그 후보들을 만든다. 예를 들어 "2>&1 리다이렉션 완전 정복" 같은 영상 제목이 있다면, "2>&1 리다이렉션", "리다이렉션", "쉘스크립트" 등의 태그를 만들도록 설계했다.

 

이걸 유튜브 스튜디오에 넣으려는 순간이었다. 스크립트가 태그를 적용하고 "성공" 메시지를 띄웠지만, 실제로 스튜디오에 들어가 보니 일부 영상의 태그는 적용되지 않았고, '유효하지 않은 태그가 포함되어 저장할 수 없습니다'라는 메시지가 뜨는 영상도 있었다.

automation_script.py를 다시 돌리고, 수동으로 웹에서 태그를 입력해 봤다. 내 스크립트가 만든 "2>&1 리다이렉션"이라는 태그를 그대로 넣었을 때, 유튜브 스튜디오는 붉은색 경고와 함께 'Invalid tag' 메시지를 띄웠다. 다른 정상적인 태그는 잘 들어갔다.

꺾쇠 기호가 문제, XML 엔티티 오류 발견

처음엔 태그 길이나 개수 제한 문제인가 싶었다. 유튜브 태그 가이드라인을 다시 찾아봤지만, 내 경우는 아니었다. 문제는 특정 문자열이었다. '2>&1'처럼 꺾쇠 기호가 들어간 부분이 자꾸 말썽을 부렸다. 웹 관련 경험이 있던 터라 직감적으로 XML이나 HTML 엔티티 문제일 거라고 짐작했다.

 

유튜브가 태그를 처리하는 과정에서 <나 > 같은 기호를 특별한 의미로 해석하는 듯했다. 마치 웹 페이지에서 &lt;나 &gt;가 <나 >로 보이게 하는 것처럼 말이다.

내 스크립트가 생성한 태그에 2>&1이 그대로 들어가면, 유튜브 서버는 이걸 유효한 태그 문자열이 아닌, 어떤 구문의 일부로 오해하고 거부하는 것이었다. 별것 아닌 것 같지만 이런 사소한 디테일이 자동화 시스템을 한순간에 멈춰 세운다.

몇 시간을 이 문제 해결에만 썼던 것 같다. 태그를 일일이 검수하고 수정하는 수고를 덜려고 자동화를 구축했는데, 정작 디버깅에 시간을 쓰고 있으니 허탈했다.

특수 기호 전처리 로직으로 문제 해결

해결책은 간단했다. 태그를 유튜브로 보내기 전에, 특수 기호를 안전한 일반 텍스트로 치환하는 로직을 추가하는 것이다. 특히 문제의 꺾쇠 기호들은 읽는 말로 바꿔주기로 했다.

내 태그 생성 스크립트 안에 다음과 같은 전처리 단계를 넣었다.

def sanitize_tag(tag_string):
    """유튜브 태그에 부적합한 특수 기호를 일반 텍스트로 치환한다."""
    sanitized = tag_string.replace('>', ' 그리고 ').replace('<', ' 그리고 ')
    sanitized = sanitized.replace('>', ' 그리고 ').replace('<', ' 그리고 ')
    # 필요하다면 다른 특수 기호도 추가로 치환할 수 있다.
    return sanitized.strip()

# 태그 생성 후 적용 전
# original_tag = "2>&1 리다이렉션"
# processed_tag = sanitize_tag(original_tag)
# print(processed_tag) # 출력: "2 그리고 1 리다이렉션"

이제 내 스크립트는 "2>&1 리다이렉션"이라는 제목에서 2>&1 리다이렉션이라는 태그를 만들면, 자동으로 2 그리고 1 리다이렉션으로 바꿔준다. 이렇게 치환된 태그는 유튜브 스튜디오에서 아무런 문제 없이 잘 저장되었다. 35개 영상에 걸쳐 이 수정된 태그들을 일괄 적용했고, 모든 영상의 태그가 정상적으로 반영되었다.

외부 시스템과 연동하는 자동화에서는 입력값 유효성 검사가 정말 중요하다.

나는 태그 적용 전후로 영상들의 노출 수치와 조회수를 추적했다. 내 영상 통계 수집기 스크립트(yt_stats.py)를 통해 매일 수집되는 조회수 데이터를 확인했고, 태그를 적용한 이후 35개 영상 전체에서 유의미한 조회수나 노출 수치 상승은 관찰되지 않았다. 오히려 내 채널의 조회수를 움직인 핵심 요소는 태그가 아닌 '제목'이었다는 사실만 다시 확인하는 계기가 되었다.

 

앞으로는 태그를 생성할 때마다 이 전처리 로직을 반드시 거치도록 시스템을 만들었다. 작은 특수 기호 하나가 큰 자동화 파이프라인을 멈출 수 있다는 걸 직접 경험한 만큼, 앞으로는 이런 사소한 부분도 놓치지 않으려 한다.

맥미니로 만드는 AI 홈서버 — 직접 돌려보고 씁니다