Skip to page content
SAVRN
Search Plan a project

Dataset · Text classification

Moltbook

by Dian Ouo dian-ouo/Moltbook

Public posts, comments and agent profiles collected from Moltbook, a Reddit-style social platform exclusively for AI agents ("the front page of the agent internet").

Rows38,251,497
Configurations4
Size39.6 GB
Licensecc-by-4.0
AccessPublicly accessible
Monthly Downloads—

Dataset Card

By Dian Ouo, published under cc-by-4.0, revision 0e8b6eec7e60.

Moltbook AI Agent Social Media Corpus

Maintainer: Shichao Jia, Stevens Institute of Technology Scraper source: https://github.com/jscmp4/moltbookscraper (open source) Snapshot: 2026-10-07. Unless dated otherwise, every number on this card describes this snapshot (see Snapshot 2026-10-07). Coverage: posts from the platform's first day (2026-01-27) onward. Collection started 2026-02-25 and pages the feed backward, so 2026-01-27..02-25 was captured retroactively; since then the crawler has run daily, with interruptions of up to 35 days, each closed by a later run (see Collection Gaps and Capture Lag). Content the platform no longer serves (spam-flagged posts after the May 2026 spam-flag change, deleted posts) cannot be re-collected, and comment_count, votes, comments and author profiles are recorded as of our capture time, so a later crawl cannot reproduce this corpus.

Dataset Summary

Public posts, comments and agent profiles collected from Moltbook, a Reddit-style social platform exclusively for AI agents ("the front page of the agent internet"). The platform launched in late January 2026; this dataset covers its first eight-plus months (posts created 2026-01-27 through 2026-10-07). Collection runs daily; the published files are refreshed as dated snapshots, normally monthly.

Every piece of content was posted by an AI-agent account, each meant to be an autonomous AI agent; the corpus cannot show how much of it a human operator wrote or prompted. This makes the dataset suited for studying AI agent communication patterns, community formation, self-presentation, and social dynamics in a naturalistic online setting.

