텔레그램 채널에 봇(bot)으로 자동 포스팅하기

알림: IFTTT가 텔레그램을 이제 정식 지원하기 때문에 이 글을 보시기 전에 먼저 새로운 방법을 시도해보시기 바랍니다. 그 쪽이 더 쉽거든요.

보러가기:  텔레그램과 IFTTT 서비스를 결합하여 나만의 인공지능 비서를 만들자

텔레그램 채널을 운영하거나, 또는 그룹채팅방의 관리자일 때 주기적으로 공지사항 올리는 게 번거로울 수 있습니다. 가령 과대표인데 홈페이지 공지사항 나오면 매번 링크 따서 단톡방에 올려줘야 하는 경우, RSS 리더로 받아보면 해결될 일을 단지 메신저 환경이라는 이유로 사람이 복사-붙여넣기 작업을 해야 하는 상황이 생기지요.

이럴 때 텔레그램 봇(bot)을 만들어 일을 시키면 좋습니다. 서버를 마련해서 본격적으로 복잡한 일을 시킬 수도 있고, 대화형 서비스를 제공할 수도 있겠지만 그런 건 제 능력을 벗어난 일이므로 1) 봇을 만들고, 2) 인터넷에 있는 다른 서비스와 연동하여, 3) 자동으로 내 대신 단톡방에 글을 올리는 심부름을 할 수 있도록 구성하는 것만 살펴보도록 하죠.

뭐 이것도 사실 구글링하면 다 나오는 얘기이지만, 저처럼 초보인 분들을 위해 … 정리합니다.

목표

트위터나 페이스북페이지, 또는 블로그에 새 글이 발행되었을 때 자동으로 긁어다가 내가 운영하는 채널에 포스팅하도록 하기.

텔레그램 채널에 봇(bot)으로 자동 포스팅하기 더보기

Workflow앱으로 워드프레스 블로그 자동 발행하기

아이폰에서 작업자동화 목적으로 사용할 수 있는 Workflow앱을 활용해서 드롭박스에 미리 작성해둔 .txt 파일을 워드프레스로 바로 발행할 수 있습니다. 물론 워드프레스 앱을 사용해도 되지만, 드롭박스 기반 텍스트 에디터 사용하기 좋아하시면서 워드프레스 발행도 즐겨하시는 경우에 고려해보세요.

그러니까, 대강의 순서가 아래와 같죠.

드롭박스로 동기화하며 글쓰기

드롭박스 공간을 통해 동기화하면서 아이폰, 맥, PC에서 연속적으로 글쓰기를 합니다. 아이폰에서 Byword나 Nebulous Notes, 맥북에서 Scrivener나 Ulysses, PC에서 WriteMonkey나 MarkdownPad2와 같이 플래폼마다 가장 좋아하는 프로그램을 사용하여 똑같은 글을 열어 계속 편집할 수 있게 됩니다. 저장된 .txt파일이나 .md파일은 호환성이 매우 높아 특별한 프로그램이 없어도 누구나 내용을 바로 확인할 수 있으며, 파일이 일단 사용하는 컴퓨터의 로컬 저장소에 저장되어 있으므로 브라우저에서 글 쓰는 것보다 안전하고 다루기 쉽습니다.

워드프레스로 발행하기

이렇게 쓴 글을 워드프레스 블로그로 발행하는 방법은 몇 가지가 있겠죠. 직접 워드프레스 관리자 페이지에 접속하여 업로드하거나, 젯팩의 부가기능을 활용해 이메일로 보내기도 가능합니다. 맥북에서는 관리자 화면에 앱을 통해서 바로 접근할 수 있습니다. 드롭박스에서 공유링크를 얻어서 커스텀 필드에 붙여넣으면 자동으로 본문에 반영해주고 추후에 드롭박스에서 파일의 내용을 수정하고 저장하면 바로 블로그 글에도 연동해서 반영해주는 플러그인도 있습니다. Byword나 몇몇 앱은 자체적으로 워드프레스 발행 기능을 제공하기도 합니다.

그런데 결국 드롭박스에 완성된 글이 있는 경우에 이제는 됐다 싶을 때 말이죠. 한 방에 발행하는 게 은근히 귀찮더라고요. 워드프레스 앱의 에디터가 나쁜 건 아니지만 또 처음부터 거기서 쓰고 싶은 생각은 없다는 거죠.

