Skip to content
cast

GitHub Action

Medium Post

v1.6.0 Latest version

Medium Post

cast

Medium Post

Pushes markdown post to medium

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Medium Post

uses: InfraWay/[email protected]

Learn more about this action in InfraWay/post-medium-action

Choose a version

medium-post-markdown

Github Action for posting a markdown post to medium.com

Inputs

access_token

Required User's access token. Create one on the page.

markdown_file

Required The markdown file path of the article.

base_url

Base blog's url e.g. https://myblog.com

post_url

Base blog's post url e.g. https://myblog.com/posts. If not specified, base_url is used.

post_status

Post's status. Valid values are draft, public, or unlisted. Default draft.

post_license

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.

Outputs

id

ID of the created post.

url

Medium URL of the created post.

Example usage

Post content from static file

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:
      - uses: infraway/[email protected]
        with:
          access_token: ${{ secrets.MEDIUM_ACCESS_TOKEN }}
          markdown_file: ./content/post.md

Post content from newly committed file

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, use steps.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 added post0, 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/[email protected]
        with:
          access_token: ${{ secrets.MEDIUM_ACCESS_TOKEN }}
          markdown_file: ${{ steps.posts.outputs.post0 }}
          base_url: https://myblog.com
          post_url: https://myblog.com/posts