# Stream Insights Specs Stream Insights metrics specifications. ## <p style="text-align: center;">Overview of Stream Insights</p> ![Overview Levels](https://i.imgur.com/sNc9tlv.png) <p style="text-align: center;">Overview of Stream Insights</p> ## Feature Overview - Prospecting/Channels - Search - Tags - Genres - Games - Themes - Channels - Publishers - Tournament(?) - Keywords(?) - Stream consistency - Sporadic - Regular - Dedicated - Platform - Twitch - YouTube - Facebook - Channel status - Maturity - Partner status - Sliders - Followers slider - CCV slider - Slider graphs - Date picker - 7/14/30/90/365d filter - Custom date picker - Set week date picker - List/preset picker - Shortlist import - Data summary Metrics Metrics graphs Visualization of % - Results list Metrics Sortering Action Bulk action "Shortlists" Saved filter-list Saved influencers-list Notifications Push notifications functionality Lurkit Push notification Channel view Stream post data Games list fyll gärna på i denna chat med features för MVP stream insights så jag kan lägga in dom i sheets ## Terms and definitions <details> <summary><strong>Terms and definitions</strong></summary> **** - **(Current) period**: The time period between "from" and "to" dates, for example last week, or last month **** - **Compare period**: Period of same length directly preceding the current period **** - **Granularity**: Time step in the period, eg hour, day, month **** - **Data point**: Every graph data point in the time period, the length of which is of size granuality - A data point represents an interval of time: `dataPoint.start <= t < dataPoint.end` - A timestamp is used to point to a data point: `dataPoint.start = timestamp of the datapoint` - `dataPoint.start` is always at the start of every granularity period (hour/day/week/month/etc) - `dataPoint.end = dataPoint.start + granularity` - **Example:** Followers graph with granuality of an hour: - Data point `2020-05-01T10:00:00Z` represents how many followers there was at "the hour 10". Which for followers is the last value we have in that hour. - **Note** that this is *not* the followers value that we have at `10:00:00`, but instead at `10:59:59.999`. **** - **Sample**: Reading of current live data from the external API source **** - **Streaming platform**: Streaming platform, including: Twitch, YouTube Live, Facebook Gaming. **** - **Platform**: Device used to play games and stream, e.g. PC, Mobile and/or consoles such as PlayStation, Xbox, Nintendo Switch etc. **** - **Channel**: Streaming channel on one or multiple platforms. Channels can be ran by one or more individuals, and include competitive and non-competitive gaming and non-gaming related content **** - **Genre**: A specific style of games or streaming content, e.g. Shooter, MMORPG, MOBA **** - **Tags**: Twitch/IGDB terminology for genres **** - **Games**: Game of choice streamed, not limited to one per stream **** - **Primary language**: Most commonly used language of a stream **** - **Airtime**: Hours streamed per channel **** - **CCV - Concurrent Viewers** - Viewer count at any given point in time during a live stream **** - **Publisher/Developer**: Publisher and/or developer of the streamed game **** - **Partner status**: Twitch Partner status, boolean value **** - **Streamer Workload**: - Sporadic vs. regular vs. dedicated - hours spent streaming per week on average, ***TBD*** **** - **Slider**: - </details> ### Business terms and definitions <details> <summary><strong>Business terms and definitions</strong></summary> **** - **Trends**: General direction of developments in the market **** - **Comparison**: Feature allowing plotting of data against previous periods and/or other types of data. E.g.: (Average CCV of MOBA genre during May 2020 vs July 2020) (Average channels live during July 2020 playing game made by Electronic Arts vs games made by Ubisoft) _Expressions examples:_ - Y-o-Y (Year-over-Year): comparing two or more measurable events on an annualized basis - M-o-M (Month-over-Month): comparing two or more measurable events on a monthly basis - W-o-W (Week-over-Week): comparing two or more measurable events on a weekly basis **** - **Forecast/Forecasting**: Prediction and/or estimate of market movements and trends **** - **Macro-level**: level of analysis looking at large-scale market processes **** - **Micro-level**: level of analysis looking at small-scale market processes **** - **KPI**: Key Performance Indicator: a measurable value that demonstrates how effectively the market is achieving key business objectives **** - **Insights**: - Description of a discovery or prediction based on data. Concise synthesis highlighting relevant data **** - **Streaming Market Share**: A streaming platforms share of the concerned market, _E.g._: "This gave it a market share of 65%, with YouTube’s 1.1 billion hours the greatest challenge to Twitch’s 3.1 billion hours." _Example markets:_ - Esports: esports market - GVC: Gaming Video Content market - IRL: streaming genre, non-gaming related - Music: streaming genre, non-gaming related - Mobile: streaming type, gaming and non-gaming related **** </details> ## Resources ### API - [Twitch API](https://dev.twitch.tv/docs/api/reference) - [YouTube API](https://developers.google.com/youtube/v3/live/getting-started) - [Facebook API](https://developers.facebook.com/docs/live-video-api/reference) - [IGDB API](https://api-docs.igdb.com/) ### Other - [Mural whiteboard reference](https://app.mural.co/t/lurkit5822/m/lurkit5822/1587451846641/24d5286926e8eb81744bbda94e50618e7253a225) - [Prio/risk-matrix](https://docs.google.com/spreadsheets/d/1tKHIIJCUQYfIf22RUBlUh3ulsXJ9OQEqx8Hk8QNi_SQ/edit#gid=1365977548) ## Research - Chat message count + Logged-in viewers - % Active following etc - Viable engagement metric? - % Active chat - % Core viewerbase retention? - Legal research, bots to do ^ - Push notifications for lists - tex för "shortlist", prompta efter kund skapat lista, "vill du ha uppdateringar när det händer X eller Y (streamer har fått över 10k followers, metric som indikerar growth har gått upp or w/e)" "notifiera mig om nya kanaler har tillkommit i min sparade filtrering" - Shortlists - spara sökningar? Om vi använder "shortlists" - hur differentierar vi detta från "whitelists" i kampanjkontext? - [VoD iframe?](https://twitchtracker.com/michi/streams/180368898) - Navigering, hur tar man sig tillbaks? Breadcrumbs? Pil back? Modal? Modal på modal? Syftet är att kund inte ska behöva öppna massa extra tabbar för att förlora sitt sökresultat/sortering - Söka på creator + spel (eller två spel), hur göra? - Vid sök på tex LoL + Fortnite så kommer alla kanaler som har spelat dessa spel under den valda tidsperioden upp, med full kanaldata(?) - Primary game?![](https://i.imgur.com/VguL32A.png) - Download the first X results (Streamhatchet kör 10k) - Checkbox(?) för filtrera på game/genre specific data vs channel data - Genre data on selected channel view? - Fråga kund: Hur använder ni resultatet av sökningen? En eller flera actions? UX tex. Gmail? - Hur ser freemium för prospecting ut visuellt (ink CTA etc) - Filtrera på alla plattformar samtidigt? - Game filter placering? - Kan vi börja labba med speldata när det är kvar i Azure? Eller måste det över till IBM (-> även byta video feed) - Modda stream export för att få med data för alla kanaler? - Exclude channels during prospecting - Data summary shoould match columns? - Intreserade av att veta vad creators streamade innan - hur replace sin airtime? - Airtime pie chart breakdown comparison - vilken typ av graf? - Funnel GameFollowers>GameViewers>ClipsCreated|ChannelFollows? - Team stream analytics - **INSIGHTS** - Facebook comments på game/dev page - sentiment/text analysis? - Contact and social - Steamspy integration - Steam integration for creators - Text analysis - publishers read ~10 reviews/day, text analysis would create more value for games with huge traction - Social Media overview? (brand value) - Aggregera player feedback ## Metrics - Channel (Prospecting Overview) Metrics aggregated for every channel, as per filtered, during the current (selected?) period. | Variable | Description | Comments | |:-------------:|:--------------------------------------------------------------------------------:|:-------------------------------------------------:| | Creator name | Main streaming platform name + streaming platform logo | Clicking creator name opens detailed channel view | | Games | List of games streamed by channel, filtered based on channel airtime | | | Genres | List of genres streamed by channel, filtered based on content type/games airtime | | | Peak CCV | Highest concurrent viewer count for channel during filtered period | | | Avg. CCV | | | | Hours watched | | | | Followers | | | | Views | | | | Airtime | | | | Action | | | <details> <summary><strong>Channel metrics formulas</strong></Summary> - Followers: - KPI#: `followers[period.end]` - KPI compare#: `followers[period.end] - followers[comparePeriod.end]` - Graph data point: `followers[dataPoint.end]` - Followers gained: - KPI#: `followers[period.end] - followers[comparePeriod.end]` - KPI compare#: `(followers[period.end] - followers[period.start]) - (followers[comparePeriod.end] - followers[comparePeriod.start])` - Graph data point: `followers[dataPoint.end] - followers[previousDataPoint.end]` - Views: - KPI#: Total number of channel views at the end of the current period: `channelViews[period.end]` - KPI compare#: `channelViews[period.end] - channelViews[previousPeriod.end]` - Graph data point: `views[dataPoint.end]` - Views gained: - KPI#: `channelViews[period.end] - channelViews[comparePeriod.end]` - KPI compare#: `(channelViews[period.end] - channelViews[period.start]) - (channelViews[comparePeriod.end] - channelViews[comparePeriod.start])` - Graph data point: `channelViews[dataPoint.end] - channelViews[previousDataPoint.end]` - Peak Channel Count: - KPI#: `max(currentPeriod(sample.channels))` (for genre during period) - KPI compare#: `KPI#(currentPeriod) - KPI#(comparePeriod)` - Graph data point: `max(sample[dataPointPeriod].viewers)` - Peak CCV: - KPI#: `max(currentPeriod(sample.viewers))` - KPI compare#: `KPI#(currentPeriod) - KPI#(comparePeriod)` - Graph data point: `max(sample[dataPointPeriod].viewers)` - Average CCV: Per live streaming occasion - KPI#: `sum(currentPeriod(sample.viewers)) / currentPeriod(numberOfSamplesWithLiveStream)` - KPI compare#: `KPI#(currentPeriod) - KPI#(comparePeriod)` - Graph data point: `sum(sample.viewers) / numberOfSamplesWithLiveStream` - Minutes/hours watched: - **TODO**: Triangel/linje approximering! - Om det är ett avbrott i våran data, anta att streamen pågår i max 60 min. - KPI#: `sum(currentPeriod: sample[n].viewers * min(minutes(sample[n+1].timestamp - sample[n].timestamp), 20) )` - KPI compare#: `KPI#(currentPeriod) - KPI#(comparePeriod)` - KPI compare%: `KPI#(currentPeriod) / KPI#(comparePeriod) - 1` - If `KPI#(comparePeriod)` is 0, do not show compare % number. - Graph data point: `TODO!` - Schedule: Number of new streams per week day (UTC, Monday to Sunday) during the period. As today, no change. - Average airtime per day: - KPI#: `streamMinutes / days` (for channel during period) - Format: `HH:MM` - Average minutes watched per stream: - KPI#: `minutesWatchedDuringPeriod / numberOfStreams` (for channel during period) - Format: `HH:MM` - Total games streamed: - KPI#: Number of unique games streamed per channel during the period - Average CCV per stream: - KPI#: `sum(stream.averageViewers) / numberOfStreams` (for channel during period) - Average airtime (hours): - KPI#: `sum(stream.durationMin) / numberOfStreams` (for channel during period) - Format: `HH:MM` </details> ## Metrics - Games Metrics aggregated for every channel, as per filtered, during the current (selected?) period. <details> <summary><strong>Games metrics formulas</strong></Summary> **Filters** - Games played - List of all games played during the period - Title: - First title of the stream - Peak CCV: - KPI#: `max(sample.viewers)` - Average CCV: - KPI#: `avg(sample.viewers)` - Minutes watched - KPI#: **TODO** (as above) - Duration - The length of the stream - Format: `HH:MM` - Game played - List of all games played during the stream **Metrics** - Followers: - KPI#: `followers[period.end]` - KPI compare#: `followers[period.end] - followers[comparePeriod.end]` - Graph data point: `followers[dataPoint.end]` - Followers gained: - KPI#: `followers[period.end] - followers[comparePeriod.end]` - KPI compare#: `(followers[period.end] - followers[period.start]) - (followers[comparePeriod.end] - followers[comparePeriod.start])` - Graph data point: `followers[dataPoint.end] - followers[previousDataPoint.end]` - Views: - KPI#: Total number of channel views at the end of the current period: `channelViews[period.end]` - KPI compare#: `channelViews[period.end] - channelViews[previousPeriod.end]` - Graph data point: `views[dataPoint.end]` - Views gained: - KPI#: `channelViews[period.end] - channelViews[comparePeriod.end]` - KPI compare#: `(channelViews[period.end] - channelViews[period.start]) - (channelViews[comparePeriod.end] - channelViews[comparePeriod.start])` - Graph data point: `channelViews[dataPoint.end] - channelViews[previousDataPoint.end]` - Peak Channel Count: - KPI#: `max(currentPeriod(sample.channels))` (for genre during period) - KPI compare#: `KPI#(currentPeriod) - KPI#(comparePeriod)` - Graph data point: `max(sample[dataPointPeriod].viewers)` - Peak CCV: - KPI#: `max(currentPeriod(sample.viewers))` - KPI compare#: `KPI#(currentPeriod) - KPI#(comparePeriod)` - Graph data point: `max(sample[dataPointPeriod].viewers)` - Average CCV: Per live streaming occasion - KPI#: `sum(currentPeriod(sample.viewers)) / currentPeriod(numberOfSamplesWithLiveStream)` - KPI compare#: `KPI#(currentPeriod) - KPI#(comparePeriod)` - Graph data point: `sum(sample.viewers) / numberOfSamplesWithLiveStream` - Minutes/hours watched: - **TODO**: Triangel/linje approximering! - Om det är ett avbrott i våran data, anta att streamen pågår i max 60 min. - KPI#: `sum(currentPeriod: sample[n].viewers * min(minutes(sample[n+1].timestamp - sample[n].timestamp), 20) )` - KPI compare#: `KPI#(currentPeriod) - KPI#(comparePeriod)` - KPI compare%: `KPI#(currentPeriod) / KPI#(comparePeriod) - 1` - If `KPI#(comparePeriod)` is 0, do not show compare % number. - Graph data point: `TODO!` - Schedule: Number of new streams per week day (UTC, Monday to Sunday) during the period. As today, no change. - Average airtime per day: - KPI#: `streamMinutes / days` (for channel during period) - Format: `HH:MM` - Average minutes watched per stream: - KPI#: `minutesWatchedDuringPeriod / numberOfStreams` (for channel during period) - Format: `HH:MM` - Total games streamed: - KPI#: Number of unique games streamed per channel during the period - Average CCV per stream: - KPI#: `sum(stream.averageViewers) / numberOfStreams` (for channel during period) - Average airtime (hours): - KPI#: `sum(stream.durationMin) / numberOfStreams` (for channel during period) - Format: `HH:MM` </details> ## Metrics - Genres Metrics aggregated for every channel, as per filtered, during the current (selected?) period. <details> <summary><strong>Genre metrics formulas</strong></Summary> - Followers: - KPI#: `followers[period.end]` - KPI compare#: `followers[period.end] - followers[comparePeriod.end]` - Graph data point: `followers[dataPoint.end]` - Followers gained: - KPI#: `followers[period.end] - followers[comparePeriod.end]` - KPI compare#: `(followers[period.end] - followers[period.start]) - (followers[comparePeriod.end] - followers[comparePeriod.start])` - Graph data point: `followers[dataPoint.end] - followers[previousDataPoint.end]` - Views: - KPI#: Total number of channel views at the end of the current period: `channelViews[period.end]` - KPI compare#: `channelViews[period.end] - channelViews[previousPeriod.end]` - Graph data point: `views[dataPoint.end]` - Views gained: - KPI#: `channelViews[period.end] - channelViews[comparePeriod.end]` - KPI compare#: `(channelViews[period.end] - channelViews[period.start]) - (channelViews[comparePeriod.end] - channelViews[comparePeriod.start])` - Graph data point: `channelViews[dataPoint.end] - channelViews[previousDataPoint.end]` - Peak Channel Count: - KPI#: `max(currentPeriod(sample.channels))` (for genre during period) - KPI compare#: `KPI#(currentPeriod) - KPI#(comparePeriod)` - Graph data point: `max(sample[dataPointPeriod].viewers)` - Peak CCV: - KPI#: `max(currentPeriod(sample.viewers))` - KPI compare#: `KPI#(currentPeriod) - KPI#(comparePeriod)` - Graph data point: `max(sample[dataPointPeriod].viewers)` - Average CCV: Per live streaming occasion - KPI#: `sum(currentPeriod(sample.viewers)) / currentPeriod(numberOfSamplesWithLiveStream)` - KPI compare#: `KPI#(currentPeriod) - KPI#(comparePeriod)` - Graph data point: `sum(sample.viewers) / numberOfSamplesWithLiveStream` - Minutes/hours watched: - **TODO**: Triangel/linje approximering! - Om det är ett avbrott i våran data, anta att streamen pågår i max 60 min. - KPI#: `sum(currentPeriod: sample[n].viewers * min(minutes(sample[n+1].timestamp - sample[n].timestamp), 20) )` - KPI compare#: `KPI#(currentPeriod) - KPI#(comparePeriod)` - KPI compare%: `KPI#(currentPeriod) / KPI#(comparePeriod) - 1` - If `KPI#(comparePeriod)` is 0, do not show compare % number. - Graph data point: `TODO!` - Schedule: Number of new streams per week day (UTC, Monday to Sunday) during the period. As today, no change. - Average airtime per day: - KPI#: `streamMinutes / days` (for channel during period) - Format: `HH:MM` - Average minutes watched per stream: - KPI#: `minutesWatchedDuringPeriod / numberOfStreams` (for channel during period) - Format: `HH:MM` - Total games streamed: - KPI#: Number of unique games streamed per channel during the period - Average CCV per stream: - KPI#: `sum(stream.averageViewers) / numberOfStreams` (for channel during period) - Average airtime (hours): - KPI#: `sum(stream.durationMin) / numberOfStreams` (for channel during period) - Format: `HH:MM` </details> ## Streams post list Metrics for every stream during the current period. <details> <summary><strong>Streams post list metrics formulas</strong></Summary> - Date UTC - Title - First title of the stream - Peak viewers - KPI#: `max(sample.viewers)` - Average viewers - KPI#: `avg(sample.viewers)` for samples of this stream - Minutes watched - KPI#: **TODO** (as above) - Duration - The length of the stream - Format: `HH:MM` - Game played - List of all games played during the stream </details> ## Games list Metrics to list streamed games statistics. <details> <summary><strong>Games list metrics formulas</strong></Summary> </details> ### Metrics breakdown per level #### Overview <details> <summary><strong>Overview metrics table</strong> </summary> | Metric | Business Value| Abbreviation| |:----------:|:-------------:|:------:| |Peak Concurrent Viewership| Maximum viewer count for a genre/theme | Peak CCV | |Average Concurrent Viewership | Average viewership for a genre/theme | Avg. CCV | |Peak amount of channels live simultaneously | Peak influencer/creator activity for a genre/theme | Peak Live Channels| |Average channels live simultaneously | Average influencer/creator activity for a genre/theme | Average Live Channels | |Hours streamed | Streaming activity for a genre/theme | Airtime | |Hours watched | Viewer activity for a genre/theme | Hours Watched | |Viewers Graph | Visualizes viewer activity for a genre/theme | Viewership Trends | |Compare | Being able to compare metrics | Compare | |Streaming Platform | Streaming platform distribution | Streaming Platform Distribution | </details> #### Streaming Market <details> <summary><strong>Streaming market metrics table</strong></summary> | Metric | Business Value| Abbreviation| |:----------:|:-------------:|:------:| |Peak Concurrent Viewership| Maximum viewer count for a genre/theme | Peak CCV | |Average Concurrent Viewership | Average viewership for a genre/theme | Avg. CCV | |Peak amount of channels live simultaneously | Peak influencer/creator activity for a genre/theme | Peak Live Channels| |Average channels live simultaneously | Average influencer/creator activity for a genre/theme | Average Live Channels | |Hours streamed | Streaming activity for a genre/theme | Airtime | |Hours watched | Viewer activity for a genre/theme | Hours Watched | |Viewers Graph | Visualizes viewer activity for a genre/theme | Viewership Trends | |Compare | Being able to compare metrics | Compare | |Streaming Platform | Streaming platform distribution | Streaming Platform Distribution | </details> #### Streaming Platforms <details> <summary><strong>Streaming platform metrics table</strong></summary> | Metric | Business Value| Abbreviation| |:----------:|:-------------:|:------:| |Peak Concurrent Viewership| Maximum viewer count for a genre/theme | Peak CCV | |Average Concurrent Viewership | Average viewership for a genre/theme | Avg. CCV | |Peak amount of channels live simultaneously | Peak influencer/creator activity for a genre/theme | Peak Live Channels| |Average channels live simultaneously | Average influencer/creator activity for a genre/theme | Average Live Channels | |Hours streamed | Streaming activity for a genre/theme | Airtime | |Hours watched | Viewer activity for a genre/theme | Hours Watched | |Viewers Graph | Visualizes viewer activity for a genre/theme | Viewership Trends | |Compare | Being able to compare metrics | Compare | |Streaming Platform | Streaming platform distribution | Streaming Platform Distribution | </details> #### Genres & Themes <details> <summary><strong>Genre metrics table</strong></summary> | Metric | Business Value| Abbreviation| |:----------:|:-------------:|:------:| |Peak Concurrent Viewership| Maximum viewer count for a genre/theme | Peak CCV | |Average Concurrent Viewership | Average viewership for a genre/theme | Avg. CCV | |Peak amount of channels live simultaneously | Peak influencer/creator activity for a genre/theme | Peak Live Channels| |Average channels live simultaneously | Average influencer/creator activity for a genre/theme | Average Live Channels | |Hours streamed | Streaming activity for a genre/theme | Airtime | |Hours watched | Viewer activity for a genre/theme | Hours Watched | |Viewers Graph | Visualizes viewer activity for a genre/theme | Viewership Trends | |Compare | Being able to compare metrics | Compare | |Streaming Platform | Streaming platform distribution | Streaming Platform Distribution | </details> #### Games (Content Types) <details> <summary><strong>Games metrics table</strong></summary> | Metric | Business Value| Abbreviation| |:----------:|:-------------:|:------:| |Peak Concurrent Viewership| Maximum viewer count for a genre/theme | Peak CCV | |Average Concurrent Viewership | Average viewership for a genre/theme | Avg. CCV | |Peak amount of channels live simultaneously | Peak influencer/creator activity for a genre/theme | Peak Live Channels| |Average channels live simultaneously | Average influencer/creator activity for a genre/theme | Average Live Channels | |Hours streamed | Streaming activity for a genre/theme | Airtime | |Hours watched | Viewer activity for a genre/theme | Hours Watched | |Viewers Graph | Visualizes viewer activity for a genre/theme | Viewership Trends | |Compare | Being able to compare metrics | Compare | |Streaming Platform | Streaming platform distribution | Streaming Platform Distribution | </details> #### Channels <details> <summary><strong>Channels metrics table</strong></summary> | Metric | Business Value| Abbreviation| |:----------:|:-------------:|:------:| |Peak Concurrent Viewership| Maximum viewer count for a genre/theme | Peak CCV | |Average Concurrent Viewership | Average viewership for a genre/theme | Avg. CCV | |Peak amount of channels live simultaneously | Peak influencer/creator activity for a genre/theme | Peak Live Channels| |Average channels live simultaneously | Average influencer/creator activity for a genre/theme | Average Live Channels | |Hours streamed | Streaming activity for a genre/theme | Airtime | |Hours watched | Viewer activity for a genre/theme | Hours Watched | |Viewers Graph | Visualizes viewer activity for a genre/theme | Viewership Trends | |Compare | Being able to compare metrics | Compare | |Streaming Platform | Streaming platform distribution | Streaming Platform Distribution | </details> #### Stream Post Data <details> <summary><strong>Stream post data metrics table</strong></summary> | Metric | Business Value| Abbreviation| |:----------:|:-------------:|:------:| |Peak Concurrent Viewership| Maximum viewer count for a genre/theme | Peak CCV | |Average Concurrent Viewership | Average viewership for a genre/theme | Avg. CCV | |Peak amount of channels live simultaneously | Peak influencer/creator activity for a genre/theme | Peak Live Channels| |Average channels live simultaneously | Average influencer/creator activity for a genre/theme | Average Live Channels | |Hours streamed | Streaming activity for a genre/theme | Airtime | |Hours watched | Viewer activity for a genre/theme | Hours Watched | |Viewers Graph | Visualizes viewer activity for a genre/theme | Viewership Trends | |Compare | Being able to compare metrics | Compare | |Streaming Platform | Streaming platform distribution | Streaming Platform Distribution | </details> ## Prospecting filters ## Notes