path
Jin's Lab
코드로 실험하고 기록하는 개발 일지 · J.Lab

Jin's Lab

코드로 실험하고 기록하는 개발 일지. 커리어와 삶의 방향을 탐색하며 기록하는 공간입니다

blog-workflow

Blogger 자동화 설계 실수 — 퍼머링크는 발행 전에 정해봐도 소용없다

J.Lab ·
목차

    최근 블로그 글 발행 프로세스를 자동화하려고 GAS(Google Apps Script)와 Notion을 연동하는 작업을 진행했습니다. 목표는 Notion 데이터베이스에 글을 작성하고, 특정 상태로 변경하면 자동으로 Blogger에 발행되도록 하는 것이었죠. 특히 글의 SEO 핵심 요소인 퍼머링크와 검색 설명을 Notion에서 미리 설정하고 싶었습니다.

    노션 DB 설계: 완벽한 자동화를 꿈꾸며

    글 발행 자동화를 위해 Notion 데이터베이스에 "추천 퍼머링크"와 "검색 설명" 필드를 추가했습니다. 제 계획은 글 발행 전에 이 필드들을 미리 채워두면, GAS 스크립트가 Blogger로 글을 보낼 때 이 값들이 자동으로 반영되도록 하는 것이었습니다. Notion에서 모든 것을 통제할 수 있다면 얼마나 편리할까 상상했습니다. Notion DB 설계는 나름대로 완벽하다고 생각했죠.

    노션 데이터베이스와 블로거 아이콘이 연결된 자동화된 워크플로우를 보여주는 일러스트

    초기 자동화 스크립트(seed 스크립트)는 글 내용을 비롯한 모든 메타데이터를 Notion에서 가져와 Blogger에 업로드하는 역할을 했습니다. 퍼머링크도 예외는 아니었습니다. Notion에서 생성한 영문 슬러그가 Blogger에도 그대로 적용될 것이라고 굳게 믿었습니다. 발행 전 준비를 철저히 하면 아무 문제가 없을 거라고 확신했죠.

    Blogger 퍼머링크 자동화의 치명적인 오류 발견

    하지만 현실은 제 기대와 달랐습니다. 처음으로 자동 발행된 글을 확인했을 때, Blogger 퍼머링크가 제가 Notion에 입력했던 "추천 퍼머링크"와는 전혀 다르게 생성되어 있었습니다. Blogger는 글 제목을 기반으로 자체적인 퍼머링크를 생성했고, 제가 아무리 Notion에서 값을 넣어두었어도 이를 무시했습니다. 설상가상으로 발행된 글의 퍼머링크는 변경할 수 없었습니다.

    퍼머링크 변경 불가 정책을 상징하는 '변경 금지' 표지판과 블로거 아이콘이 있는 일러스트

    Blogger의 정책은 한 번 발행된 글의 퍼머링크는 변경 불가하다는 것이었습니다. 이 사실을 깨닫고 정말 당황했습니다. 심지어 seed 스크립트가 아무리 퍼머링크 값을 넘겨도 Blogger API는 이를 받아들이지 않는다는 것도 확인했습니다. Blogger 퍼머링크 변경이 불가능하다는 건 제 GAS 블로그 자동화의 핵심 설계가 틀렸다는 의미였습니다.

    새로운 Blogger 퍼머링크 관리 전략: 수동 반영의 필요성

    결국 제 Blogger 자동화 설계 실수를 인정하고 새로운 방향을 모색해야 했습니다. Blogger 퍼머링크 자동화는 현 시점에서는 불가능하다는 결론에 도달했습니다. 그래서 발행 후 처리에 대한 프로세스를 변경하기로 결정했습니다. 이제는 글을 발행한 후, Blogger에서 실제 생성된 퍼머링크와 검색 설명을 확인해야 합니다.

    노션에서 블로거 퍼머링크를 수동으로 확인하고 반영하는 하이브리드 워크플로우 일러스트

    이후 updateNotionStatus 스크립트를 통해 Blogger에서 실제 생성된 퍼머링크와 검색 설명 값을 Notion DB에 다시 가져와 업데이트합니다. 이렇게 Notion DB가 실제 발행된 값으로 채워지면, 이 값을 보고 수동으로 Blogger의 해당 필드를 업데이트하는 방식을 채택했습니다. 자동화는 아니지만, 적어도 Notion DB가 최신 정보를 담고 있어 일관성을 유지할 수 있게 되었습니다.

    이번 Blogger 퍼머링크 자동화 시도를 통해 완벽한 자동화에 대한 환상보다는 현실적인 접근이 중요하다는 것을 깨달았습니다. 모든 플랫폼이 동일한 유연성을 제공하는 것은 아니며, 때로는 수동 작업이 불가피할 때도 있다는 것을요. 덕분에 Notion DB 설계 과정에서 API의 한계를 미리 파악하고 워크플로우를 유연하게 설계하는 경험을 얻었습니다. 다음 번에는 좀 더 꼼꼼하게 플랫폼별 특성을 고려한 자동화 시스템을 구축할 수 있을 것 같습니다.

    blog-workflow blogger-automation google-apps-script notion-gas-integration permalink-management seo-optimization
    ← 이전 글
    최근 게시물
    다음 글 →
    이전 게시물
    ≡ 글 목록으로
    소개
    path
    J.Lab

    커리어와 삶의 방향을 탐색하며
    기록하는 공간입니다

    카테고리
    403 Forbidden Error 1 AdSense 1 AdSense Bot Detection 1 AI Automation 1 AI Image Generation 1 ai-automation 2 AI-Prompting 1 AIBlogAutomation 1 AICodeLog 1 AIContentGeneration 1 AIImageGeneration 1 AIWritingErrors 1 API Automation 2 API Retry Design 1 api-automation 1 API-Deprecation 1 api-error 1 api-fallback 1 api-retry-strategy 1 api-troubleshooting 1 APIDebugging 1 APIError 1 APIErrorHandling 1 APIIntegration 1 APITokenRenewal 1 AppsScript 1 appsScriptAutomation 1 AutomatedBlogging 1 automation 1 Automation 2 AutomationTroubleshooting 1 Backoff Algorithm 1 Base64Encoding 1 BatchProcessing 1 blog-automation 1 blog-customization 1 blog-migration 3 Blog-Sorting 1 blog-strategy 1 blog-theme-customization 1 blog-workflow 1 blogautomation 1 BlogAutomation 2 Blogger 4 Blogger API 2 Blogger Automation 1 Blogger SEO 1 blogger-api 3 blogger-automation 1 blogger-error-400 1 blogger-labels 1 blogger-seo 1 blogger-tips 1 Blogger-Tips 1 BloggerAPI 3 BloggerBypath 1 BloggerCustomization 2 BloggerFavicon 1 BloggerTemplate 1 BloggerTemplateEditing 1 BloggerTheme 1 BloggerThemeCustomization 1 BloggerXMLStructure 1 Blogging-Automation 1 BloggingTools 1 BlogQuality 1 BlogSpot 1 BWidgetBIncludable 1 CardClickHandler 1 CDATA 1 clamping-text 1 Code Integration 1 codelog 1 CodeLog 1 codeRefactoring 1 contentsequencing 1 cost-reduction 1 CSSOverlay 1 data-parsing 1 DatabaseDesign 1 DataRecovery 1 DateInjection 1 Debugging 2 dev-journey 1 DeveloperJourney 2 DevJourney 1 display-none-seo 1 dom-manipulation 1 dynamic-menu 1 Error-Handling 1 ErrorHandling 1 Execution Timeout 1 ExecutionLimit 1 exponential-backoff 1 FactChecking 1 FaviconEmbedding 1 Feed-API 1 filesystem 1 Flat Illustration 1 FluxModel 1 FreeAIImage 1 FrontEndDev 1 FrontendTips 1 GAS Blogger API 1 gas-automation 1 gas-optimization 1 gas-trigger 1 GASTimeout 1 gasTriggerManagement 1 GCP Project Linkage 1 Gemini 1 Gemini API 1 gemini-api 1 GeminiAPI 1 GeminiPrompt 1 GeminiPromptEngineering 1 GmailRestrictions 1 Google Apps Script 7 Google Discover 1 google-apps-script 3 Google-Apps-Script 1 google-blogger 1 googleAppsScript 1 GoogleAppsScript 6 googlesapps-script 1 hero-image 1 HTMLWidgetBlogger 1 http-429 1 HuggingFace 1 HuggingFaceAPI 1 ico-generator 1 Image Optimization 1 image-automation 1 image-optimization 1 In-App Browser 1 invalid-argument 1 javascript 3 JavaScript 2 javascript-automation 1 javascript-toc 1 jlab-codelog 1 JLabDevLog 1 json-schema 1 label-length-limit 1 linux 1 meta-description 1 Negative Prompt 1 notion-api 1 notion-database 1 notion-gas-integration 1 NotionAPI 1 NotionAutomation 1 notionintegration 1 NotionIntegration 1 OAuth Scope 1 pagination 1 payload-validation 1 permalink-management 1 PersonaDesign 1 pil-image-processing 1 Pinterest 1 Pollinations 1 Pollinations Flux 1 pollinations-api 1 PollinationsAI 1 PositionAbsolute 1 Prompt Design 1 Prompt Engineering 1 prompt-engineering 1 Prompt-Engineering 1 PromptEngineering 1 publishorder 1 python-favicon 1 queue-stuck 1 RandomDelay 1 rate-limiting 1 Refactoring 1 rfc3339 2 Robots Meta Tag 1 RSS Feed 1 scriptNotFound 1 Search Engine Optimization 2 Search-Engine-Optimization 1 SEO Tips 1 seo-optimization 4 SEO-Optimization 1 seriesmanagement 1 SidebarLinks 1 SNSMarketing 1 SVGIcon 1 table-of-contents 1 TechJournal 1 Template 1 ThreadsAPI 1 tistory-migration 1 transparent-favicon 1 triggerCleanup 1 Troubleshooting 1 unzip 1 URL Slug 1 vanilla-js 1 Web Development 1 Web Publishing 2 Web Security 1 web-development 1 Web-Development 1 web-development-tips 1 web-performance 1 web-scraping 1 WebAccessibility 1 WebDevelopment 3 WebDevelopmentTips 1 WebDevJourney 1 windows 1 WorkflowAutomation 1 XMLParser 1 XMLSpecialCharacters 1 XMLTheme 1 zip 1
    인기 글
    GAS에서 Blogger API 403 오류 완전 정복 — appsscript.json 스코프와 GCP 프로젝트 연결
    GAS에서 Blogger API 403 오류 완전 정복 — appsscript.json 스코프와 GCP 프로젝트 연결
    Google Apps Script 실행 시간 6분 제한 — Gmail 계정 함정과 랜덤 딜레이 설계
    Google Apps Script 실행 시간 6분 제한 — Gmail 계정 함정과 랜덤 딜레이 설계
    Blogger 테마 XML 직접 뜯어봤더니 알게 된 것들
    Blogger 테마 XML 직접 뜯어봤더니 알게 된 것들
    다른 블로그
    IssueLog
    IssueLog
    issuelog.jinbytes.com
    KidStory
    KidStory
    kidstory.jinbytes.com
    IT Story
    IT Story
    jinbytes.com
    © Jin's Lab · J.Lab · All Rights Reserved
    jinbytes.com · Powered by Blogger