Jerry Lee Lewis obituary SEO

How do you make a Slack bot that users of all levels can interact with and get insights from?

SEO is beyond a technical problem, it’s also a user experience problem

The inspiration for this project came from an editor who asked me in January “why did we lose out on this story?!”, when our outlet did not make page one of Google. So we made a Google Sheet and compared all of the available data we saw and realized there were very good reasons, the core information on the stories another newsroom had were better than ours. They were better in their titles, descriptions, and the important information in the story was placed higher than we had it. So then I thought, how could that be turned into a Slack message for our staff?

Even though it might feel overwhelming at times, one good piece of advice I got was that I should lean into the reasons why I wanted to do this fellowship. That advice has freed me to think more about how I want to build the end product, while also doing the product work of interviews and analysis. Leaning into this mindset has been a welcome adventure into appreciating how much I love product work. 

Comparing the 3 stories

Why I like bots

My first foray into learning code was writing bots. I wrote a test bot with many use cases, using plenty of API’s that I could find to help and one day someone in the newsroom asked me if they could have a preview of the breaking news email newsletter to copy edit and approve. About 2 minutes later, I was able to figure out how to parse the backend feed and display it in a Slack message for users.

Slack bot code

This was also my first product lesson, understanding that the use cases I thought people could use didn’t matter. The hookups to API’s weren’t the thing they were looking for – they were looking for something that could help them get their job done, reduce time and be more efficient. 

So that’s what I did. At first, the service was so popular I had to leave my computer running while I was gone on a week-long vacation. It was not soon after that it went to run as a service on a server. That service has been running for over 5 years now. It has survived through a refactoring to Python 3 and a recent refactoring to the Slack Bolt SDK framework. This is what that breaking news email alert looks like now.

Newsletter Robot

This is a case of the project informing my work. Before this project, this message was not using the full capabilities of the bolt framework. The Bolt framework is Slack’s latest framework for constructing messages, shortcuts and interactions using bots. This newsletter preview uses four different types of blocks to accomplish the message.

A screenshot of the Slack Block Kit Builder with a valid Newsletter preview JSON blocks
A screenshot of the Slack Block Kit Builder with a valid Newsletter preview JSON blocks

The new challenge is my fellowship project

The challenge to make messages for SEO is beyond just a technical problem, it’s also a user experience problem. How do you make a Slack bot that users of all levels can interact with and get insights from? What are the use cases people will need it for? 

I have definitely learned so far in conversations that there are many different levels of understanding when it comes to SEO. So as the ideas have spun out from research, I have started to experiment and prototype.

One of the things I want to try to accomplish: how do you give the core information someone wants, but then allow them to go deeper? Plus how can it scale to different newsrooms and their needs? 

I thought about the collection of Core Web Vitals data and how to make that more digestible. I have a prototype where if you add a slash command and a URL, it will give you a Core Web Vitals report. 

First by showing you the key scores in the five categories. And then I implemented some logic based on Slack’s button types and some emojis to display good scores (green) and bad scores (red).

BBC News

The buttons are a way to parse parts of the report at a glance. Clicking each will display the underlying Lighthouse report data and provide it in a message that provides context and insights. 

For example, if you press the “Performance” button, this report below would show up.

Beta Two

This was the first step, thinking about buttons and the experience, where I started to turn to thinking about best practices of what’s on the page.

Right now in my prototype, if you put /beta in the slack command and paste multiple URLs, it will scrape the page, grab its core elements, break it down to parts using natural language processing and eventually it will present you with some options. I have focused on making a prototype that looks at the h1 on a story, specifically whether the items in the h1 are also in the paragraphs of the story. 

Pulling the stories that inspired my idea for the project, the test would look like this. I plan to add more information on this page and buttons so users can go deeper on each item as needed. This is to get you that available information and then try to associate the strongest and most prevalent keywords with available search trend data.

Comparing the 4 stories

There’s still a lot for me to learn, like the h1 is just one field I have tested, but I have plenty of underlying data on a story, like every paragraph of text, title, description fields as well as other data items on the page. Using those I will take what can be done on the h1 in this test and apply it across the board.

Comparing the 3 stories

I am also still learning about what other things the Bolt framework has to offer and still exploring more. Up until a month ago I had never successfully pushed a button and had it display data. Now I have it displaying pieces of the Core Web Vitals report.

@app.action("description-click")
def handle_the_button(ack, body):
   ack()
   print(body)
   block = [{
           "type": "header",
           "block_id": "headerBlock",
           "text": {
               "type": "plain_text",
               "text": "You bleeping did it! This ephemeral message sent",
               "emoji": True
           }
       }]
   ephemeralSend(block,"You did click it!",body['user']['id'])

Once I got a button working, there is hardly a limit to what I can pass through, as long as you take advantage of all the parameters you can use.

How to be a part of my Slack bot testing

And that leads to now the true test of what can scale out of an experiment: testing time. 

There are still plenty of things I am working on, but I need feedback from users willing to test so I can get insights as I keep working. I have made a Slack workspace where you can come in and test it out and give me direct feedback.

You will be able to use the above commands in the slack space as well as new functionality as I add more to this tool.

Use this form to sign up and I’ll be in touch on how to add you to the workspace. I am also seeking out newsrooms who would be willing and able to test the bot in their workspaces.

Related Stories

Expand All Collapse All
Comments

Comments are closed.