Tidyverse News Twitter Bot
This bot scrapes updates about tidyverse packages from GitHub and posts them to twitter.
-
You can find the bot at @tidyverse_news
-
This bot is maintained by @_wurli
How does it work?
-
NEWS.md
files are scraped from GitHub for all the packages listed bytidyverse::tidyverse_packages()
-
Annotations are applied to these files using pandoc with a custom Lua filter. Annotations indicate where bullets begin and end so that tweets can be grouped together sensibly.
-
This data is transformed using R to give individual tweets or threads where bullets would otherwise overflow. The twitter-text javascript library is used here to test whether tweets are valid or not.
-
Updates which have already been posted are excluded by checking against a CSV database. Updates don't have to exactly match previously posted ones - if they're very similar to previously posted updates, they won't get posted again.
-
Tweets are posted using the {rtweet} package
This is all automated using GitHub Actions, which simply sources run.R
once every hour.
Why?
If you use R a lot it's interesting to see what features are in the works for popular packages. I also wanted to learn more about twitter bots and GitHub actions, so this seemed like a good learning exercise.
Packages
The bot currently posts updates to the following packages:
- available
- bench
- blastula
- blob
- bslib
- callr
- chromote
- cli
- clock
- cloudml
- config
- conflicted
- crosstalk
- dbplyr
- debugme
- desc
- devtools
- diffviewer
- dplyr
- dsbox
- DT
- dtplyr
- fastmap
- flexdashboard
- fontawesome
- forcats
- fs
- funs
- gargle
- ggplot2
- gh
- gitcreds
- gmailr
- googledrive
- googlesheets4
- gt
- haven
- hms
- htmltools
- httr
- httr2
- keras
- leaflet
- lifecycle
- lintr
- lubridate
- magrittr
- memoise
- mockery
- modelr
- multidplyr
- nomnoml
- nycflights13
- pak
- pillar
- pins
- pkgdown
- plumber
- pointblank
- pool
- prettycode
- prettyunits
- profvis
- promises
- purrr
- r2d3
- R6
- ragg
- rcmdcheck
- reactlog
- readr
- readxl
- remotes
- renv
- reprex
- reticulate
- rex
- rlang
- rmarkdown
- roxygen2
- rsconnect
- rstudioapi
- rstudioapi
- rvest
- scales
- sessioninfo
- shiny
- shinydashboard
- shinytest2
- shinyuieditor
- shinyvalidate
- slider
- sortable
- stringr
- styler
- tensorflow
- testthat
- thematic
- tibble
- tidyr
- tidyselect
- tidyverse
- usethis
- vctrs
- vetiver
- vroom
- waldo
- webshot2
- withr
- xml2