메인 콘텐츠로 건너뛰기
page thumbnail

AI와 인공지능 시대, 내 블로그 콘텐츠로 Substack 뉴스레터 자동화하는 실전 노하우

AI와 인공지능 시대에 콘텐츠 관리와 뉴스레터 발송은 더이상 복잡할 필요가 없습니다. 오늘은 내 블로그 글을 손쉽게 Substack 뉴스레터로 자동화하는 기술, 실제 운영 workflow, 그리고 효율과 비용을 모두 잡는 실전 노하우를 쉽고 재미있게 소개합니다. 이 글만 따라오면, 일상적인 콘텐츠 배포가 놀라울 만큼 간편해집니다!

블로그-뉴스레터 자동화: 시스템의 전체 구조 이해하기

요즘 SNS나 이메일 뉴스레터가 대세지만, 콘텐츠 자동화는 항상 어려운 숙제였죠. 제가 사용하는 시스템의 전체 흐름은 이렇게 정리할 수 있습니다.

먼저, 블로그는 Django로 개발되어 Heroku에서 운영됩니다. 데이터는 PostgreSQL 데이터베이스에 안전하게 저장되죠. 여기서 핵심은, 블로그에 새로 올라온 콘텐츠가 이전에 뉴스레터에 포함되지 않았는지 자동으로 걸러내는 것! 이 데이터 추출과 가공은 Observable 노트북이 담당합니다.

Observable 노트북에서 커다란 "복사하기" 버튼을 클릭하면, 최근 블로그 콘텐츠를 HTML 형식으로 복사할 수 있습니다. 그 다음, 이 텍스트를 Substack 편집기에 붙여넣고 제목, 이미지, 태그 등만 살짝 수정해서 발송하면 끝. 이 모든 과정이 평소 몇 분이면 끝납니다!

데이터 흐름 파헤치기: PostgreSQL에서 SQLite까지

블로그는 Django+Heroku+PostgreSQL 조합으로 운영되고, 뉴스레터 자동화엔 Datasette와 SQLite가 빠질 수 없습니다.

매 2시간마다 GitHub Actions 스케줄러가 동작하여 Heroku에 있는 최신 콘텐츠를 가져와서 db-to-sqlite 도구를 통해 PostgreSQL 데이터를 SQLite로 변환합니다. 이 과정을 자동화하고, 백업도 추가로 남기니 실수하거나 오류가 생겨도 걱정이 없습니다.

GitHub 레포지토리엔 JSON 포맷의 데이터도 따로 저장되어, 콘텐츠가 어떻게 바뀌었는지 커밋 이력으로 한눈에 파악할 수 있어요. 이런 방식 덕분에, Django에 복잡한 이력 추적 기능을 별도로 넣지 않아도 버전 관리가 자연스럽게 되는 셈입니다.

Datasette와 Fly.io로 JSON API 제공하기

변환된 SQLite 데이터베이스는 Datasette를 통해 JSON API로 제공됩니다. 이 과정은 Fly.io 클라우드에 배포해놓아 어디서든 호출해서 사용할 수 있습니다.

Observable 노트북에서는 자바스크립트 fetch 함수로 이 API를 가져온 뒤, 여러 SQL 쿼리로 다음에 들어갈 콘텐츠를 선별합니다. 실제로는 매우 복잡한 143줄짜리 SQL이지만, 결국 목적은 뉴스레터에 포함된 적 없는 신규 블로그 포스트와 링크, 인용, 노트, TIL(Today I Learned) 등 각종 콘텐츠를 모아서, HTML로 예쁘게 합쳐주는 것입니다.

SQL 내에서는 날짜별로 데이터 정렬, 태그 연결, 월 표시 등 디테일한 부분까지 직접 처리합니다. "terrible but funny"한 방식이지만, 남이 이해하기 어려운 시스템일수록 본인은 효율적으로 쓸 수 있다는 장점!

Substack 뉴스레터로 보내기: 수동 수정기와 최종 발송 프로세스

이렇게 준비된 HTML 콘텐츠를 Substack 에디터에 붙여넣고, 마지막 소소한 손질만 합니다.

  • 뉴스레터 제목과 부제목은 보통 대표 포스트의 타이틀을 복사

  • YouTube 링크가 코드 예시 안에 들어가면 자동 임베드 되길 원하지 않아서 수정

  • 미리 작성된 코드 블록 끝에 불필요한 빈 줄을 삭제

  • 뉴스레터에 어울리지 않는 내용과 오래된 시간 표현("어제" 등)을 적절히 바꿔줌

  • 썸네일 이미지와 태그는 직접 선택해서 뉴스레터로 마무리

이 과정을 거치고 나면, 이제 "보내기" 버튼만 눌러주면 뉴스레터가 구독자들의 메일함에 자동으로 도착합니다.

전체 시스템의 실전 가치: 효율, 비용, 그리고 안정성

이 자동화 시스템은 놀랄 만큼 저렴한 비용과 높은 효율을 자랑합니다. GitHub Actions와 Fly.io, SQLite, Datasette 등은 대부분 무료 혹은 저렴하게 쓸 수 있고, 복잡한 백엔드 없이도 뉴스레터 콘텐츠의 관리와 배포가 간편하게 돌아갑니다.

그리고 중요한 점! 대부분의 과정이 자동화되어 개인이 굳이 개입할 필요가 거의 없습니다. 갑자기 새로운 포스트가 올라가도, 몇 분이면 뉴스레터까지 순식간에 발송 가능. 만약 중간에 백업이나 데이터 이력 확인이 필요하다면, GitHub 커밋만 보면 끝!

마무리: 앞으로의 뉴스레터 자동화, 그리고 팁

정리하자면, AI와 인공지능 시대의 콘텐츠 자동화는 Django, PostgreSQL, SQLite, Datasette, Observable, Substack 등 각종 툴의 조화로운 연결이 핵심입니다. 꼭 대기업이 아니어도, 누구나 최신 기술을 활용해 복잡한 뉴스레터 발송 프로세스를 손쉽게 자동화할 수 있습니다.

마지막 팁! 자동화 시스템을 설계할 때는 "나만 알기 쉬운 시스템"보단, 백업과 데이터 흐름이 외부에서 투명하게 파악되는 구조를 두는 게 좋습니다. 혹시라도 문제가 생기면 어디서든 원인을 찾고 복원하기 쉽거든요.

이제 여러분도 내 블로그 콘텐츠를 Substack 뉴스레터로 자동화해보세요! 처음 한 번만 세팅하면, AI와 자동화의 편리함을 두고두고 누릴 수 있습니다.

참고

[1] How I automate my Substack newsletter with content from my blog - Simon Willison’s Weblog

[2] PostgreSQL: Documentation: 18: 25.1. SQL Dump - PostgreSQL 공식 문서

[3] Build a better workflow with this $40 AI tool bundle | Mashable - Mashable