So I made a bluesky-feed to filter all the posts made with the #wolqotd hashtag, making it only show actual questions. I don't want it to be a technological black-box though, so this page is a write-up on what the filter looks for, and also why I made it in the first place.
As a TLDR before you've even read it, the filter works by combining various simple and predictable checks with a Neural Network (NOT GenAI, PLEASE learn the difference, it's important.) (Actually I'll tell you one difference. The Neural Network can be trained and runs on my $10 laptop from 2014, while GenAI needs quite a lot more.)As long as your post:
1. Is actually a question
2. Has either the #wolqotd or #wolquestion tags
3. Is not reposting a post that also has one of those tags
4. Is not "What would your WoL's pokémon team be"
Then it should end up on the feed.
More specifically it works like this:STEP 1 - SOME SIMPLE CHECKS
Some simple checks are performed before even scoring the post (by scoring I mean figuring out how much it resembles a question). The post will be rejected early if:
- It's a reply to another post
- It's got five words or less (This removes posts that are essentially just the hashtags and nothing else.)
- It doesn't have either "#wolqotd" or "#wolquestion" in it
- It contains a banned phrase anywhere in the text (To catch potential racism, homophobia, etc.)
- It contains a specific banned standalone word (Let's say "ass" was a banned word. This would not reject a post with the word "assassin", just "ass". It's more lenient.)
- It's quoting a post which is also quoting a post (At that point it just takes up way too much space in the feed.)
- It's quoting a post which has a required hashtag, or is already in the feed (That means it's highly probable the post is just an answer to a question-post.)
- Any hashtag in the post contains "afterdark" (To avoid NSFW content, which I decided to do for this feed. Many people don't want to see those kinds of questions without specifically signing up for it.)
- It's been manually removed from the feed before (Since the feed can make wrong judgements, I don't want it re-adding posts after I remove them.)
- It's from an account that is banned (Bot accounts, spammers, or exceptionally unhinged people. The list is not long and I use this feature very very sparingly.)
STEP 2 - SCORE-BASED CHECKS
This is where the post is given a score between 0 and 1. 0 meaning the computer thinks it's not a question at all, 1 meaning it thinks it's purely a question. The scores will generally be laid out like this:0 - Answers, or posts that otherwise just mention the tag without posting a question.
0.15 - What I call "show me" posts. "Show me your wols with red hair!" and the like.
0.7 - Posts with a question followed by an answer. "Has your oc ever kissed anyone? For mine it's..."
1 - Posts with a question and nothing else.This score will then be adjusted based on other things about the post:
Account Bonus - Some people consistently post good questions, so I can give them a little bonus to nudge the filter in the right direction. I can also apply a slight penalty to people who tend to just post "show me" posts, for example. I try to keep these adjustments small, mostly ±0.1.
Quote Post Penalty - If it's a quote post I don't outright reject it, but I do give it a penalty (-0.3) since most quote posts are not questions. Some are though! And I want to see those.
Penalty Phrases - Some words indicate that it's likely the post isn't actually a question, like "not really a #wolqotd", and incurs a penalty depending on the phrase. That one is -0.3
Lore Hashtags - If a hashtag has "lore" in it, there's a -0.1 penalty. It's often used in answers.
Other Hashtag Penalty - Each hashtag that isn't #wolqotd or #wolquestion incurs a -0.1 penalty. This is because when people fill their post with hashtags it's usually either an answer or someone wanting a lot of attention. Some hashtags are exempt from this, like ones specific people always use in conjunction with the normal tags, or variants on the tag like #wolquestions or #xivqotd, etc.
STEP 3 - DONE :)
The score has been adjusted! The threshold for being let into the feed is 0.3, so not very high. But now posts that scored high to begin with should still have a score above that, even if they got many penalties. And posts that scored somewhere in the middle will have been pushed out if they got just a few. So the initial score is essentially a "how many rules can I break before the filter says no" score. Posts that actually contain a question pretty much always score above 0.3.
Back during the Twitter days I started developing my FFXIV characters more, writing lore and fleshing out their personalities, etc. A really good help for that was the #wolqotd hashtag, filled with what was essentially little writing-prompts. "How well can your OC handle Aetheryte Travel? How comfortable is it, how many times a day can they do it, are there side effects?". Things like that are excellent and help get me thinking. Why does my character feel uncomfortable teleporting? Let's say they have unnaturally low aether reserves, then what else does that affect? Why are their reserves that low, were they just born with it or did something happen?Unfortunately for me and the occasional other person who complained about it, people started posting their answers using the same hashtag. When searching for the tag, you'd see a question then people QRTing that question for the next day's worth of tweets. As someone who just wanted questions as writing-prompts, this was pretty annoying. A few people made attempts to get people to use the #wolqotdanswer tag for their answers, but it never went anywhere. Thank you to those people anyways :)This problem clearly did not go away with the great Bluesky migration of 2024, but it did offer a solution! And so it was that I ended up making this filter and setting up a feed for it.Another way you can ask "Why" is "Why did you make it when a feed like this already exists?" Actually when I started I had no idea about it, I didn't even think to check (oops). I first saw it when I already had a prototype up and running, but decided to keep going because this was before Bluesky officially added hashtags. A prominent question-poster who actually posted good questions just used the words "wolqotd" and "wolquestion", which the existing feed did not pick up on. So I made my original version look for just the words too, not the hashtags, and ended up making it a fully functioning thing. Today that person does use hashtags and my filter requires the post to have them (but I can turn that off), but it still has a major benefit over the other feed, at least in my eyes.Text is actually being evaluated. The other feed will (to my understanding) let anything through as long as it has the hashtag and isn't quoting anything. (I think there's some other criteria too maybe but I haven't figured out what exactly.) Because my filter can determine when the text isn't a question it will actually get rid of posts that the other feed wouldn't. It doesn't happen often but every now and again someone will just post something like "Here's my wol and their inspirations #wolqotd" completely on its own, which my feed would filter out because it would score too low. My feed also has drastically fewer "show me your ____ wols" posts, since, well, those aren't questions. I do stand by this decision for the purpose of making the feed only show what the hashtag is meant for (questions), but it does feel bad sometimes to see something like "show me your trans wols please" getting denied by the filter. I've made some exceptions and manually added posts like these a few times, like once during black history month I think and another where someone was just having a really awful day and wanted to see some wols really badly.
And since I made the feed primarily for my own use, having full control over how it works is certainly a bonus.In the end the filter has been really useful for me, and questions from the community have helped flesh out my characters so much. I think it's a really cool idea to do this and I'm glad #wolqotd exists. It's also been cool to see how many people actually like and use my feed! I hope it can help them like it helped me :)