Github Action for posting a markdown post to medium.com
Required Application id. Create one on the page.
Required Application secret.
Required User's access token. Create one on the page.
Required The markdown file path of the article.
Base blog's url e.g. https://myblog.com
Base blog's post url e.g. https://myblog.com/posts. If not specified, base_url
is used.
Post's status. Valid values are draft
, public
, or unlisted
. Default draft
.
Post's license. Valid values are all-rights-reserved
, cc-40-by
, cc-40-by-sa
, cc-40-by-nd
, cc-40-by-nc
, cc-40-by-nc-nd
, cc-40-by-nc-sa
, cc-40-zero
, public-domain
. Default all-rights-reserved
.
ID of the created post.
Medium URL of the created post.
Let's assume the post markdown file is located at ./content/post.md
.
name: publish-to-medium
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Read the post
id: post
run: echo "::set-output name=data::$(cat ./content/post.md)"
- uses: infraway/medium-post-markdown@v1.3.0
with:
app_id: ${{ secrets.MEDIUM_APP_ID }}
app_secret: ${{ secrets.MEDIUM_APP_SECRET }}
access_token: ${{ secrets.MEDIUM_ACCESS_TOKEN }}
markdown: ${{ steps.post.outputs.data }}
This example gets files from commit, find blog posts and publish it to Medium.
steps.files.outputs.added_modified
extracts add+modified files. If you need added only, usesteps.files.outputs.added
instead.content/posts
- a repo folder, which contains markdown posts. Replace with your own.steps.posts.outputs.post0
- markdown posts path, it will contain as many as you have addedpost0
,post1
,post2
.
name: publish-to-medium
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- id: files
uses: jitterbit/get-changed-files@v1
- id: posts
name: Detecting posts from the changes
run: |
i=0
for changed_file in ${{ steps.files.outputs.added_modified }}; do
echo "Do something with ${changed_file}."
if [[ "${changed_file}" == "content/posts"* ]];
then
echo "File ${changed_file} matched post."
echo "::set-output name=post${i}::${changed_file}"
((i=i+1))
fi
done
- if: steps.posts.outputs.post0
name: Publish to medium
uses: infraway/post-medium-action@v1.3.0
with:
app_id: ${{ secrets.MEDIUM_APP_ID }}
app_secret: ${{ secrets.MEDIUM_APP_SECRET }}
access_token: ${{ secrets.MEDIUM_ACCESS_TOKEN }}
markdown_file: ${{ steps.posts.outputs.post0 }}
base_url: https://myblog.com
post_url: https://myblog.com/posts