ADVERTISEMENT

'Keyboard warriors' for hire? China-funded troll farms operating in Philippines—Tolentino

Published Apr 24, 2025 09:38 am

Senate Majority Leader Francis Tolentino on Thursday, April 24, revealed documents alleging that the People’s Republic of China has been financing troll farms operating in the Philippines through its embassy in Manila.

viber_image_2025-04-24_12-31-25-972.jpg
Senate Majority Leader Francis “Tol” Tolentino continues to preside over the Special Committee on Philippine Maritime and Admiralty Zones hearing on Thursday, April 24.

Tolentino disclosed this during the Special Committee on Philippine Maritime and Admiralty Zones hearing, wherein he said the campaign reportedly funded local troll farms to manipulate public discourse, attack Philippine policies, and undermine national sovereignty.

According to documents presented during the inquiry, a Makati-based firm, Infinitus Marketing Solutions, entered into a service contract in August 2023 with the Chinese Embassy in the Philippines.

The agreement detailed payments amounting to P930,000 for the provision of “keyboard warriors,” or individuals hired to disseminate propaganda and misinformation across social media platforms.

Tolentino presented a copy of the contract and a corresponding check issued by the embassy.

IMG_0330.jpeg
Sen. Francis Tolentino presents a replica of a check allegedly issued by the Chinese Embassy to the order of Infinitus Marketing for the amount of P930,000 as payment for “troll” activities mentioned in the service contract. (Photo by Office of Senator Francis Tolentino)

"So nakita natin ang services na ginagawa ng Infinitus, hindi po ito normal public relations, hindi po ito normal PR campaign (So we saw the services being done by Infinitus, this is not a normal public relations, this is not a normal PR campaign)," he said.

The troll farm allegedly managed over 300 fake social media accounts, with monthly reports submitted to embassy officials.

In a detailed breakdown, Tolentino explained how the troll farms operated by Infinitus utilized hundreds of fake social media accounts to impersonate Filipino citizens, including teachers and overseas Filipino workers. These fake personas were used to stir public debate, spread false narratives, and create division within the country.

Tolentino revealed that they even boasted about the extensive reach of their efforts, claiming about 50,000 people "entangled in their web of deceit".

"China does not want the Philippines to have the means to defend its territory and sovereignty," Tolentino said.

"They manufacture fake social media content against the Philippine government's policy, pretending to be motivated about concerns about peace in the region," he added.

The revelation comes at a time when tensions between China and the Philippines are high due to ongoing disputes over the West Philippine Sea (WPS).

The Philippine government has taken several steps to strengthen its territorial claims, including the signing of the Maritime Zones Law in November 2024, which China has repeatedly opposed.

Related Tags

troll farm Chinese Embassy in Manila People's Republic of China Senator Francis Tolentino Special Committee on Philippine Maritime and Admiralty Zones
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.