얼마전에 Workflow에서 워드프레스 발행 액션을 지원한다는 소식을 듣고 사용중인데 지금까지는 매우 만족스럽습니다. 제가 사용하는 예제를 올려드릴테니 1) 드롭박스에 텍스트 파일로 메모하고 2) 그 내용을 재빨리 워드프레스로 발행하는 걸 원하신다면 한 번 검토해보세요.

워크플로우 스크린샷

workflow

설명

저는 위 워크플로우를 아이폰 홈스크린에 빼두어서, 버튼 한 번만 누르면 드롭박스에 있는 텍스트 파일 내용을 제 블로그로 자동 발행하도록 해두었습니다.

Date 액션

Use – Current Date 을 선택하여 현재 날짜를 사용하기로 합니다.

Format Date 액션

날짜를 표시하는 형식을 Custom 으로 설정합니다. 오늘 날짜 앞에 매번 “이것저것링크”라는 문구를 넣고 싶어서 최종적으로 Format String에 이것저것링크 yyyy-MM-dd (EEE)와 같이 적었습니다. 이는 오늘이 2015년 11월 28일 경우 이것저것링크 2015-11-28 (토)와 같은 문자열을 생성하라는 뜻입니다.

Add to Variable

이제 위에서 만든 문자열 전체에 ddate라는 변수 이름을 부여해서 저장해둡니다.

Get Files from Dropbox

다음은 드롭박스에 저장된 텍스트 파일을 불러올 차례입니다. “Show Dropbox Picker”에 체크하여 직접 선택할 수도 있지만, 매번 같은 파일을 불러올 거라면 경로를 써두면 되겠습니다.

제 경우엔 IFTTT 서비스를 통해 트위터에서 글을 쓰면 드롭박스의 Notes 폴더 안에 ththlink.txt 파일을 만들어 내용을 차곡차곡 붙여넣도록 해두었습니다. 따라서 고정된 경로에 늘 텍스트파일이 있는 거죠. 이 경로를 File Path에 지정하였습니다.

Error If Not Found에 체크하여 만약 파일을 찾지 못할 경우 에러 메시지를 띄우도록 합니다.

Set Name

이제 찾아낸 드롭박스 파일의 파일명을 변경합니다. 파일명은 고정된 게 아니라 항상 현재 날짜 중심으로 아까 변수로 지정해둔 ddate를 활용하여 이것저것링크 2015-11-28 (토).txt 와 같이 지정할 수 있도록 ddate.txt로 정하였습니다. 이 때 ddate부분은 키보드로 입력하는 게 아니라 Variables.. 메뉴를 통해 지정해주어야 해요.

Save to Dropbox

이제 정해진 파일명으로 아까 얻은 그 텍스트파일을 지정한 장소에 저장하도록 합니다. 저는 Notes 폴더 안에 있는 또다른 서브폴더 안에 텍스트 파일을 저장하기 원했습니다.

Post to WordPress

이제 워드프레스로 텍스트 파일의 내용을 발행합니다. 이 때 Title은 미리 지정해둔 변수 ddate로 지정하여 “이것저것링크 2015-11-28 (토)”와 같은 문자열이 블로그 글의 제목이 될 수 있도록 했습니다. 기타 타입, 포맷, 공개여부, 카테고리 등을 지정해주면 됩니다.

Get Files from Dropbox

여기서 끝나도 되지만 다시 Notes 폴더에 그대로 남아있는 ththlink.txt 파일을 불러냅니다.

Delete Files from Dropbox

이제 이 파일을 삭제합니다. 왜냐하면 발행이 끝났고, 이미 서브폴더에 백업본이 하나 저장되어 있으니까요. 파일을 지워야 새로 도착하는 내용부터 다시 새로운 ththlink.txt 안에 쌓일 수 있을 겁니다.

지우기 전에 Confirm 할 수 있도록 체크하여 원하지 않는 경우 건너뛸 수 있도록 합니다.

추가 팁

