Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Process workflows for blog and social #916

Merged
merged 4 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 53 additions & 6 deletions communication/blog.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Binary file added communication/images/blog-airtable-content.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added communication/images/blog-automated-issue.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added communication/images/social-airtable-content.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions communication/social.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,59 @@ Here are a few things to post:
We don't usually use social media to engage directly with other individuals or organizations, though it's not explicitly forbidden.
jnywong marked this conversation as resolved.
Show resolved Hide resolved
We just have not had the resources to plan for this kind of engagement.
jnywong marked this conversation as resolved.
Show resolved Hide resolved

(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)).
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)).
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/).
Expand All @@ -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.
Expand Down
Loading