TikTok Coordinated Detection Project

Author

Fabio Giglietto

Published

March 7, 2025

1 Introduction

This document serves as a proof of concept, developed within the framework of the vera.ai Horizon EU project. It presents a comprehensive methodology for tracking and analyzing coordinated sharing activities on TikTok, employing traktok for data collection via the TikTok Research API and CooRTweet for the analysis of coordinated behavior patterns.

Initial Discovery: The analysis initiates by focusing on content tagged with the #moskow hashtag. This first step successfully identifies a preliminary group of accounts involved in coordinated sharing activities in the aftermath of the attack in Moscow. This discovery lays the groundwork for an extensive examination of coordinated dynamics across social media platforms.

On April 19, 2024, we received a list of 513 problematic accounts from a trusted partner within the vera ai consortium. Accounts that were mentioned at least twice on this list have been added to our pool of monitored accounts.

Daily Monitoring and Analysis: Subsequent to the initial identification, the methodology transitions into a phase of daily monitoring. In this phase, the script consistently retrieves videos posted by the previously identified accounts, with the goal of detecting both ongoing and emerging instances of coordinated behavior. As new accounts manifesting coordinated behavior (time_window = 120 seconds, min_participation = 2 posts, edge_weight = 0.9) are discovered, they are incorporated into the daily monitoring routine. For each identified network of coordinated accounts, AI-generated labels are automatically created using the gpt-4o model by analyzing the content patterns, themes, and characteristics of the posts shared within each network, providing a concise description of the common elements that unite these accounts in their coordinated behavior.

This approach ensures continuous updates on the number of newly discovered coordinated accounts, highlighting the fluid nature of social media coordination. Enhanced by interactive visualizations, the analysis sheds light on the shifting landscape of account activities and the intricate network of interactions among them on the TikTok platform.

By delineating these processes, the proof of concept underscores the potential for advanced analytical tools to reveal and understand the complex phenomena of coordinated social media behavior within the context of significant societal events.

2 Today Results

Execution Summary: We attempted to retrieve videos from 3,325 monitored accounts, during the period from February 20, 2025 to March 07, 2025. We successfully retrieved 39,961 recent videos. Using available data, we accessed a total of 19,417 videos posted on TikTok within the timeframe. Our analysis for coordinated detection in these videos identified 23 accounts spread across 11 components, and it also uncovered 12 new accounts exhibiting coordinated behavior.

::: {.callout-warning}

Warning: 3048 errors were encountered during execution. Results may be incomplete. Please check the error summary below for details.

:::

Error Details

Total errors encountered: 3048

2.0.1 Errors by type:

description_query_error empty_chunk 3042 6

2.0.2 Sample Errors:

  • Type: description_query_error, Message: HTTP 429 Too Many Requests. • status: daily_quota_limit_exceeded • message: The API daily quota limit exceeded. Please try again later • log_id: 2025030702124060F673957DCCC72C79B6
  • Type: description_query_error, Message: HTTP 429 Too Many Requests. • status: daily_quota_limit_exceeded • message: The API daily quota limit exceeded. Please try again later • log_id: 2025030702035565FA7B313B8F2E27114A
  • Type: description_query_error, Message: HTTP 429 Too Many Requests. • status: daily_quota_limit_exceeded • message: The API daily quota limit exceeded. Please try again later • log_id: 20250307023957E494699160F83529EC7F
  • Type: description_query_error, Message: HTTP 429 Too Many Requests. • status: daily_quota_limit_exceeded • message: The API daily quota limit exceeded. Please try again later • log_id: 202503070101475F092EFD138AD9235FE2
  • Type: description_query_error, Message: HTTP 429 Too Many Requests. • status: daily_quota_limit_exceeded • message: The API daily quota limit exceeded. Please try again later • log_id: 202503070230118078807E67EC1B284695

Historical trends of coordinated accounts

2.1 Interactive Graph Visualization

Figure 1: Interactive visualization of coordinated accounts detected today. Click on a node to visit the respective TikTok account.

2.2 Detailed Tables

2.2.1 Coordinated Accounts

2.2.2 Coordinated Networks/Clusters

2.2.3 Coordinated Posts

Download Results

Download a comprehensive package of today's coordination analysis results, including:

  • Coordinated accounts table (CSV format)
  • Network clusters analysis (CSV format)
  • Coordinated posts data (CSV format)
  • Network graph (GraphML format)
  • README file with detailed field descriptions
Download Results Package

3 About

vera ai logo vera.ai is a research and development project focusing on disinformation analysis and AI supported verification tools and services. Project funded by EU Horizon Europe, the UK’s innovation agency, and the Swiss State Secretariat for Education, Research and Innovation

4 References

Giglietto, F., Marino, G., Mincigrucci, R., & Stanziano, A. (2023). A Workflow to Detect, Monitor, and Update Lists of Coordinated Social Media Accounts Across Time: The Case of the 2022 Italian Election. Social Media + Society, 9(3). https://doi.org/10.1177/20563051231196866

5 Session Info

R version 4.3.3 (2024-02-29)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 22.04.4 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0 
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0

locale:
 [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
 [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
 [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
[10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   

time zone: Etc/UTC
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] htmltools_0.5.7    DT_0.33            traktok_0.0.7.9000 logger_0.3.0      
 [5] progress_1.2.3     jsonlite_1.9.0     visNetwork_2.1.2   igraph_2.1.2      
 [9] scales_1.3.0       httr_1.4.7         CooRTweet_2.1.0    lubridate_1.9.3   
[13] forcats_1.0.0      stringr_1.5.1      dplyr_1.1.4        purrr_1.0.4       
[17] readr_2.1.5        tidyr_1.3.1        tibble_3.2.1       ggplot2_3.4.4     
[21] tidyverse_2.0.0   

loaded via a namespace (and not attached):
 [1] gtable_0.3.4        bslib_0.6.1         xfun_0.42          
 [4] httr2_1.1.0         htmlwidgets_1.6.4   tzdb_0.4.0         
 [7] crosstalk_1.2.1     vctrs_0.6.5         tools_4.3.3        
[10] generics_0.1.3      curl_6.2.1          parallel_4.3.3     
[13] pkgconfig_2.0.3     data.table_1.16.4   tidytable_0.11.2   
[16] lifecycle_1.0.4     compiler_4.3.3      farver_2.1.1       
[19] munsell_0.5.0       sass_0.4.8          yaml_2.3.8         
[22] jquerylib_0.1.4     pillar_1.10.1       crayon_1.5.3       
[25] ellipsis_0.3.2      openssl_2.3.2       cachem_1.1.0       
[28] tidyselect_1.2.1    digest_0.6.34       stringi_1.8.4      
[31] labeling_0.4.3      fastmap_1.2.0       grid_4.3.3         
[34] colorspace_2.1-0    cli_3.6.4           magrittr_2.0.3     
[37] RcppSimdJson_0.1.11 withr_3.0.2         prettyunits_1.2.0  
[40] rappdirs_0.3.3      bit64_4.0.5         timechange_0.3.0   
[43] rmarkdown_2.25      bit_4.0.5           askpass_1.2.1      
[46] hms_1.1.3           evaluate_0.23       knitr_1.45         
[49] rlang_1.1.5         Rcpp_1.0.14         glue_1.8.0         
[52] vroom_1.6.5         R6_2.6.1