“Make Rich Text from Markdown” 액션을 사용하면 기존에 .md 형식으로 작성해둔 드롭박스의 파일을 불러내어 이것을 바로 발행할 수 있는 포맷으로 변환한 뒤에 워드프레스로 전달할 수 있습니다. 제가 보니 이미지 링크 포함해서 아주 잘 작동하더군요.

좀 복잡해보일 수 있는데 사실 간단합니다. 아이폰/아이패드 등에서 드롭박스에 텍스트/마크다운으로 글 쓰고, 별도로 워드프레스 앱을 실행할 필요 없이 신속하게 발행할 수 있는 방법이라고 생각합니다. 설정은 좀 귀찮지만 써보면 속이 다 시원할 정도로 편해요.

(2015년 11월)

텔레그램 단톡방, 이제 1000명 입장 가능해

텔레그램 정말 좋은데, 왜들 안 쓸까요? 지난 번 채널 서비스 도입에 이어 이번엔 초대형 단톡방 개설이 가능해졌다는 소식이 텔레그램 블로그에 올라왔었네요. 제 생각엔 웬만한 작은 사업체나 단체 정도는 당장 대형 단톡방 운영이 무척 쉬워질 거 같습니다. 네이버 밴드도 있고, 카페도 있지만 빠르게 소식 주고받기에 메신저 형식이 가장 편하더라고요. “어머님들 내일 애들 우산 챙겨 보내주세요!” 같은 소식을 아침 7시에 전파하기에 가장 좋은 건 단체 메시지 아니겠어요?

원래도 빠르고 안정적이었지만, 더 좋아진 건데 블로그에 소개된 특징은 다음과 같습니다.

단톡방 관리자


△ 특정 몇 명이 관리자가 될 수도, 모두가 관리자 자격을 가질 수도 있다

  • 단톡방은 기본적으로 기존에 입장한 사람 누구나 새로 친구를 초대하고 채팅방 대표 사진과 이름을 수정할 수 있다.
  • 너무 많은 사람이 참여한 단톡방의 경우 따로 관리자 몇 명을 지정해서 운영할 수도 있다. 이제 새로운 사람 초대와 채팅방 대표사진/이름 변경은 관리자만 가능해진다.
  • 따로 관리자 모드를 키면 관리자는 기존 멤버 강퇴 권한도 가진다.

수퍼그룹(Supergroups)

텔레그램 단톡방 기능은 정말 강력하죠. 단톡방에 사람 많으면 시장 바닥처럼 정신 없어지는데, 1) 질문에 달린 답글(replies) 골라 볼 수 있고, 2) 친구를 @username과 같은 형태로 태그해서 챙겨줄 수 있고요, 3) #해시태그를 사용해서 자주 나오는 주제별로 쉽게 다시 소식을 챙겨 읽을 수 있게 되어 있습니다.

또한 이제 최대 200명 제한에 이르면, 단톡방을 “SuperGroup”으로 업그레이드하여 1,000명까지 지원하는 대형 단톡방으로 바꿀 수 있게 되었습니다. 사실상 웬만한 카페? 규모의 커뮤니티를 손 안의 메신저에서 운영 가능하도록 하겠다는 건데 좋네요. 주요 특징은 다음과 같습니다.

  • 나중에 입장한 사람도 예전 글을 다 읽어볼 수 있다.
  • 특정 사용자가 올렸다가 다시 삭제하면, 다른 사람 스마트폰 화면에서도 모두 삭제된다.
  • 관리자가 아닌 경우 물론 본인의 글만 삭제 가능하다.
  • 200명 넘어가는 사람들이 있는 슈퍼그룹 단톡방은 기본적으로 알림이 무음처리(mute)되어 있다. 계속 울려대면 피곤하니까. 들락날락 거리는 사람들에 대한 알림도 매번 주는 대신 더 적게 울리도록 설계.
  • 물론 아이폰, 안드로이드, 크롬앱, 웹브라우저, 윈도우, 맥북에서 사용 가능하다.

인앱 알림

추가로, 텔레그램은 아이폰에서 새 메시지 오면 끌어내려 답장 가능할 뿐 아니라 첨부되어 온 이미지 등도 미리보기로 보여줍니다.

여러분 텔레그램으로 오세요. 카톡은 보안도 문제지만 너무 구리잖아요.

