Skip to content
/ Stacker Public

A .NET Global Tool for automating marketing content across social channels.

License

Notifications You must be signed in to change notification settings

endjin/Stacker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stacker

A .NET Global Tool for automating marketing content across social channels. It supports extracting content from Vellum and then republishing via Buffer to Twitter, Mastodon, Facebook & LinkedIn, with automatically generated leader copy.

Prerequisites

stacker uses Pandoc for WordPress export functionality, to convert from wordpress to markdown. You will need to install Pandoc and add it to the PATH or use winget install JohnMacFarlane.Pandoc.

Installation

stacker is a .NET global tool, which means once installed, it's available on the PATH of your machine.

To list all the global tools installed on your machine, open a command prompt and type:

dotnet tool list -g

To install the stacker global tool use the following command:

dotnet tool install -g stacker

Then use stacker environment init to create a default StackerSettings.json file with placeholder values in %%UserProfile%%\AppData\Roaming\endjin\stacker\configuration.

To install a specific version, use:

dotnet tool install -g stacker --version <version-number>

To update to the latest version of the tool, use:

dotnet tool update -g stacker

To uninstall the tool, use:

dotnet tool uninstall -g stacker

Commands

Here are some usage examples:

stacker linkedin buffer -c c:\temp\content.json -n endjin

stacker facebook buffer -c c:\temp\content.json -n endjin

stacker twitter buffer -c c:\temp\content.json -n endjin
stacker twitter buffer -c c:\temp\content.json -n endjin --item-count 10
stacker twitter buffer -c c:\temp\content.json -n endjin --publication-period ThisMonth
stacker twitter buffer -c c:\temp\content.json -n endjin --filter-by-tag "MicrosoftFabric" --what-if
stacker twitter buffer -c c:\temp\content.json -n endjin --from-date "2023/06/01" --to-date "2023/06/30"
stacker twitter buffer -c c:\temp\content.json -n endjin --filter-by-tag "PowerBI" --from-date "2023/06/01" --to-date "2023/06/30"

stacker environment init

stacker wordpress export markdown -w C:\temp\wordpress-export.xml -o C:\Temp\Blog
stacker wordpress export universal -w C:\temp\wordpress-export.xml -o C:\Temp\Blog\export.json

Buffer commands

stacker twitter buffer - Upload content items into buffer for the specified Twitter profile.

stacker linkedin buffer - Upload content items into buffer for the specified LinkedIn profile.

stacker facebook buffer - Upload content items into buffer for the specified Facebook profile.

The buffer command also takes the following options to filter the content items to be buffered.

OPTIONS:
    -h, --help                  Prints help information
    -c, --content-file-path     Content file path
    -n, --profile-name          Buffer channel profile (e.g. twitter, linkedin, facebook) name (e.g. endjin, azureweekly, powerbiweekly)
    -g, --filter-by-tag         Tag to filter the content items by
    -i, --item-count            Number of content items to buffer. If omitted all content is buffered
    -p, --publication-period    Publication period to filter content items by. <LastMonth|LastWeek|LastYear|None|ThisMonth|ThisWeek|ThisYear> If specified --from-date and --to-date are ignored
    -f, --from-date             Include content items published on, or after this date. Use YYYY/MM/DD Format. If omitted DateTime.MinValue is used
    -t, --to-date               Include content items published on, or before this date. Use YYYY/MM/DD Format. If omitted DateTime.MaxValue is used
    -w, --what-if               See what the command would do without submitting the content to Buffer

WordPress commands

stacker wordpress - Interact with WordPress. Root command for WordPress operations. Will list available sub-commands.

stacker wordpress export universal - Exports blog posts from WordPress into a reusable format suitable for publishing across social channels.

wordpress export markdown - Exports blog posts from WordPress and converts them into Markdown. Various clean up routes are also run.

Environment commands

stacker environment - Manipulate the stacker environment. Root command for environment operations. Will list available sub-commands.

stacker environment init - Initialises the stacker environment. Writes a default StackerSettings.json file with placeholder values to %%UserProfile%%\AppData\Roaming\endjin\stacker\configuration

System Details

An application profile folder is created in:

%%UserProfile%%\AppData\Roaming\endjin\stacker

Configuration is stored in:

%%UserProfile%%\AppData\Roaming\endjin\stacker\configuration\

DevOps

The project is built using GitHub Actions using Endjin.RecommendedPractices.Build and Endjin.RecommendedPractices.GitHubActions. Solution-level Engineering Practices are enforced using Endjin.RecommendedPractices.NuGet.

Packages

The NuGet packages for the project, hosted on NuGet.org are:

WordPress

Stacker supports filtering of blog posts via WordPress Custom Fields.

stacker_promote true | false - states whether Stacker should promote. If this field is missing, Stacker will automatically include it.

stacker_promote_until YYYY-MM-DD - states the date at which Stacker should stop including the post. This is for use cases around events which have no re-posting value.

Hastags are generated from WordPress Tags associated with each post.

The Excerpt custom field is used to provide the content summary when publishing to Facebook or LinkedIn.

Licenses

GitHub license

This project is available under the Apache 2.0 open source license.

For any licensing questions, please email licensing@endjin.com

Project Sponsor

This project is sponsored by endjin, a fully remote UK based Technology Consultancy which specializes in Data, AI, DevOps & Cloud, and is a .NET Foundation Corporate Sponsor.

We help small teams achieve big things.

We produce two free weekly newsletters:

  • Azure Weekly for all things about the Microsoft Azure Platform
  • Power BI Weekly for all things Power BI, Microsoft Fabric, and Azure Synapse Analytics

Keep up with everything that's going on at endjin via our blog, follow us on Twitter, YouTube or LinkedIn.

We have become the maintainers of a number of popular .NET Open Source Projects:

And we have over 50 Open Source projects of our own, spread across the following GitHub Orgs:

And the DevOps tooling we have created for managing all these projects is available on the PowerShell Gallery.

For more information about our consulting services, please contact us.

Code of conduct

This project has adopted a code of conduct adapted from the Contributor Covenant to clarify expected behaviour in our community. This code of conduct has been adopted by many other projects. For more information see the Code of Conduct FAQ or contact hello@endjin.com with any additional questions or comments.

IP Maturity Model (IMM)

The IP Maturity Model is endjin's IP quality framework; it defines a configurable set of rules, which are committed into the root of a repo, and a Azure Function HttpTrigger which can evaluate the ruleset, and render an svg badge for display in repo's readme.md.

This approach is based on our 10+ years experience of delivering complex, high performance, bleeding-edge projects, and due diligence assessments of 3rd party systems. For detailed information about the ruleset see the IP Maturity Model repo.

IMM for stacker

Shared Engineering Standards

Coding Standards

Executable Specifications

Code Coverage

Benchmarks

Reference Documentation

Design & Implementation Documentation

How-to Documentation

Date of Last IP Review

Framework Version

Associated Work Items

Source Code Availability

License

Production Use

Insights

Packaging

Deployment

OpenChain