#Github issue を作成すると #Medium #API で新規ポストする自動連携の例。Zapierを利用。
Github issue を作成すると #Medium #API で新規ポストする自動連携の例。Zapierを利用。
結果の例
タグも指定できている
なんと画像は自動的にコンバートされて、Mediumにホスティングしてくれている、すげえ、画像をポストするAPIを別途叩く必要がないみたいだ
Medium API の取得
Mediumユーザーの設定ページから 項目がなければサポートに連絡して有効化してもらう
Github issue の作成がトリガー
Code by Zapier の python 実行をアクションにする
title content url
にそれぞれ Github issue のデータを入れる
token には直接 Medium API Application トークンを入れる
Script
なんと format を指定すると、markdownのままポスト出来る 最初は Zapier の Formatter で Markdown to HTML 変換をしようと思ったが、必要なかった
タイトルのハッシュタグをパースして、Mediumのタグとして扱っている
# -*- coding: utf-8 -*- import requests import re # Get me author id me_api_url = 'https://api.medium.com/v1/me' me_api_headers = { 'Authorization': 'Bearer {}'.format(input['token']) } me_api_res = requests.get(me_api_url, headers=me_api_headers) author_id = me_api_res.json()['data']['id'] # Post Story # https://github.com/Medium/medium-api-docs#33-posts url = 'https://api.medium.com/v1/users/{author_id}/posts'.format(author_id=author_id) headers = { 'Authorization': 'Bearer {}'.format(input['token']), 'Content-Type': 'application/json', } # タイトルからハッシュタグを抽出してQiita API 用に整形 title_hashtags = re.findall(r'#([^\s]+)', input['title']) medium_tags = [] for title_hashtag in title_hashtags: medium_tags.append(title_hashtag) # タイトルでハッシュタグが見つからなかった時 if not medium_tags: medium_tags = [] json = { "title": input['title'], "contentFormat": "markdown", "content": input['content'], "canonicalUrl": input['url'], "tags": medium_tags, "publishStatus": "public" } res = requests.post(url, headers=headers, json=json) output = res.json()