How to Find and Analyze Trends on Farcaster
Find and track trending users, channels, and topics with this new dashboard
New to Farcaster? Learn the basics first:
🎧 If you prefer a live walkthrough, check out the video above
What Open Social Data Enables
This is the first time in history that three datasets have come together in the open:
High quality user transaction data (blockchain data)
High quality social graph data (profiles, followers, and actions)
Verified linkage of addresses (user X owns wallets A,B,C)
And on top of that, these datasets have come together in a vertically integrated data stack (Neynar for Farcaster data, and Dune for onchain data) that is open for everyone to use.
Doing the equivalent with reddit, twitter, plaid, and stripe data would take hundreds of thousands of dollars to scrape and build data infra for. This leads to a concentration of data wealth and product in the hands of a select few companies (those overflowing with money and connections).
I’ve built a dashboard that combines the three datasets above and showcases some basic clustering and trends across words, users, and channels.
📊 Farcaster Trends Explorer Dashboard
⚙Contribute to the methodology in the dashboard GitHub repo
🔔Use our Farcaster query templates and set some Slack/Discord alerts
Let’s walk through the kinds of trends and analysis you can kickoff from here.
Words and Topics
Most people have seen screenshots from google trends before. You get to put in any word and see the interest/performance over time:
Here’s a simple example of week over week “word” trends on Farcaster, week over week:
Some column definitions:
Word: each word is isolated from every cast in the last 14 days
Casters: number of users who included a given word in their cast
TF: term frequency, or number of times this word appeared in casts.
IDF: inverse document frequency - basically the higher this is, the more unique the word is. I used each caster as a “document”, so in this context a higher IDF means it was cast by less people.
TF-IDF: the multiplication between frequency and uniqueness measures
You can immediately get a high quality view of what’s trending in the Farcaster ecosystem, with a single SQL query. This query is easily extensible to filter for trending words on a subset of users or channels, and for you to apply your own measurements on top.
Now, you’ll also notice that I filtered on casts only from “active badge” users. Let’s get into how I labeled users next.
User Labels and Trends
Okay, let’s take it to the next level now. I want to be able to identify the quality of a user and then rank users based on age, Farcaster activity, and onchain activity. For this dashboard, I came up with the following five tiers:
🤖 npc: Less than 400 followers
🥉 active: 400+ followers, 1+ casts, 100+ engagement score
🥈 star: 1k+ followers, 5+ casts, 5k+ engagement score
🥇 influencer: 10k+ followers, 10+ casts, 25k+ engagement score
💎 vip: 50k+ followers, 10+ casts, 50k+ engagement score
Where engagement score is [likes + recasts*3 + replies*10]
and only “received (R)” actions are counted to this score. It’s likely you could use actions “given” as part of user tiering too, but just measuring casts felt good enough to me for a basic model.
Out of 83k users who sent a cast in the last 14 days, about 3k of them are higher quality users. With this in mind, we can create a leaderboard of these users:
I can not only see that are Dan (dwr) and Vitalik the top followed users on the platform, but also that Vitalik is active in the “geopolitics” channel and mainly shares either his own blogs (vitalik.eth.limo) or github links, and that Dan has been very active in deploying contracts (198 contracts deployed).
Let me cover some of the more complex column definitions:
Channels: This is the number of channels that a user casted in (over the last 14 days)
Top Channels: These are the top three channel-ids that a user casted in, ranked by number of user casts in them.
Top Domains: These are the top three domains found in links that a user casted, ranked by number of times the domain appears
Txs, Volume, Contract Deploys: These are the all-time totals across all verified addresses, across all EVM chains that Dune currently covers.
Now, what if I want to add filters to see trending users based on some criteria? For example “show me the trending users based on engagement that @jessepollak has followed, who are less than 7 days old.” This will then give me a list of users that I might consider as the “potential new builders on Base”.
You’ll see there are also “user channel filter” and “held token address” filters there too. That means that I could filter for trending users in only a given channel, or trending users who have ever held the Nouns token. The possible combinations here are endless, I’ve only added six parameters that I thought were useful - but you can fork the query and add your own!
Channel Labels and Trends
Channels are like “subreddits”, where they have followers who cast inside them and hosts who manage the channel. I’ve created five tiers of channels:
💤 quiet: less than 5 casts and less than 50 engagement score
🍻 friends: 5+ casts, 50+ engagement score
🔍 niche: 25+ casts, 5,000+ engagement score, 100+ casters
🎭 subculture: 100+ casts, 25,000+ engagement score, 50+ rising stars and 2+ influencers/vips
👑 stadium: 250+ casts, 100,000+ engagement score, 10+ influencers/vips
The idea here is that by combining user tiers and channel tiers, you can get a much better sense of which channels are high signal. Let’s start off with an all active channels ranking:
I’ve sorted by “engagement” here, and you’ll notice that not all high engagement channels are “stadiums”. This is because there are plenty of channels with a large concentration of “npc” or “active” users, but not many “star”, “influencer”, or “vip” users. I still consider these to be pretty niche.
Covering some column definitions again:
Top Influential Casters: These are the top three influencer/vip tier users, ordered by number of casts in channel in the last 14 days
🤖,🥉,🥈 ,🥇 ,💎: The emojis in the table match up with the emojis I used for user tiers. This measures the number of users in a tier who sent a cast in the last week in that channel
Avg Txs, Volume, Contract Deploys: I took the average of these onchain metrics across all users with at least one transaction (columns are on the far right). I think there is still more work to be done here to make this a strong channel signal.
So for the trending view, I might want to see which channels are under 7 days old but have the highest number of “influencers” actively casting in them:
I quickly find that there are a bunch of niche channels like “superbowl”, “donothing”, and “consumercrypto” that seem to be popular with influencers but not have that much engagement or other users in there yet. I could use this information to try and join channels early, to grow my own account and relationships.
You can also filter by trending channels given a “username filter”, i.e. what are the trending channels Vitalik is a part of. Or filter based on “channel held token address”, which if you put in Nouns would show you channels trending amongst Nouns holders.
📊 Farcaster Trends Explorer Dashboard
⚙Contribute to the methodology in the dashboard GitHub repo
🔔Use our Farcaster query templates and set some Slack/Discord alerts
The tip of the social data iceberg
This dashboard is fundamentally three different queries that aim to build up a much stronger base for everyone to build social analysis with. Again, you can fork and build off of any of these queries yourself, or use them as endpoints in the Dune API to build your own external applications.
I’m on Warpcast if you want to follow me for more insights, and my DMs are always open to bounce ideas and answer questions.
I’m also building an onchain crypto data community called the Bytexplorers. We’re building out some Farcaster specific initiatives like the ByteLight token, and would love to have more people participate with us.