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.
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
.
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
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
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
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.
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
An application profile folder is created in:
%%UserProfile%%\AppData\Roaming\endjin\stacker
Configuration is stored in:
%%UserProfile%%\AppData\Roaming\endjin\stacker\configuration\
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.
The NuGet packages for the project, hosted on NuGet.org are:
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.
This project is available under the Apache 2.0 open source license.
For any licensing questions, please email [email protected]
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.
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 [email protected] with any additional questions or comments.
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.