Config Records Parquet (recommended) Raw JSONL
posts 3,699,521 parquet/posts/*.parquet posts_all.jsonl (~6.01 GB)
comments 19,728,495 (unique, deduplicated) parquet/comments/*.parquet comments_all.jsonl (~24.94 GB)
agents 103,631 parquet/agents/*.parquet agents_seen.jsonl (~37 MB)
agent_snapshots 14,719,850 rows in 148 snapshot files (not a time series, see below) parquet/agent_snapshots/*.parquet agent_snapshots/*.jsonl (~4.00 GB)
communities 7,557 unique in data — submolts.json (~21 KB)
comment-backfill id lists 794,846 posts / 1,210,822 comments — backfill/*.tsv.gz (~24 MB + ~46 MB)

Two equivalent copies are published. The Parquet files under parquet/ are the recommended entry point: same rows, 7.7x smaller (4.52 GB vs 34.99 GB across the four configs), browsable in the Dataset Viewer and queryable without downloading the corpus. The original .jsonl files are kept for anyone already depending on them. Both were generated from the same files after the 2026-10-07 daily run (checks below). posts and comments Parquet are partitioned by month of created_at (2026-01 .. 2026-10); a comment is filed under its own created_at, so the comments on one month's posts spread into later files (1,410,859 comments were created in a later month than their post).

Snapshot 2026-10-07

The data cutoff is the 2026-10-07 daily run (finished 09:17 UTC). The newest post was created 2026-10-07T08:04:03Z, so 2026-10-07 is a partial day (2,096 posts); the newest comment was created 2026-10-07T09:11:58Z. Checks run on the published files:

  • Parquet and JSONL hold the same rows: per creation month the row counts, id checksums and summed content lengths are equal for posts and comments, and the JSONL keys equal the Parquet columns (posts 22, comments 18, agents 12), so no field is dropped. Field values beyond these aggregates were not compared one by one.
  • 0 duplicate post ids, 0 duplicate comment ids, 0 comments whose post is missing, 0 comments dated before their post, 0 unparsable lines.

Changes since the previous release

Until this release the Dataset Viewer and load_dataset served the Parquet export of the 2026-07-03 snapshot (uploaded 2026-07-15: 3,203,526 posts, 15,881,514 comments, 99,621 agents, 56 snapshot files), while the JSONL files were refreshed on 2026-08-01 and 2026-09-01 (3,501,889 posts, 17,510,745 comments, 101,578 agents, 113 snapshot files on 2026-09-01); from 2026-08-01 the two copies therefore differed.

This release appends 197,632 posts, 2,217,750 comments (1,210,822 from the comment backfill, 1,006,928 from daily runs) and 2,053 agent profiles to the JSONL files (the 2026-09-01 files are exact byte prefixes of the new ones), adds 35 agent-snapshot files and the backfill id lists, and rebuilds the Parquet export from the same files. Parquet posts files 2026-01 .. 2026-06 are byte-identical to the previous ones; every comments month changes, because the backfill added comments to old posts.

Coverage at a glance

Posts: 3,699,521, 84.0% of the platform's totalPosts counter (4,402,355), both read during the 2026-10-07 run. Between 2026-05-06 and 2026-06-10 the public feed most likely stopped serving spam-flagged posts while the counter still includes them (see Spam-Flag Regime Change), so, apart from posts deleted before a late capture, the corpus most likely holds all publicly served posts.

Comments: 19,728,495, 85.7% of the platform's comment counter (23,030,926). Which threads are fetched depends on the post's comment_count at capture (How Comments Are Collected).

measure (end of the 2026-10-07 run) value
posts with comment_count == 0 (threads never fetched) 2,014,671 of 3,699,521 (54.5%)
posts with comment_count >= 1 holding at least one comment 1,602,140 of 1,684,850 (95.1%)
... of them comment_count == 1 402,509 of 467,995 (86.0%)
... of them comment_count == 2 348,796 of 365,360 (95.5%)
... of them comment_count >= 3 850,835 of 851,495 (99.9%)
posts with comment_count >= 3 holding at least as many comments as their counter 743,509 (87.3%)
... walked to the end three times and still short (quarantined) 105,653 (12.4%), short 270,787 comments
... still open 2,333 (0.3%), short 6,962 comments
posts with comment_count > 0 and no stored comment 82,710 of 1,684,850 (4.9%)
stored comments / summed comment_count 102.0% (19,728,495 / 19,341,092)
sum(min(stored, comment_count)) / sum(comment_count) 97.8%

By post-creation month:

post month posts comment_count == 0 posts with comment_count >= 1 holding a comment comments held stored / counter, capped per post comment_count >= 3 posts quarantined
2026-01 50,411 21.4% 99.98% 1,482,021 99.9% 0.0%
2026-02 1,628,353 76.2% 99.43% 10,713,355 100.0% 0.1%
2026-03 727,517 53.7% 91.74% 1,518,467 96.3% 0.6%
2026-04 411,077 40.8% 93.24% 1,463,801 97.2% 1.2%
2026-05 183,959 39.7% 98.00% 678,164 93.2% 16.4%
2026-06 189,603 29.5% 96.50% 918,828 92.1% 28.1%
2026-07 159,891 17.7% 95.53% 921,224 92.2% 36.0%
2026-08 149,098 15.2% 96.96% 937,319 94.2% 25.9%
2026-09 163,343 12.0% 94.52% 897,661 93.0% 32.1%
2026-10 (to 10-07T08:04Z) 36,269 15.0% 61.98% 197,655 86.7% 11.9% (still settling)
all 3,699,521 54.5% 95.09% 19,728,495 97.8% 12.4%

October 2026 boundary. The daily threshold is still 3, so the 12,777 posts with comment_count 1-2 first captured from 2026-10-01 on (created 2026-09-30 .. 10-07) were not fetched and have no comments in this snapshot, hence 61.98% in the October row. These 12,777 and the 69,273 threads the backfill found empty are all the comment_count 1-2 posts without a comment. The May-September quarantine shares are discussed under Comments counted but never served.

Held comments divided by comment_count (capped per post), by the week the post was created. For comment_count >= 3 coverage is 98.5-100% through April, dips to 88-92% for posts created 2026-05-06 .. 06-09 (captured 0-35 days late) and holds at 91-96% from mid-June. The 1-2 line (the September 2026 backfill) falls to about 76-78% in the weeks of 09-14 and 09-21, inside the window where the API counted comments it never served. Because comment_count also counts comments the API does not serve, the gap to 100% is not all missing data.

Dataset at a Glance

The figures below were generated from the 2026-10-07 snapshot with make_card_figures.py (the partial last day, 2026-10-07, is not plotted).

The February spike is the mbc-20 token-minting bot wave; the red spam-flagged series ends on 2026-05-06, the last day captured before a 35-day collection interruption; spam-flagged posts disappear from the feed at some point during that interruption (see Notable Phenomena).

Both engagement distributions are heavy-tailed. In the 2026-10-07 snapshot, 41.2% of authors (75,395 of 183,155) have one or two posts, the median author has 3, and the most active author has 62,707. Note the author universe here is author_id (183,155 distinct non-empty values in posts; 17 posts have an empty author_id) -- larger than agents_seen.jsonl (103,631 profile records); see the agents section below.


Interaction Patterns

Six views of how agents interact, computed from the published comments with make_interaction_figures.py (snapshot 2026-10-07; the coverage curve is in Coverage at a glance above). They describe the threads we collected: threads exist only for posts that showed at least one comment at first capture, and replies written from March 2026 on are returned at most to depth 5.

Top-level comments (depth 0, the pale band) fell from 97.3% of a month's comments in February 2026 to 56.6% in June and 63.0% in September, so from June on roughly 40% of comments are replies to other comments. February holds 11.9M of the 19.7M rows, 5.5M of them from two bot accounts; without those two accounts February is still 95.4% top-level.

Structural virality V (Goel et al. 2016) is the mean distance between two nodes of a thread's reply tree; a thread where every comment replies to the post has V = 2 - 2/n. Threads on posts created from March 2026 reach V of about 3.0 by 16-31 nodes and stay at 3.0-3.3 up to about 2,800 nodes. Before March, large threads sit on the star line (V 2.00 to 2.07 for 256-4,095 nodes). 1.2M threads with at least two collected comments.

Share of a week's distinct reply pairs (replier to the author of the comment replied to) whose reverse pair also occurs that week. It was about 0.03 in early February 2026, 0.21 to 0.29 from March to mid-May, and rose to 0.50 in the week of Sep 28. Only replies to comments count; self-replies and Deleted comment placeholders are excluded. The late-September weeks overlap the counted-but-never-served window.

February is extreme: Gini 0.98, the top 1% of authors wrote 91% of comments, and two bot accounts wrote 46% of that month. From March the top 1% wrote 46-51% (Gini 0.90-0.91). Replies received stay concentrated (Gini 0.93-0.95), and the share of the top 1% of recipients rises from 58% to 61% to 64%.

Left: delay from a post to its first collected comment, for posts with comment_count >= 3 created March-September 2026: median 0.8-1.7 minutes, and 93-96% get one within 10 minutes. Right: minute of the hour (UTC) of the 7.56M comments written 2026-03-01 .. 10-06. Minutes 0-4 hold 14.3% of comments, against 8.3% for an even spread, with a second peak at minute 30. Delays are measured on fetched threads only, so posts whose comments came late are under-represented.

Collection Methodology

API and Access

All data come from the Moltbook API (https://www.moltbook.com/api/v1, bearer-token API key). The initial bulk scrape ran 2026-02-25 through 2026-03-11 and paged the feed back to the platform launch (2026-01-27); continuous collection has run since 2026-03-11 (see Collection pipeline; late-capture spans under Collection Gaps and Capture Lag).

How Posts Are Collected

Posts are fetched via GET /posts?sort=new&limit=100 with cursor-based pagination, starting from the newest post and paging backward; an incremental run stops at the first post no newer than the newest post of the previous run (by created_at). Every post the feed serves is therefore collected regardless of engagement; posts the feed does not serve when the crawler passes (spam-flagged posts after the May 2026 change, posts deleted before capture) are absent. Posts are deduplicated by id into an append-only JSONL, so a post's row is written once, at first capture, and never updated.

How Comments Are Collected

Comments are fetched per post via GET /posts/{id}/comments?sort=new&limit=100 with cursor-based pagination. Which threads are fetched depends on the post's comment_count, frozen at first capture:

  • comment_count >= 3: the daily run (the automated scraper's threshold).
  • comment_count 1-2: once, by the 2026-09-14 .. 10-02 backfill, if the post was captured by 2026-09-30 (below).
  • comment_count == 0: never.

Eligible-post counts at each threshold (2026-10-07, 3,699,521 posts):

Threshold Eligible Posts
>= 30 37,520
>= 20 59,399
>= 15 89,940
>= 10 170,267
>= 5 473,886
>= 3 (daily) 851,495
1-2 (all such posts; the backfill fetched 794,846 of them) 833,355
Comment backfill for posts with 1-2 comments (2026-09-14 .. 2026-10-02)

Until September 2026 posts claiming 1 or 2 comments were almost never fetched: on 2026-09-14, 0.01% of comment_count == 1 posts and 7.53% of == 2 posts held a comment (the exception: 25,732 February 2026 posts, fetched while a lower threshold was briefly in use). From 2026-09-14 to 2026-10-02 a one-off campaign fetched every post with comment_count 1 or 2 that held no comment and had been captured by the 2026-09-30 daily run: 794,846 posts (759,695 fixed on 2026-09-14, plus 35,151 captured between then and 2026-09-30). It ran in runs of its own, serialised with the daily job, and wrote comment rows only: no post was re-fetched, so comment_count stays as first captured.

outcome posts meaning
full 677,694 the walk returned at least comment_count rows
partial 47,879 at least one row, but fewer than comment_count (all comment_count == 2)
empty 69,273 the walk completed and the endpoint returned no comment
unreachable / failed 0

The campaign added 1,210,822 comment rows on 725,573 posts, all in comments_all.jsonl and the Parquet comments config. Threads were fetched 0.5 to 241 days after posting (median 167 days). full threads can hold more rows than their counter, because comments kept arriving between the post's capture and the backfill (the 402,468 full posts with comment_count == 1 returned 512,292 rows). The empty rate is several times higher for posts created in the 2026-09-15 .. 09-26 anomaly window (Comments counted but never served). The id lists under backfill/ identify every backfilled post and comment, so analyses can include or exclude the backfill.

Collection pipeline

The crawler runs daily at 04:00 US Eastern (Windows Task Scheduler, since 2026-03-25); an interrupted run is caught up by a later one. Daily runs make up to 100 requests/minute for posts and for comments since 2026-06-15 (40 and 38 before); the 2026-09 backfill ran at 60/minute in tagged runs, kept out of the daily runs' backlog estimates and yield alarms. Requests time out after 30 s, with up to 3 attempts. A thread walked to the end three times without a new comment is quarantined; each run re-probes the 500 quarantined posts with the oldest verdicts (the whole quarantine about every 212 runs; on 2026-10-07, 2 of 501 returned new comments), and a verdict lifts only when a re-probe returns new comments. Scheduling, rate-limit handling, alarms and resume logic are in the scraper repository; the scripts that built this release (make_parquet.py, make_card_figures.py, make_interaction_figures.py, upload_hf.py, backfill/*.py) are being added to it.

How Agents Are Collected

Agent profiles are not scraped separately. Each post and comment embeds an author object with the agent's profile as the API served it when that item was captured. agents_seen.jsonl keeps the first such profile per agent, taken from posts only, and is never updated: 103,631 records, out of 2,920,949 agents registered on the platform on 2026-10-07 (most registered agents never post).

The profile file is not the complete author universe: posts reference 183,155 distinct non-empty author_id values, 79,524 (43.4%) of them without a profile (mostly authors who appear only in posts captured before 2026-03-04, which the extraction did not cover; a few only in runs that ended before their extraction step, such as the 2026-10-03 run); comments reference 48,688 non-empty (41,050 profiled); 187,477 distinct non-empty authors in all. Use the embedded author object for complete author metadata; only 17 posts and 51 comments lack it.

The embedded object is also the corpus's time-varying agent signal: it holds the profile as served when the crawler fetched the item, not when the item was created. The fetch time is recorded for posts (_scraped_at, null before 2026-03-04) and for backfilled comments (fetched_at_utc of their post in backfill/backfill_post_ids.tsv.gz), not for other comments.

Agent Snapshots (not a time series in this release)

After most runs the scraper writes agent_snapshots/YYYYMMDD_HHMMSS.jsonl (US Eastern local time; in this release the name and sampled_at mark the same moment). All 148 files in this release (2026-03-24 .. 2026-10-07; sampled_at 2026-03-25T02:31:42Z .. 2026-10-07T09:12:38Z; 14,719,850 rows) are copies of agents_seen.jsonl stamped with sampled_at: 103,557 agents appear in more than one file and none of them ever changes karma, followerCount, followingCount, lastActive, isActive, isClaimed or name; the last file equals agents_seen.jsonl on all 103,631 rows, and a file's row count only tracks how many agents had been seen (93,293 in the first). The files fall on 140 of the 198 calendar days 2026-03-24 .. 10-07 (none on 58 days, including 2026-04-19 .. 04-24, 2026-05-07 .. 06-08 and 2026-10-03; several on 03-29, 04-11 and 04-27). Do not use these files to measure karma or follower growth.

From the 2026-10-08 run on (not part of this snapshot) each file holds the authors of the posts and comments newly written in that run, with the values the API returned at fetch time (1,293-1,453 agents per run when the rule is applied to the complete daily runs of 2026-10-01 .. 10-07), marked "population": "run_observed" (legacy rows lack the field). Each value was observed between the run's start (the file name) and its end (sampled_at). Within a run the last row read wins (posts first, then comments); placeholder authors of deleted agents are skipped; missing keys are null. The files sample the agents active in each run; they are not a census.

Forthcoming, not part of this release: agent_observations, a reconstructed per-agent observation panel built from the embedded author objects, is in preparation.

Collection Gaps and Capture Lag

Posts are fetched by paging the feed backward, so every interruption was closed by a later run: after 2026-02-01 no two consecutive posts in the corpus are more than 3.9 hours apart (3.1 hours after 2026-02-13). An interruption changes when a post was captured, and with it every capture-time value (comment_count, votes, is_spam, the embedded author) and whether a post deleted or hidden in the meantime is present at all.

_scraped_at (capture time) is null for posts captured before 2026-03-04, when the field was introduced; that includes the initial scrape, which started 2026-02-25 and paged back to 2026-01-27. Since then, these capture days picked up posts more than about three days late:

captured (UTC) posts captured that day late posts created from mean lag max lag
2026-03-25 102,735 2026-03-20T03:04Z 2.4 d 4.9 d
2026-04-14 191,152 2026-03-28T08:40Z; 151,728 of the 151,745 posts created 2026-03-30T08:23Z .. 04-09T00:03Z were captured this day 9.6 d 17.1 d (older stragglers below)
2026-04-23 67,547 2026-04-18T08:25Z 2.6 d 5.2 d
2026-05-02 51,002 2026-04-28T08:05Z 1.8 d 3.7 d
2026-06-10 (00:13-00:32Z, one pass) 177,306 2026-05-06T03:42Z 14.9 d 34.9 d

Shorter maximum lags of 2.0-3.2 days occur on the capture days 2026-03-07, 03-13, 04-11, 04-26, 05-06 (2.9 d), 06-14, 06-20 and 06-22. The 2026-04-13/14 passes also captured about 890 older posts for the first time (260 created in January-February, up to 72 days late, and 621 created on 2026-03-05). Since 2026-06-10 the median capture lag is 12.4 hours (95th percentile 24.0 hours).

The longest interruption, 2026-05-06T03:52Z .. 2026-06-10T00:13Z, coincides with the spam-flag regime change. Posts deleted or hidden before a late capture are absent: posts per creation day average 3,816 for 2026-05-07 .. 05-22 against 6,270 for 05-23 .. 06-09, all captured on 06-10; the corpus cannot tell how much of that dip is deletion and how much is spam no longer being served. Values captured in these spans are not comparable with values captured within a day of posting.

Comment threads walked late hold more late replies than threads walked soon after capture (comment rows carry no capture time). Besides the backfilled threads, this applies to posts created 2026-08-02 .. 08-06, whose threads a crawler queue cap set on 2026-08-03 left to later runs: for those with comment_count >= 3, stored comments are 1.20-1.47 times the summed counter, against 0.96-1.13 on the other days of 2026-07-30 .. 08-27, and comments created 08-04 .. 08-07 number 33,507-41,328 a day, against 29,221-30,425 on 08-01 and 08-08 .. 08-12.

The 2026-10-03 daily run was killed by an unclean shutdown at 08:50 UTC. What it had written (5,558 posts, 4,011 comments) is intact, and the 2026-10-04 run completed its comment queue.


Data Files

posts_all.jsonl

One JSON object per line; inclusion as under How Posts Are Collected.

Field Type Description
id string (UUID) Unique post ID
title string Post title (max 300 chars)
content string | null Body text (Markdown, max 40K chars); null on 14,849 posts (0.40%)
type string "text" (3,650,818) | "link" (48,703); no "image" posts occur
url string | null Link target of type == "link" posts (48,703 posts)
author_id string (UUID) Agent ID of the author
author object Embedded author profile as served when the post was captured, i.e. at _scraped_at, not at created_at (agents-schema fields, plus displayName and bio where present)
submolt object {id, name, display_name} -- the community
upvotes, downvotes, score int Raw vote counts at capture; score = upvotes - downvotes
comment_count int Platform comment counter at first capture (never updated; not a completeness denominator, see Known Limitations)
hot_score int Platform ranking score (0 on every post in this corpus)
is_pinned bool Pinned by moderator (1,566 posts)
is_locked bool Replies disabled (false on every post in this corpus)
is_deleted bool Soft-deleted (false on every post in this corpus)
verification_status string "verified" (1,978,494) | "pending" (1,280,751) | "failed" (235,604) | "bypassed" (204,672)
is_spam bool Platform spam flag (18.7% of all posts, 23.9% of posts created before 2026-05-06; false on every post created after 2026-05-06T03:42Z -- see Notable Phenomena)
created_at, updated_at string (ISO 8601) Creation and last-edit timestamps (UTC)
_scraped_at timestamp | null When the crawler first stored the post, UTC (an ISO string in JSONL; a timestamp without time zone in Parquet, so do not let a tool read it as local time); null for 1,788,980 posts captured before 2026-03-04
labels object | null Platform label attachments (see below)

Posts captured from 2026-06-23 onward carry a labels field (platform-assigned label attachments: pinned, inline and metadata lists, each metadata entry with its own nested created_at). 556,250 posts carry it, and only 678 of them have a non-empty list. Parse by JSON field, not by regex, to avoid picking up nested timestamps.

comments_all.jsonl

One JSON object per line; which threads are fetched is under How Comments Are Collected.

Field Type Description
id string (UUID) Unique comment ID
post_id string (UUID) Parent post ID (foreign key to posts)
post_title string Parent post title (denormalized)
submolt string Community name (denormalized)
content string Comment body text (Deleted comment on placeholder rows; empty or whitespace-only on 3,255 rows)
author_id string (UUID) Agent ID of the commenter
author object Embedded author profile as served when the comment was fetched (see How Agents Are Collected)
parent_id string (UUID) | null Parent comment ID for nested replies
depth int Thread nesting depth (0 = top-level reply); at most 5 except on February 2026 comments (see Known Limitations)
reply_count int Always 0 (the API does not fill it); count children via parent_id
upvotes, downvotes, score int Raw vote counts at capture; score = upvotes - downvotes
is_deleted bool Soft-deleted; such rows are Deleted comment placeholders (205,416 rows)
verification_status string "pending" (11,363,864) | "verified" (3,950,338) | "bypassed" (3,636,953) | "failed" (777,340)
is_spam bool Platform spam flag (298,851 rows, all created February-May 2026; none created after 2026-05-06T09:51Z)
created_at, updated_at string (ISO 8601) Creation and last-edit timestamps (UTC)

Thread depth (19,728,495 comments): depth 0 (top-level) 86.0%, depth 1 10.3%, depth 2+ 3.7%. The total is dominated by February 2026 (11,935,073 comments, 97.3% top-level); for comments created June-October 2026 the top-level share is 56.6%-63.0%, so the broadcast-dominant style, where most agents post direct replies rather than engaging in threaded conversations, belongs mainly to February 2026, not to the platform throughout.

agents_seen.jsonl

One profile per agent, as embedded in its first stored post; never updated (How Agents Are Collected).

Field Type Description
id string (UUID) Unique agent ID
name string Display name
description string Agent bio / system prompt excerpt
avatarUrl string | null Profile image URL
karma int Total karma score at first capture
followerCount int Number of followers at first capture
followingCount int Number of agents followed at first capture
isClaimed bool Whether a human operator has claimed this agent (true on every profile in this file)
isActive bool Account active flag
createdAt string (ISO 8601) Agent account creation time
lastActive string (ISO 8601) Last seen timestamp, as of first capture
deletedAt string | null Deletion timestamp if deleted (null on every profile in this file)

submolts.json

Top-level community list from the platform API (20 featured communities), including subscriber_count, post_count, description, and created_by. 7,557 unique community names appear across the post data; the 20 featured communities hold 2,778,008 posts (75.1%).

agent_snapshots/*.jsonl

One file per scraper run that wrote one; contents as under Agent Snapshots. Fields: id, name, karma, followerCount, followingCount, isClaimed, isActive, createdAt, lastActive, sampled_at; files from the 2026-10-08 run on add population.

backfill/ (comment-backfill id lists)

The ids of everything the 2026-09-14 .. 10-02 comment backfill touched, so analyses can include or exclude it.

backfill/backfill_post_ids.tsv.gz -- 794,846 rows, one per backfilled post; tab-separated with a header:

Column Description
post_id Post ID (all 794,846 are in posts)
comment_count The post's frozen comment_count (1 or 2), equal to posts.comment_count
batch Campaign batch (0-13); empty for 93,381 posts whose last walk ran in one of the two runs killed on 2026-09-18 and 2026-09-19
fetched_at_utc Time of the post's last walk (ISO 8601, UTC; 2026-09-14T09:11Z .. 2026-10-02T09:19Z)
outcome full | partial | empty (definitions under Comment backfill)
raw_rows Comment rows the endpoint returned in that walk, before deduplication

backfill/backfill_comment_ids.tsv.gz -- 1,210,822 rows, one per comment row the campaign wrote; tab-separated with a header:

Column Description
comment_id Comment ID (all 1,210,822 are in comments)
post_id Post ID (every one appears in backfill_post_ids.tsv.gz)
batch Campaign batch; empty for the 115,965 rows written by the two killed runs
source_run_file Crawler run file that wrote the row, e.g. 20260923_054629_backfill_comments.jsonl

backfill/MANIFEST.txt -- row counts, md5 checksums of the plain and gzipped files, per-run-file counts, the outcome histogram and the export's assertions.


Data Relationships

submolts.json
    |
    |  submolt.id
    v
posts_all.jsonl  ------------>  agents_seen.jsonl
    |  post.submolt.id               ^  agent.id
    |  post.author_id ---------------+
    |
    |  post.id
    v
comments_all.jsonl
    |  comment.post_id  --> post.id     (one-to-many)
    |  comment.author_id -> agent.id    (author link)
    |  comment.depth                    (thread tree)

backfill/backfill_post_ids.tsv.gz     post_id    --> post.id
backfill/backfill_comment_ids.tsv.gz  comment_id --> comment.id

submolts.json lists only the 20 featured communities and agents_seen.jsonl lacks part of the post and comment authors (How Agents Are Collected): use the embedded author and submolt objects for complete joins.


Known Limitations and Caveats

Deleted comment placeholder rows

Soft-deleted comments are still served, as rows whose content is the literal string Deleted comment: 205,462 rows (1.04% of comments). 205,416 of them have is_deleted: true, which is every is_deleted: true row; 46 carry the text with is_deleted: false. The share rises over time: 0.62% of comments created in February 2026, 3.09% in August, 5.20% in September and 4.81% in October (partial month). In backfilled threads 79,816 of 1,210,822 rows (6.59%) are placeholders, and 1,773 comment_count == 1 and 425 comment_count == 2 backfilled threads hold nothing else.

Filter on is_deleted (or the text) before text analysis, but keep the rows for thread structure: 4,193 comments have a placeholder as parent. A thread that holds only placeholders has no visible comment: for posts created 2026-07-30 .. 08-27, counting such threads as empty moves the share of posts with no stored comment from 17.08% to 17.81% (23,229 and 24,214 of 135,991).

Comments counted but never served

comment_count counts some comments that GET /posts/{id}/comments never returns, under either sort=new or sort=old. Soft deletion is not the cause; deleted comments are served as placeholders (above). Such a post can never hold as many comments as its counter, and no number of retries closes the gap; the crawler quarantines it after three complete walks that add nothing (Collection pipeline; counts in Coverage at a glance); 68,006 of the quarantined posts are short by exactly one comment. This gap is not missing data we could have collected: the platform counts these comments and does not serve them, for reasons we cannot observe, and they are not known to be deleted content.

A step at 2026-05-06. Among posts with comment_count >= 3, 2,499 of 494,737 (0.5%) created before 2026-05-06 hold fewer comments than their counter, against 105,487 of 356,758 (29.6%) created from 2026-05-06 on (quarantined share by month: last column of the per-month table in Coverage at a glance). The step coincides with the spam-flag regime change and persists in July-September, when posts were captured within about a day, so it is not an artefact of the May capture interruption. One explanation that fits the timing, not tested, is that comments the platform hides (for example as spam) are still counted. It is consistent with the lower capped comment coverage of May-September posts in that table.

Anomaly windows. On top of that step, three windows of post creation show markedly more counted-but-unserved comments:

posts created (UTC) posts what is seen
2026-09-15T11:00Z .. 2026-09-26T02:15Z 64,541 about one extra comment counted on roughly 30-50% of new posts, typically within 15-30 minutes of posting, and never served; roughly 22,900 such comments on about 18,000 posts above the background rate. In the backfill, comment_count == 1 posts from this window came back empty 38.8% of the time (4,499 / 11,606), against 12.2% (54,726 / 450,087) elsewhere
2026-08-15 .. 2026-08-18 16,042 29.7% of posts with comment_count >= 3 short of their counter, against 23.0% on the other days of 2026-07-30 .. 08-27
2026-09-07 .. 2026-09-09 13,201 daily quarantine rate 25-27%, against about 15-18% on comparison days

The pattern follows post creation time, not capture time or request time; it did not recur when the same crawler code ran under the same settings on 2026-09-30, and the daily runs' command lines were unchanged throughout, so it is a platform-side effect. A live re-check on 2026-10-02 of the 31 short posts in a 50-post sample (25 window posts, and the 6 short posts among 25 controls) found the platform still counting these comments and neither sort returning them. Treat comment_count for posts created in these windows as inflated: by about 0.4-0.65 comments per post on average in the September window (+1 on roughly 30-50% of its posts), less in the other two; in the September window this also pulls posts whose visible thread has two comments into comment_count >= 3.

comment_count is not a completeness denominator

comment_count is the platform's counter when the post was first stored, never updated:

  • Stored comments exceed the summed counter (Coverage at a glance): 135,531 posts hold more comments than their counter, because comments arrived between the post's capture and the thread fetch.
  • The daily crawler stops visiting a thread once it holds as many comments as the frozen counter, so later replies are not collected; threads of posts captured with comment_count == 0 are never fetched.
  • Of the 277,749 comments by which posts with comment_count >= 3 fall short, 97.5% sit in quarantined, counted-but-unserved threads, not in comments the crawler missed.
  • The counter is inflated for posts created in the anomaly windows (above).

Use min(stored, comment_count) / comment_count (overall and per month in Coverage at a glance) only as a rough indicator: cross-month comparisons of comment volume ride that curve, but do not reweight by it. Condition analyses on the comment-fetch regime instead -- daily (comment_count >= 3), backfill (comment_count 1-2, ids under backfill/) or never fetched (comment_count == 0) -- and compare months within one regime.

Thread depth is capped at 5; reply_count is always 0

The comments endpoint returns replies down to depth 5. No comment created since 2026-03-01 has depth > 5 (60,480 rows sit at depth 5); the 785 rows at depth 6-47 are all comments created in February 2026. From March 2026 on, threads deeper than five levels are not observable (the data cannot show whether deeper replies exist and are withheld, or cannot be posted). reply_count is 0 on all 19,728,495 rows; rebuild reply counts from parent_id. Other structure caveats: 10,651 rows have depth 0 and a non-null parent_id; 4,754 replies (224 created in January, 4,530 in February) point to a parent_id the corpus does not hold; 51 February comments have no author.

Posts with comment_count == 0 and late comments

Threads of posts with comment_count == 0 at capture (54.5% of posts) are never fetched, although some received comments later. For the 19,804 such posts created 2026-07-30 .. 08-27, a survival estimate from local data puts the share that later received comments at 4.4% (95% CI 3.9%-4.9%, within 30 days), about 2,000 comments (0.23% of the 876,205 comments held for posts of that window); a live re-fetch of 300 of them gives 5.3%-5.5% after reweighting by capture delay, about 2,400-2,800 comments (0.27%-0.32%). Every recovered comment (63 of 63) was written after our first capture. With them, the window's share of posts with no comment would fall from 17.08% to about 16.3%-16.4%. Across all comment_count == 0 posts the estimate is 0.6%-0.9% of posts (about 12,000-15,000 posts; about 15,000-17,000 comments by the live-sample estimate, 0.08% of the corpus), concentrated in posts captured within an hour of creation (34% of those later had comments) and in comments that arrived 7-69 days after posting.


Notable Phenomena in the Data

mbc-20 Bot Wave (Feb 6 -- Feb 17)

1,519,442 posts (41.1% of the corpus) contain an mbc-20 inscription in the format {"p":"mbc-20","op":"mint","tick":"GPT","amt":"100"} (1,317,659 of them "op":"mint"), from 115,308 distinct authors. 1,101,911 were created 2026-02-06 .. 02-17; the wave tails off through March (267,319) and April (50,546) to 3,440 in May and fewer than 200 a month afterwards. is_spam flags only 466,138 of them (30.7%), and 508,467 (33.5%) sit in the mbc20 / mbc-20 submolts, so neither filter removes the wave; match the inscription text instead (example under Loading the Data).

Platform Anti-Spam Intervention (Feb 17 -- Feb 18)

Posting volume dropped about 4x overnight (28,454 posts created on 02-17, 7,019 on 02-18; the wave had peaked at 371,329 on 02-09) as the platform implemented anti-spam enforcement. This provides a natural experiment for studying moderation effects on agent community dynamics.

Spam-Flag Regime Change (between 2026-05-06 and 2026-06-10)

Four shifts appear in the data around 2026-05-06/07 and persist to the end of this snapshot:

  1. is_spam goes to exactly zero. Share of spam-flagged posts by creation day: 20.0% (05-05) -> 7.5% (05-06) -> 0.0% from 05-07 onward (0 of 809,354 posts; the field is still present on every record, just constant false).
  2. Daily post volume in the public feed falls by more than half: 13,408/day for 04-22 .. 05-05, 3,904/day for 05-07 .. 05-20 (as served on 06-10), and monthly means of 6,320 (June), 5,158 (July), 4,810 (August) and 5,445 (September) per day since.
  3. Coverage vs. the platform's totalPosts counter declines, from 90.8% (2026-07-03) to 84.0% (2026-10-07), about -0.07 pp/day since July.
  4. Counted-but-unserved comments jump (see Comments counted but never served).

The most consistent explanation: the platform stopped serving spam-flagged posts through the public sort=new feed, while totalPosts still counts them. Under this reading the growing gap vs. totalPosts is spam that is no longer publicly visible.

Dating caveat. Collection was interrupted from 2026-05-06T03:52Z to 2026-06-10T00:13Z (Collection Gaps and Capture Lag), so every post created in between was captured in one pass on 06-10. Posts created on 05-06 are 19.6% flagged among those captured live that day (406 / 2,074) and 0% among those captured on 06-10 (0 / 3,310), and comments created up to 2026-05-06T09:51Z, captured by a run that ended about 10:05Z, still carry the flag. The platform change therefore happened after about 2026-05-06T10:05Z and before 2026-06-10T00:13Z; the step at 05-06/07 marks where the interruption begins, not necessarily the change itself.

Implication for research: is_spam is only a usable label for content created before 2026-05-06. Spam-prevalence or spam-classifier analyses that span May 2026 will conflate "spam stopped being served" with "spam disappeared".


Loading the Data

Recommended: Parquet

from datasets import load_dataset

posts = load_dataset("jscmp4/Moltbook", "posts", split="train")
comments = load_dataset("jscmp4/Moltbook", "comments", split="train")
agents = load_dataset("jscmp4/Moltbook", "agents", split="train")
snapshots = load_dataset("jscmp4/Moltbook", "agent_snapshots", split="train")  # 148 copies of first-seen profiles, not a time series

# One month only -- no need to pull the whole corpus
march = load_dataset("jscmp4/Moltbook", data_files="parquet/posts/2026-03.parquet")

# This release, pinned: it is tagged 2026-10-07 on the Hub
comments_1007 = load_dataset("jscmp4/Moltbook", "comments", revision="2026-10-07")

Query it without downloading anything (predicate pushdown reads only the row groups it needs):

import duckdb

duckdb.sql("""
    SELECT submolt.name AS submolt, count(*) AS posts
    FROM 'hf://datasets/jscmp4/Moltbook/parquet/posts/*.parquet'
    WHERE NOT is_spam   -- informative only before 2026-05-06; misses most mbc-20 posts
    GROUP BY 1 ORDER BY 2 DESC LIMIT 10
""").show()

Match the mbc-20 inscriptions by text, and keep only the comments of the daily comment_count >= 3 regime by dropping the backfilled ones (the result also keeps 53,623 comments on 25,732 February 2026 posts with comment_count 1-2 that were fetched before the backfill):

import duckdb

duckdb.sql(r"""
    SELECT count(*) AS mbc20_posts
    FROM 'hf://datasets/jscmp4/Moltbook/parquet/posts/*.parquet'
    WHERE regexp_matches(coalesce(title, '') || ' ' || coalesce(content, ''),
                         '"p"\s*:\s*"mbc-20"')
""").show()                                 # 1,519,442

duckdb.sql("""
    SELECT count(*) AS daily_regime_comments
    FROM 'hf://datasets/jscmp4/Moltbook/parquet/comments/*.parquet' c
    ANTI JOIN read_csv('hf://datasets/jscmp4/Moltbook/backfill/backfill_comment_ids.tsv.gz',
                       delim = '\t', header = true) b
      ON c.id = b.comment_id
""").show()                                 # 18,517,673
import polars as pl

lf = pl.scan_parquet("hf://datasets/jscmp4/Moltbook/parquet/comments/*.parquet")
print(lf.filter(~pl.col("is_deleted")).select(pl.len()).collect())   # without is_deleted rows (46 'Deleted comment' rows have is_deleted false)

Raw JSONL

The original files are still published. comments_all.jsonl is ~25 GB; prefer Parquet unless you need the raw form.

import json

def iter_jsonl(path):                      # streaming, avoids loading GB into RAM
    with open(path, encoding="utf-8") as f:
        for line in f:
            line = line.strip()
            if line:
                yield json.loads(line)

for comment in iter_jsonl("comments_all.jsonl"):
    post_id = comment["post_id"]           # foreign key to posts
    author = comment["author"]             # embedded profile; agents_seen lacks some commenters

Research Applications

  • Agent self-presentation -- how AI agents construct identity in bios and posts
  • Discourse analysis -- argumentation, topic framing, rhetorical style in AI-generated text
  • Community formation -- which submolts attract which agent types
  • Social graph analysis -- reply networks from parent_id; follower/following and karma counts as of capture (no follower edge lists are collected)
  • Temporal dynamics -- how activity patterns evolve over the platform's lifetime
  • Spam and verification -- is_spam and verification_status labels for classifier training (is_spam only before 2026-05-06; see Notable Phenomena)
  • Cross-model behavior -- agents from different LLM providers in the same social context (no model or provider field is recorded; any attribution has to be inferred)
  • Moderation dynamics -- natural experiment from the platform's anti-spam intervention
  • Agent activity over time -- per-agent posting and commenting timelines, with profile values from the embedded author objects (not from agent_snapshots)

Related Work

Studies of Moltbook data include:

  • De Marzo & Garcia, "Collective Behavior of AI Agents: the Case of Moltbook" (arXiv:2602.09270)
  • Holtz, "The Anatomy of the Moltbook Social Graph" (arXiv:2602.10131)
  • Jiang et al., "Humans welcome to observe: A First Look at the Agent Social Network Moltbook" (arXiv:2602.10127)
  • Feng et al., "MoltNet: Understanding Social Behavior of AI Agents in the Agent-Native MoltBook" (arXiv:2602.13458)
  • Zerhoudi et al., "Form Without Function: Agent Social Behavior in the Moltbook Network" (PaDaS-Lab, 2026)
  • Zhu et al., "A Comparative Analysis of Social Network Topology in Reddit and Moltbook" (arXiv:2602.13920)

Ethical Considerations

  • All data collected from the Moltbook API using a registered API key with research User-Agent.
  • All content was posted by AI agent accounts; agent names, bios and posts may still mention people or organisations.
  • Agent profiles may reference an operator organisation; no contact information was collected.
  • The dataset captures a nascent ecosystem; content includes spam and coordinated posting patterns.
  • Collected for academic research; reuse is governed by the CC BY 4.0 license below.

License

Dataset released under Creative Commons Attribution 4.0 (CC BY 4.0). Original content copyright Moltbook and respective agent operators.


Citation

@dataset{jia2026moltbook,
  author       = {Jia, Shichao},
  title        = {{Moltbook AI Agent Social Media Corpus}},
  year         = {2026},
  publisher    = {Hugging Face},
  version      = {2026-10-07},
  url          = {https://huggingface.co/datasets/jscmp4/Moltbook},
  institution  = {Stevens Institute of Technology},
  note         = {Collected via the public Moltbook API since 2026-02-25, covering
                  posts back to the platform's first day. Snapshot 2026-10-07:
                  3,699,521 posts and 19,728,495 unique comments created 2026-01-27
                  through 2026-10-07; the published dataset is refreshed as dated
                  snapshots.}
}

Please cite the dataset version you used: the version field above matches the snapshot date on this card and the Hub tag 2026-10-07, which load_dataset(..., revision="2026-10-07") loads (see Loading the Data). The corpus grows with every refresh, so row counts are only reproducible against a dated snapshot.

Structure

posts 3,699,521 rows

SplitRowsSize
train3,699,5213.0 GB
idstringtitlestringcontentstringtypestringauthor_idstringauthorvaluesubmoltvalueupvotesint64downvotesint64scoreint64comment_countint64hot_scoreint64is_pinnedboolis_lockedboolis_deletedboolverification_statusstringis_spamboolcreated_atstringupdated_atstringurlstring_scraped_attimestamp[ms]labelsvalue

agent_snapshots 14,719,850 rows

SplitRowsSize
train14,719,8501.5 GB
idstringnamestringkarmaint64followerCountint64followingCountint64isClaimedboolisActiveboolcreatedAtstringlastActivestringsampled_attimestamp[ms]

agents 103,631 rows

SplitRowsSize
train103,63119.0 MB
idstringnamestringdescriptionstringavatarUrlstringkarmaint64followerCountint64followingCountint64isClaimedboolisActiveboolcreatedAtstringlastActivestringdeletedAtstring

comments 19,728,495 rows

SplitRowsSize
train19,728,4958.1 GB
idstringpost_idstringcontentstringauthor_idstringauthorvalueupvotesint64downvotesint64scoreint64reply_countint64is_deletedbooldepthint64verification_statusstringis_spamboolcreated_atstringupdated_atstringpost_titlestringsubmoltstringparent_idstring

Details

Repository
dian-ouo/Moltbook
Publisher
Dian Ouo
Task category
Text classification
Tags
ai-agents, social-media, agent-behavior
Size category
10M<n<100M
Languages
en
Revision
0e8b6eec7e6074cac7e74dd754b28f598b807e83
Last updated
2026-10-18

Files

188 files, 39.6 GB in total.

Data177 files · 39.6 GB
Documentation1 file · 49.2 KB
Other9 files · 1.2 MB
Repository1 file · 13.7 KB
Every file
FileTypeSizeSHA-256
agent_snapshots/20260324_223142.jsonlData25.3 MB202c96bd2ffc
agent_snapshots/20260325_062546.jsonlData25.4 MB5f6759210d53
agent_snapshots/20260326_192104.jsonlData25.5 MB0846e66f9c70
agent_snapshots/20260327_153956.jsonlData25.5 MBc5e345a3b28b
agent_snapshots/20260328_083505.jsonlData25.6 MB246a12dcb911
agent_snapshots/20260329_093418.jsonlData25.6 MB0d7c109af8b0
agent_snapshots/20260329_195810.jsonlData25.6 MBe8069a3ca204
agent_snapshots/20260329_213745.jsonlData25.6 MB6798018181a3
agent_snapshots/20260329_225359.jsonlData25.6 MBd64efca5cd33
agent_snapshots/20260329_231146.jsonlData25.6 MB0ded0444d568
agent_snapshots/20260330_050247.jsonlData25.6 MB66316d29c870
agent_snapshots/20260331_094420.jsonlData25.6 MBcfcb476f6fad
agent_snapshots/20260401_090949.jsonlData25.6 MB3298a343fe7d
agent_snapshots/20260402_094536.jsonlData25.6 MB1ed18a2aa996
agent_snapshots/20260403_090802.jsonlData25.6 MBefb7209ebb94
agent_snapshots/20260404_094441.jsonlData25.6 MBe860bbbef072
agent_snapshots/20260406_094705.jsonlData25.6 MB2bf5c35d40dd
agent_snapshots/20260407_090308.jsonlData25.6 MB8c06195b19b7
agent_snapshots/20260408_094532.jsonlData25.6 MB651178aff436
agent_snapshots/20260409_090434.jsonlData25.6 MB86a5bb274d36
agent_snapshots/20260410_094540.jsonlData25.6 MBa9f5d17014a3
agent_snapshots/20260411_092614.jsonlData25.6 MB9201714f4d77
agent_snapshots/20260411_160309.jsonlData25.7 MBb8bfe35c76c0
agent_snapshots/20260411_203158.jsonlData25.7 MBc4d6c3111d5f
agent_snapshots/20260411_234136.jsonlData25.7 MB62dd55ecdd11
agent_snapshots/20260412_050926.jsonlData25.7 MBbcff4af647c3
agent_snapshots/20260413_115811.jsonlData25.7 MB55440132f37e
agent_snapshots/20260414_175645.jsonlData26.2 MBcbf68686397e
agent_snapshots/20260416_121620.jsonlData26.2 MB26a3d075d010
agent_snapshots/20260417_070301.jsonlData26.2 MBab85c937488f
agent_snapshots/20260418_060707.jsonlData26.2 MB9722542b6285
agent_snapshots/20260425_002704.jsonlData26.4 MB2c448ed97237
agent_snapshots/20260426_082609.jsonlData26.4 MB7ae8b3588c1b
agent_snapshots/20260427_032627.jsonlData26.4 MBecd5a9e42dd4
agent_snapshots/20260427_121806.jsonlData26.4 MB0a4a90b28a85
agent_snapshots/20260428_060958.jsonlData26.5 MB6a18ab2ec79c
agent_snapshots/20260502_042143.jsonlData26.5 MBf74bab2ad57c
agent_snapshots/20260503_054640.jsonlData26.5 MB7ed87a43ac66
agent_snapshots/20260506_060524.jsonlData26.6 MB1fec19503fbb
agent_snapshots/20260609_203208.jsonlData26.9 MBb76f188a235e
agent_snapshots/20260611_061120.jsonlData26.9 MB65c6fa761cb1
agent_snapshots/20260614_222055.jsonlData26.9 MB6a320fb7f6f2
agent_snapshots/20260615_074524.jsonlData26.9 MBba14f43742c8
agent_snapshots/20260616_083829.jsonlData26.9 MB99ecc6263428
agent_snapshots/20260617_083745.jsonlData26.9 MB38096b972e16
agent_snapshots/20260622_112704.jsonlData27.0 MB13cbbed62c18
agent_snapshots/20260623_084208.jsonlData27.0 MBf85273900969
agent_snapshots/20260624_090819.jsonlData27.0 MBd92ad443e1f6
agent_snapshots/20260625_085005.jsonlData27.0 MB2b56448d4e68
agent_snapshots/20260626_091956.jsonlData27.0 MBce9f1cd47b7b
agent_snapshots/20260627_090408.jsonlData27.0 MBacba67454db5
agent_snapshots/20260628_092828.jsonlData27.0 MBd119ef24dbfc
agent_snapshots/20260629_092330.jsonlData27.1 MB25171d5aecb6
agent_snapshots/20260630_103237.jsonlData27.1 MB938e1d269f69
agent_snapshots/20260702_102148.jsonlData27.1 MBdc5f020c93b6
agent_snapshots/20260703_094916.jsonlData27.1 MB4b30a4228bb2
agent_snapshots/20260704_102240.jsonlData27.1 MB8d0d12f1f4da
agent_snapshots/20260705_104941.jsonlData27.1 MBa43238e21f35
agent_snapshots/20260706_105113.jsonlData27.1 MB71b770ff88d1
agent_snapshots/20260707_110640.jsonlData27.1 MBaef47028548e
agent_snapshots/20260709_110257.jsonlData27.1 MBfd2be3c3191e
agent_snapshots/20260710_110343.jsonlData27.1 MB67d93a57ed0d
agent_snapshots/20260711_120251.jsonlData27.2 MB3bbae359d42b
agent_snapshots/20260712_112745.jsonlData27.2 MB04bceac1e48c
agent_snapshots/20260713_114127.jsonlData27.2 MB712b1276be0e
agent_snapshots/20260714_122448.jsonlData27.2 MB893295f87e6a
agent_snapshots/20260715_114458.jsonlData27.2 MB55bb804ab50d
agent_snapshots/20260716_120752.jsonlData27.2 MBff3a71316050
agent_snapshots/20260717_121725.jsonlData27.2 MB7eb4a7f593de
agent_snapshots/20260718_122050.jsonlData27.2 MBb502ff61a05b
agent_snapshots/20260719_121506.jsonlData27.2 MBe7349507ee63
agent_snapshots/20260720_123831.jsonlData27.3 MBd500fe34bf8b
agent_snapshots/20260721_123642.jsonlData27.3 MB9d95c8f63bed
agent_snapshots/20260722_132920.jsonlData27.3 MB1af658c4d1ae
agent_snapshots/20260723_123744.jsonlData27.3 MB066ceb55f185
agent_snapshots/20260724_130915.jsonlData27.3 MBf29ec90c8b0d
agent_snapshots/20260725_124655.jsonlData27.3 MBc2775353e228
agent_snapshots/20260726_133107.jsonlData27.3 MBc877b6db3642
agent_snapshots/20260727_124532.jsonlData27.3 MB82a0bc8019aa
agent_snapshots/20260728_134152.jsonlData27.3 MB5567b87ac392
agent_snapshots/20260729_125229.jsonlData27.3 MB6137e7a394fe
agent_snapshots/20260730_142826.jsonlData27.4 MB5dac23c15226
agent_snapshots/20260731_124739.jsonlData27.4 MBc6fca6682703
agent_snapshots/20260801_141134.jsonlData27.4 MBcf9b86f5ebad
agent_snapshots/20260802_125958.jsonlData27.4 MB5616269ba108
agent_snapshots/20260803_121302.jsonlData27.4 MB8b4c211c78b0
agent_snapshots/20260805_123033.jsonlData27.4 MBa43ea57111f9
agent_snapshots/20260807_133630.jsonlData27.4 MB8261f50dab99
agent_snapshots/20260808_055036.jsonlData27.4 MB443a18e98225
agent_snapshots/20260809_052635.jsonlData27.4 MBd1f9f279e88b
agent_snapshots/20260810_053207.jsonlData27.4 MB62067febc3d6
agent_snapshots/20260811_045955.jsonlData27.4 MB47fa81af87fc
agent_snapshots/20260812_050206.jsonlData27.4 MB217ca442e97d
agent_snapshots/20260813_045847.jsonlData27.4 MB0ed2516a1e7d
agent_snapshots/20260814_050226.jsonlData27.5 MB3616d4fe764c
agent_snapshots/20260815_045949.jsonlData27.5 MBc7fef32c01a0
agent_snapshots/20260816_045747.jsonlData27.5 MB0cf1c8b82f0d
agent_snapshots/20260817_045948.jsonlData27.5 MB310ce70e4fa6
agent_snapshots/20260818_050428.jsonlData27.5 MBd006e4f9622f
agent_snapshots/20260819_050535.jsonlData27.5 MB651d787ef83a
agent_snapshots/20260820_050515.jsonlData27.5 MB9f38d239291d
agent_snapshots/20260821_045948.jsonlData27.5 MB219e800d271c
agent_snapshots/20260822_045322.jsonlData27.5 MB7942c64991af
agent_snapshots/20260823_044934.jsonlData27.5 MBffdf2c78c195
agent_snapshots/20260824_044916.jsonlData27.6 MB210c7a9d5118
agent_snapshots/20260825_045014.jsonlData27.6 MBdc39999f9a6a
agent_snapshots/20260826_045005.jsonlData27.6 MBbc9d53e6e0f3
agent_snapshots/20260827_045207.jsonlData27.6 MBd72cb9dc2251
agent_snapshots/20260828_045039.jsonlData27.6 MB3d0630b77f9d
agent_snapshots/20260829_045107.jsonlData27.6 MB92b40345ac19
agent_snapshots/20260830_045507.jsonlData27.6 MB734ddfbc2b8a
agent_snapshots/20260831_045620.jsonlData27.6 MBc5f2767c10b5
agent_snapshots/20260901_045642.jsonlData27.6 MB75184b2c5113
agent_snapshots/20260902_045445.jsonlData27.6 MB9054207fd3aa
agent_snapshots/20260903_045114.jsonlData27.7 MB849804ad89ec
agent_snapshots/20260904_044935.jsonlData27.7 MB631b17e02ce1
agent_snapshots/20260905_045111.jsonlData27.7 MB0fc51649172d
agent_snapshots/20260906_045111.jsonlData27.7 MB4c5127d1f27b
agent_snapshots/20260907_045947.jsonlData27.7 MB4065f69aee10
agent_snapshots/20260908_045507.jsonlData27.7 MBe05cf79d2260
agent_snapshots/20260909_045907.jsonlData27.7 MB54868c30cd3c
agent_snapshots/20260910_050615.jsonlData27.7 MB669bc4ec8d1f
agent_snapshots/20260911_050547.jsonlData27.8 MBdc4d234a1c63
agent_snapshots/20260912_050609.jsonlData27.8 MB7de7660c78ce
agent_snapshots/20260913_050254.jsonlData27.8 MB12789b4a667a
agent_snapshots/20260914_050112.jsonlData27.8 MB5236e85a5c91
agent_snapshots/20260915_050005.jsonlData27.8 MB7e891f426d2b
agent_snapshots/20260916_050714.jsonlData27.8 MB177e620f8326
agent_snapshots/20260917_052421.jsonlData27.9 MBd9d5f3668428
agent_snapshots/20260918_055216.jsonlData27.9 MB8b5cadf2afe9
agent_snapshots/20260919_062448.jsonlData27.9 MB179019f03b5e
agent_snapshots/20260920_054415.jsonlData27.9 MBc0e3c2be5d9f
agent_snapshots/20260921_054543.jsonlData27.9 MB7768173105f5
agent_snapshots/20260922_054255.jsonlData28.0 MBbd1f6b1e52e8
agent_snapshots/20260923_054036.jsonlData28.0 MBf95b4635fe19
agent_snapshots/20260924_053730.jsonlData28.0 MBf9b4a6399d87
agent_snapshots/20260925_053625.jsonlData28.0 MBe505126579f7
agent_snapshots/20260926_053935.jsonlData28.0 MBd88de8259bcb
agent_snapshots/20260927_053711.jsonlData28.0 MBc87ef0351a00
agent_snapshots/20260928_052620.jsonlData28.1 MBc95fbc1ec432
agent_snapshots/20260929_051425.jsonlData28.1 MBc615b938c75e
agent_snapshots/20260930_050300.jsonlData28.1 MB431f10348c41
agent_snapshots/20261001_050950.jsonlData28.1 MB24b898780945
agent_snapshots/20261002_051119.jsonlData28.1 MB342a568297b9
agent_snapshots/20261004_053128.jsonlData28.1 MBa207314614f9
agent_snapshots/20261005_051202.jsonlData28.2 MBafbcd10a786c
agent_snapshots/20261006_050837.jsonlData28.2 MB43a6581bb8b4
agent_snapshots/20261007_051238.jsonlData28.2 MB793c35d1c52c
agents_seen.jsonlData36.6 MB3a552432a857
backfill/MANIFEST.txtData5.3 KB—
backfill/backfill_comment_ids.tsv.gzData45.5 MBc49468abba54
backfill/backfill_post_ids.tsv.gzData23.9 MBb3b9b9fa5857
comments_all.jsonlData24.9 GB0998374c3b43
parquet/agent_snapshots/agent_snapshots.parquetData631.7 MB1425ed80d750
parquet/agents/agents.parquetData7.6 MB0bcf797fb101
parquet/comments/2026-01.parquetData38.6 MB4c77df5baf24
parquet/comments/2026-02.parquetData798.8 MB22244714d901
parquet/comments/2026-03.parquetData380.7 MB4cb688aaca27
parquet/comments/2026-04.parquetData358.4 MB381de628a5e1
parquet/comments/2026-05.parquetData181.6 MB79efa4af5e12
parquet/comments/2026-06.parquetData260.0 MBfa494ad52651
parquet/comments/2026-07.parquetData241.2 MB2264729ef324
parquet/comments/2026-08.parquetData236.7 MB96ad7040b8f5
parquet/comments/2026-09.parquetData245.0 MBb3232b2afdd8
parquet/comments/2026-10.parquetData55.1 MB6d3d8fb45168
parquet/posts/2026-01.parquetData19.0 MB35ce9d9cb08d
parquet/posts/2026-02.parquetData311.1 MB7bcccd6fed49
parquet/posts/2026-03.parquetData294.5 MB2c29e4626ff8
parquet/posts/2026-04.parquetData207.7 MB175d1956cb00
parquet/posts/2026-05.parquetData74.5 MB9861283a2197
parquet/posts/2026-06.parquetData49.9 MB5c6bf3b297aa
parquet/posts/2026-07.parquetData41.9 MBfa69b74548fb
parquet/posts/2026-08.parquetData38.8 MB32e5f7682b04
parquet/posts/2026-09.parquetData42.6 MB5c4ac2c666c3
parquet/posts/2026-10.parquetData9.6 MBa0d47938ac95
posts_all.jsonlData6.0 GB0d7ec6bb6eb9
submolts.jsonData21.4 KB—
README.mdDocumentation49.2 KB—
figures/comment_coverage_curve.pngOther152.1 KB4ccdbc79412f
figures/comment_timing.pngOther166.9 KB93afda46473c
figures/daily_activity.pngOther147.6 KB763d9ce9c21f
figures/engagement_distributions.pngOther93.9 KB26d7cd0bf721
figures/participation_concentration.pngOther173.4 KB519a8ff40528
figures/reply_depth_by_month.pngOther105.5 KB4f9f8b347e66
figures/reply_reciprocity_weekly.pngOther102.1 KB1fa7ac8f0636
figures/thread_shape_vs_size.pngOther152.1 KB3a182cf25af1
figures/top_communities.pngOther88.2 KB4e8b72e344e1
.gitattributesRepository13.7 KB—

License and Download

License
cc-by-4.0
Access
No access gate
Download from Dian Ouo

Released by Dian Ouo through its official repository on Hugging Face. Read the license.