(2015년 11월)

학교관찰기-07. 회장선거, 수능, 바람직


△ 친구랑, 2015년 11월

학생회장 공약

고등학생 때 누가 회장 선거에 나왔었고 누가 당선되었던지, 내가 누구에게 표를 던졌는지 기억이 나질 않는다. 곧 우리 학교 아이들도 선거운동에 들어가는데, 애들이 보고용으로 드미는 계획이 조밀조밀하지 못한 거야 이해하지만 계획이 가리키고 이루고자 하는 바는 조금 유감스럽다. 아마도 성인들의 국회의원 선거와 크게 다르지 않다는 느낌을 받아서 그런데, 특히 공약들의 문장 어미를 보면, ‘무엇무엇을 구입하겠다, 업체를 알아보고 무엇무엇을 해줄 수 있도록, 프로그램을 수입해서 무엇무엇을 …’ 등등으로 끝나는 폼새가 영 개운치 않다.

하지만 또 생각해보면, 내 고등학교 시절과 크게 공약이 달라지지 않은 것이 과연 아이들 탓인지 의심이 드는데, 이런 문장들을 보게 되는 게 꼭 애들이 어른들 무작정 따라해서 그렇다거나 출마자의 미숙이나 부도덕과 관계된다기보다는 미성년이 지닌 운신의 폭이 제한되어 그런 듯 하다. 가령 학교에 얼마의 돈이 있고 얼마의 돈을 당선 후 사용할 수 있는지, 운영위원회에 가다듬어 계획을 잘 제출했더니 학교 예산을 통해 새로운 사업이 착수되었다든지.. 등등과 같은 실제로 어떤 보이는 힘을 가지고 쿵쿵 소리를 내며 움직이는 ‘Body’를 운영해볼 기회와 그것을 실패할 경험을 얻을 수 없는 구조가 보이는 거다. 정말로 학교와 친구들을 움직여보도록, 그리고 반성해보도록, 그리고 민주적으로 평가받아 욕도 얻어먹도록 어른들은 한 번도 허락한 적이 없다. 아이들이 적어오는 계획이란 결국 좁은 방에서 맨손체조 정도의 자유를 갖으면서, 그나마 임원 피선출의 경험이란 생활기록부에 인성에 관한 모종의 면죄부와 비슷한 스펙처럼 들리기도 한다.

수능 소감

고사장 이름을 착각하고 옆 학교에 있다가 시험 시작 10분 전에 저어 멀리서 뛰어오는 어떤 여자 애를 보았다. 아마 그 속도로 어디 대회에 출전했으면, "자네 운동 해보지 않겠나?"라는 말을 들었을 거다. 수능이란, 그토록 숨이 차는 경험이 아닌가.

바람직한 학생

학교 앞 모 회사에 입사 면접 시험 보러 왔다가 학교 생각났다면서 졸업생이 들렸다. 질문 뭐 나왔냐고 물으니 "00인이 갖추어야 할 자질" 같은 걸 물었다던데, 생각해보면 나도 작년에 면접관으로 어디 들어가서 조그만 애한테 그런 걸 물었었네. "바람직한 00의 자질은 뭐라고 생각하나요?"

그놈의 자질. 하나마나한 질문이기도 하지만, 직능은 물론이고 십대에게 물어보기에는 벅차면서 우악스러운 질문이 아닌가? 무슨 플라스틱 주물 형성 하는 것 마냥 최종 상태의 품질과 (구입하는 사람이 보기에) 우아한 양태를 강제하는 문장이다. 정말 사악한 말이 아닌가? 최근에 파리에서 권총을 들고 "신을 믿는가?"라고 물었던 태도와 어쩌면 닮았다.

나는 교육이 크게 모델과 모델링을 양산하고 전제하는 것과, 다발적이고 우연한 계기를 그 자체로 긍정하는 경우로 나뉜다고 생각한다. 전자는 텔레비전 브라운관 컨베이어 벨트에서 똑같은 제품을 불량 없이 대량 생산하던 시기에 어울린다. 후자는 어떤 어른들에게는 너무나 공포스러워서 꿈에서도 생각하지 못할 일이다.

(2015년 11월)