트위터와 글 공유 오토메이션에 일론이 싼 똥 처리

이전에 ‘버퍼를 오토메이션으로 대신한 사례’에서 한동안 글 공유에 ‘버퍼’라는 서비스를 사용하다가 버퍼에서 마스토돈을 지원하지 않아 트위터와 마스토돈을 모두 지원하는 숏컷을 만들어 사용하기 시작했다고 소개했습니다. 이 숏컷은 몇 달 동안 예상대로 동작했지만 2023년 초 트위터가 서드퍼티 앱의 API 접근을 차단하면서 더이상 동작하지 않게 됩니다. 정확히는 트위터에 글을 올리는데 트윗봇이 제공하는 숏컷 기능을 사용하고 있었는데 트위터가 API를 차단했고 이를 사용하는 트윗봇이 동작하지 않게 되었고 트윗봇에서 제공하는 숏컷이 동작하지 않게 된 겁니다.

트위터 공식 앱도 숏컷 기능을 제공하기는 하지만 트윗봇에 비해 형편 없는 수준입니다. 트윗봇은 트윗을 보낼 계정을 미리 지정할 수도 있었고 나에게 묻지 않고 자동으로 글을 올릴지 아니면 올리기 전에 확인할지, 또 멘션을 보내거나 메시지를 보내거나 검색 결과를 받아오는 등 여러 가지 기능이 있었지만 트위터 공식 앱은 오직 트위터 앱에서 현재 선택된 계정으로만 글을 올릴 수 있고 또 자동으로 올리는 기능 없이 항상 글을 올리기 전에 글 올리는 화면을 표시해 수동으로 포스트 버튼을 터치해야만 합니다.

오랫동안 사용해 온 트윗봇을 이런 식으로 사용할 수 없게 되어 안타깝습니다. 트위터의 입장을 아예 이해 못하는 것은 아니지만 이런 식으로 중단되는 것은 잘못되었다고 생각합니다. 트위터 공식 앱의 숏컷 기능은 무척 마음에 안 들지만 당장 사용할 수 있는 기능은 이것 뿐이므로 여기 맞춰 숏컷을 수정하기로 합니다. 겸사겸사 지난 ‘버퍼를 오토메이션으로 대신한 사례’에서 대충 설명하고 넘어갔는데 이번에는 숏컷을 작은 스크린샷으로 나눠 설명하겠습니다.

트위터

마스토돈

설명

트위터

마스토돈

설명

 

이 숏컷은 좀 길고 아이폰으로 편집하다 보면 실수할 여지가 좀 있어 동작에 따라 로그를 남기게 했는데 이 숏컷이 로그를 남길 때 항상 이 접두어로 시작하게 했습니다.

 

지금은 트위터와 마스토돈에 글을 올리고 있어 각 채널에 글을 이미 올린 상태인지 판단하는 변수를 초기화합니다.

 

트위터와 마스토돈에 올릴 글을 구글 캘린더에 등록해 예약하고 있습니다. 구글 캘린더에 ‘블로그 글 공유'라는 캘린더를 사용하고 있습니다. 이 캘린더 이름을 설정합니다.

 

캘린더를 검색해 오늘 올릴 글이 있는지 검사합니다. 글은 하루에 한 번만 올릴 작정이어서 캘린더에는 하루 종일 일정으로 오늘 올릴 글을 넣어 두었습니다. 그래서 오늘 시작하고 오늘 끝나며 하루 종일 일정으로 설정된 일정이 있다면 이 일정이 오늘 올릴 글을 의미합니다.

 

캘린더 검색 결과를 확인합니다. 만약 조건에 맞는 일정이 없다면 오늘 올릴 글이 없는 것입니다. 지금은 주중에만 글을 올리고 있어 주말에는 글을 올릴 일정이 없습니다. 또한 이 숏컷 자체가 오토메이션에 의해 주중에만 실행되므로 이 부분이 실제로 실행되지는 않습니다.

 

오늘 올릴 글이 있는지 확인하고 나면 캘린더로부터 오늘 올릴 글 제목을 가져옵니다. 일정 이름이 오늘 올릴 글 이름입니다.

 

캘린더에서 오늘 올릴 글의 링크를 가져옵니다. 링크는 일정의 ‘장소’에 입력해 놓았습니다. 구글캘린더 인터페이스에서 ‘장소’는 지구 상의 실제 위치를 나타내는 값이어서 필드의 설계 의도와 다른 값을 넣는 행동이 좀 마음에 걸려 다른 방법이 없을지 고민하고 있습니다.

 

 

트위터와 마스토돈에 올릴 글 내용을 생성합니다. 이 때 캘린더 일정에 ‘내용’이 있으면 이 내용을 포함한 텍스트를 생성하고 내용이 없으면 이를 포함하지 않는 텍스트를 생성합니다.

처음에는 내용을 통해 글을 간단하게 설명할 생각으로 만들었는데 실제로는 귀찮아서 한 번도 내용을 사용한 적이 없습니다.

트위터와 마스토돈에 대해 각각 비슷한 절차를 수행합니다. 이 절차를 반복으로 만들지 않은 이유는 애플 숏컷 앱 문제로 RepeatIf를 중첩해서 사용하면 종종 숏컷 엡이 크래시되기 때문입니다.

트위터와 마스토돈에 글을 올린 다음에는 글을 올린 시점에 각각 ‘트위터’, ‘마스토돈’이라는 일정을 만들어 놓고 있습니다. 그래서 캘린더를 검색해 이런 일정이 있다면 이미 글을 올린 상태라는 의미입니다. 그래서 글을 중복으로 올리지 않기 위해 먼저 캘린더를 검색합니다.

 

아직 글을 올린 상태가 아니라면 트위터와 마스토돈 각각에 위에서 생성한 내용을 올립니다. 원래 이 부분에 트윗봇 숏컷을 사용했는데 이번에 사용할 수 없게 되면서 어쩔 수 없이 트위터 숏컷을 사용합니다. 트위터 숏컷은 반드시 UI를 띄워 제가 포스트 버튼을 터치해야만 하고 이 때마다 나는 짜증을 로그에 남기고 있습니다.

 

마스토돈은 글을 올리면 리턴을 받아 글이 제대로 올라갔는지 여부를 판단할 수 있어 이를 처리하는 부분이 추가되어 있습니다. 트윗봇을 사용할 때는 트위터 역시 이렇게 했지만 트위터 숏컷은 글이 올라갔는지 확인할 방법이 없습니다.

트위터, 마스토돈 양쪽 모두 이미 글을 올린 상태였다면 글을 올리지 않고 다음으로 넘어갑니다.

숏컷은 여전히 의도한 대로 동작하지만 실행될 때마다 트위터 포스트 버튼을 한 번씩 터치해야 하는 귀찮음이 생겼습니다. 이 정도 귀찮음이면 버퍼로 돌아갈 생각을 하기에 충분하지만 버퍼는 마스토돈을 지원하지 않기 때문에 이러지도 저러지도 못하는 상황입니다. 다만 트위터에 글을 올릴 때마다 일론에 대한 짜증을 로그에 남기는 정도로 감정을 조절하고 있고 또 이런 상황에도 불구하고 트위터를 의미 있는 채널로 여길 것인지 본격적으로 고민하기 시작한 계기가 되었습니다.