diff --git a/communication/blog.md b/communication/blog.md index 6660d10..cbadc92 100644 --- a/communication/blog.md +++ b/communication/blog.md @@ -24,12 +24,59 @@ Here are a few ideas for blog post topics for inspiration: - **Updates from the Managed JupyterHub Serivce**. As hub service infrastructure grows and evolves, and as we serve more communities with it, we should tell others about the impact we are having. - **Topic dives**. There may be particular topics that we want to write about, like open culture, cloud optimization, etc. These will help us crystallize our thoughts, demonstrate expertise, and share knowledge with others. -## Blog post checklist +## Schedule a blog post with AirTable -We have a blog post checklist that helps keep track of the major actions needed to post something and share it. -Click the button below to find it. +We use AirTable for systematically planning content and scheduling blog posts. The workflow is as follows: -```{button-link} https://github.com/2i2c-org/team-compass/issues/new?assignees=&labels=%3Alabel%3A+blog-post&template=blog-post.md&title=%5Bblog%5D+POST+WORKING+TITLE +1. A member of 2i2c has an idea for content and fills out an AirTable form to schedule a blog post. +1. The communications team reviews the form, then prioritizes and coordinates the work required for publication. +1. The communications team publishes the blog post, and shares it with the community via social media channels where appropriate (see [Social Media](social.md)). -Blog post issue template -``` +:::{warning} +Do not include sensitive information in the AirTable. Information will become public on our open-source, website GitHub repository when scheduling content. +::: + +(blog:airtable-form)= +### AirTable Form + +Use the form linked below to schedule new content pieces for [2i2c.org/blog](https://2i2c.org/blog). There is also the option to schedule a social media campaign along with the blog post – see [Social Media](social:scheduling) for more details on this workflow. + +:::{button-link} https://airtable.com/appM2L2x1uglMU0hy/pagy7CvM0msgqRCcA/form +:color: primary +Submit Your Content +::: + +### Scheduling blog posts + +Information collected from the [AirTable form](blog:airtable-form) is stored in the *Content* table of the [Content Planning and Scheduling](https://airtable.com/appM2L2x1uglMU0hy?ao=cmVjZW50) AirTable base that is used to prioritize content for publication, and coordinate the work for publication using [GitHub issues](https://github.com/2i2c-org/2i2c-org.github.io/issues) in our website repository. + +![AirTable Content table](images/blog-airtable-content.png) + +The *Content* table contains the following important fields the the communications team needs to pay attention to: + +- Publish Date +- Status +- Social media campaign? + +#### Publish Date + +A blog post may not initially have a publish date set. The communications team is responsible for using their judgment for scheduling posts based on perceived priority and determining availability of authors where required. + +#### Status + +There are 4 possible states: {bdg-secondary}`Unplanned` (default), {bdg-primary}`Scheduled`, {bdg-success}`Published` and {bdg-danger}`Cancelled`. + +When a blog post is ready to be authored, it should be marked as {bdg-primary}`Scheduled`. This triggers an AirTable automation that opens a [GitHub issue](https://github.com/2i2c-org/2i2c-org.github.io/issues) in our website repository to track work (see [example issue](https://github.com/2i2c-org/2i2c-org.github.io/issues/318)). Once the work is completed, the communications team can mark the item as {bdg-success}`Published`. + +:::{figure} images/blog-automated-issue.png +:alt: Automated GitHub issue +An example of an automated GitHub issue triggered from setting the {bdg-primary}`Scheduled` status. +::: + +#### Social Media Campaign? + +The form includes an option to schedule a social media campaign to promote the blog post. This may initially be left unchecked. If the box is checked and the *Social media campaign date* is specified, then this triggers an AirTable automation to populate the *Campaigns* table. See [Scheduling social media campaigns](social:scheduling) for more information. + +#### Other fields + +The AirTable form is designed to be as low-touch as possible so that the submitter does not need to fill out a lot of information. However, there are some other fields in the *Content* table, such as *Tags*, *Categories*, *People*, *Affiliations* and *Open Source Software*, that the Communications team may want to populate on their behalf based on information provided in the mandatory *Notes* field. \ No newline at end of file diff --git a/communication/images/blog-airtable-content.png b/communication/images/blog-airtable-content.png new file mode 100644 index 0000000..3e15830 Binary files /dev/null and b/communication/images/blog-airtable-content.png differ diff --git a/communication/images/blog-automated-issue.png b/communication/images/blog-automated-issue.png new file mode 100644 index 0000000..49ec2d5 Binary files /dev/null and b/communication/images/blog-automated-issue.png differ diff --git a/communication/images/social-airtable-campaigns.png b/communication/images/social-airtable-campaigns.png new file mode 100644 index 0000000..b0ef80a Binary files /dev/null and b/communication/images/social-airtable-campaigns.png differ diff --git a/communication/images/social-airtable-content.png b/communication/images/social-airtable-content.png new file mode 100644 index 0000000..e4f8c1f Binary files /dev/null and b/communication/images/social-airtable-content.png differ diff --git a/communication/social.md b/communication/social.md index f35828e..c7c63b4 100644 --- a/communication/social.md +++ b/communication/social.md @@ -14,9 +14,46 @@ Here are a few things to post: - Advertising job posts and other items we want to draw attention to - Re-tweeting and boosting other team members and their accounts -We don't usually use social media to engage directly with other individuals or organizations, though it's not explicitly forbidden. -We just have not had the resources to plan for this kind of engagement. +We don't usually use 2i2c's social media accounts to engage directly with other individuals or organizations, though we encourage individual team members to interact as themselves. +We have not had the resources to plan extensive social engagement as an organization. +(social:scheduling)= +## Scheduling social media campaigns with AirTable + +A social media campaign can be optionally scheduled via the [AirTable Form](blog:airtable-form) to submit content, or the communications team can manually schedule campaigns according to perceived priority. This is scheduled in the *Content* table of the [Content Planning and Scheduling](https://airtable.com/appM2L2x1uglMU0hy?ao=cmVjZW50) AirTable base by checking a box in the *Social media campaign?* field and specifying a *Social media campaign date*. + +:::{figure} images/social-airtable-content.png +:alt: Content table with focus on social media fields. +The *Content* table showing the social media fields. +::: + +This triggers an AirTable automation to populate the *Campaigns* table, with a row per social media channel ([Twitter](social:twitter), [Mastodon](social:mastodon) and [LinkedIn](social:linkedin)) for each content piece. + +:::{figure} images/social-airtable-campaigns.png +:alt: Campaigns table. +The *Campaigns* table automatically populated with 3 social media channels per content piece. +::: + +The *Campaigns* table contains the following important fields the the communications team needs to pay attention to: + +- Status +- URL + +### Status + +There are 4 possible states: {bdg-secondary}`Unplanned` (default), {bdg-muted}`Planned`, {bdg-primary}`Scheduled`, and {bdg-success}`Published`. The workflow is as follows: + +- When a social media campaign is ready to be executed, it should be marked as {bdg-primary}`Planned`. +- This triggers an AirTable automation that opens a [GitHub issue](https://github.com/2i2c-org/2i2c-org.github.io/issues) in our website repository to track work to schedule on [Buffer](social:buffer). +- Once the post is scheduled, the status can be changed to {bdg-primary}`Scheduled`. +- Once the social media post is published, the communications team should mark the item as {bdg-success}`Published` and proceed to update the [URL](social:url) field. + +(social:url)= +### URL + +For the purposes of tracking metrics, links to the public social media posts should be recorded in this field for future reference. + +(social:twitter)= ## Twitter Our Twitter handle is ([@2i2c_org](https://twitter.com/2i2c_org)). @@ -24,6 +61,7 @@ Currently, there is nobody actively monitoring the Twitter account. **How to access**: See [](account:bitwarden). +(social:mastodon)= ## Mastodon Our Mastodon handle is ([@2i2c_org](https://hachyderm.io/@2i2c_org)). @@ -31,6 +69,7 @@ Currently, there is nobody actively monitoring the Mastodon account. **How to access**: See [](account:bitwarden). +(social:linkedin)= ## LinkedIn Here is [our LinkedIn page](https://www.linkedin.com/company/70495902/). @@ -39,6 +78,7 @@ We use LinkedIn roughly the same way that we use Twitter, though focus it more o **How to access**: We can add **page admins** to our LinkedIn account, which gives others the ability to manage the account and post content. If you'd like to be added, ask one of [the pre-existing account admins](https://www.linkedin.com/company/70495902/admin/manage-admins/). +(social:buffer)= ## Buffer This is a productivity tool for posting across our Twitter, Mastodon and LinkedIn channels simultaneously and scheduling social media campaigns with a content calendar.