DEV Community

John  Ajera
John Ajera

Posted on • Edited on

Automating Mastodon Posts with GitHub Actions

Configure GitHub for Mastodon Publishing

1. Prepare Your Mastodon Account

Generate a Mastodon API Key

  • Go to your Mastodon account.
  • Navigate to Preferences > Development.
  • Create a new application:
    • Application name: GitHub-Integration
    • Scopes: profile (default), write:statuses
  • Click Submit.
  • Click the newly created GitHub-Integration application.
  • Navigate and note Your access token.

2. Create a GitHub Repository

Create a New Repository

  • Go to GitHub and create a new repository.
  • Give it a meaningful name (e.g., blog).

Set Up the Repository Structure

  • Clone the repository to your local machine:
  git clone https://github.com/<your-username>/<repository-name>.git
  cd <repository-name>
Enter fullscreen mode Exit fullscreen mode

It's always a best practice to create a branch and work from it.

  git branch <branch-name> initial-build
  git checkout <branch-name>
Enter fullscreen mode Exit fullscreen mode

After creating the folder, the repository structure should look like this:

  .
  ├── articles
  ├── LICENSE
  └── README.md
Enter fullscreen mode Exit fullscreen mode

3. Add Your Mastodon API Key to GitHub Secrets

Go to Repository Settings

  • Navigate to "Settings" > "Secrets and variables" > "Actions" > "New repository secret".

Add a Secret

  • Name the secret "MASTODON_TOKEN".
  • Paste the "Mastodon" API key from the previous step.

  • Set up the folder structure for GitHub Actions workflows:

  mkdir -p .github/workflows
  touch .github/workflows/mastodon-publisher.yml
Enter fullscreen mode Exit fullscreen mode
  .
  ├── .github
  │   └── workflows
  │       └── mastodon-publisher.yml
  ├── articles
  ├── LICENSE
  └── README.md
Enter fullscreen mode Exit fullscreen mode

Configure mastodon-publisher.yml

  • Update the "mastodon-publisher.yml" file with the following contents:
  name: Mastodon Publisher

  on:
    push:
      branches:
        - "**"

  jobs:
    publish:
      runs-on: ubuntu-latest

      steps:
        - name: Checkout code
          uses: actions/checkout@v4

        - name: Mastodon Post on GitHub Actions
          id: mastodon_toot
          uses: cbrgm/mastodon-github-action@v2
          with:
            access-token: ${{ secrets.MASTODON_TOKEN }}
            url: 'https://mastodon.social'
            message: "Hello from GitHub Actions!"

        - name: Get toot information
          run: |
            echo "Toot ID: ${{ steps.mastodon_toot.outputs.id }}"
            echo "Toot URL: ${{ steps.mastodon_toot.outputs.url }}"
            echo "Scheduled at: ${{ steps.mastodon_toot.outputs.scheduled_at }}"
Enter fullscreen mode Exit fullscreen mode

Summary

  • The "mastodon-publisher.yml" workflow automates publishing Markdown articles located in the articles directory to your Mastodon account.

5. Push the branch to GitHub

  • Execute
git add --all
git commit -m "feat: add GitHub Actions workflow for publishing to Mastodon" \
  -m "Configure automated publishing workflow."
git push origin <branch-name>
Enter fullscreen mode Exit fullscreen mode

6. Create a Pull Request (PR)

Go to Your Repository in GitHub

  • Visit your repository on GitHub.

Navigate to the "Pull Requests" Tab

  • Click on the "Pull Requests" tab at the top of the repository page.

Click "New Pull Request"

  • Select the "New Pull Request" button.

Select Branches

  • Base branch: Choose the branch you want to merge into (e.g., main or production).
  • Compare branch: Select the <branch-name> branch.

Review Changes

  • Review the list of commits and the files changed to ensure they are correct.

Add a Title and Description

  • Provide a concise and descriptive title (e.g., feat: Add GitHub Actions for Mastodon publishing).
  • Add any necessary details in the description box (e.g., reasons for changes, references to issues, etc.).

Review and Approve the PR

  • Self-Review or Request Reviews.

Merge the Pull Request

  • Navigate to the PR you just created.
  • Click "Merge Pull Request".
  • Click "Confirm merge".

7. Test and Validate the Workflow

  • The workflow will trigger automatically once a push or merge is made. You can apply conditional logic to refine when it should run, ensuring it only triggers for specific events or branches.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

👋 Kindness is contagious

Immerse yourself in a wealth of knowledge with this piece, supported by the inclusive DEV Community—every developer, no matter where they are in their journey, is invited to contribute to our collective wisdom.

A simple “thank you” goes a long way—express your gratitude below in the comments!

Gathering insights enriches our journey on DEV and fortifies our community ties. Did you find this article valuable? Taking a moment to thank the author can have a significant impact.

Okay