DEV Community

Sebastian Casvean
Sebastian Casvean

Posted on Originally published at zenndra.com

Pull Medium Comments into Your Moderation Dashboard

Pull Medium Comments into Your Moderation Dashboard

If you syndicate full articles on-site, community managers still need responses in one ops stack. Scraping comment threads breaks when Medium tweaks markup; a responses endpoint does not.

Tool outcome: moderation_queue table fed by /article/{id}/responses on a schedule.


Workflows

  • Flag threads for human review in Retool or a custom admin.
  • Count responses per syndicated post for SLA reporting.
  • Export plain text for NLP toxicity scoring (run your own models; do not ship PII to random APIs without policy).

Ingest responses

const API = 'https://api.zenndra.com';
const headers = { Authorization: `Bearer ${process.env.ZENNDRA_API_KEY}` };

async function importResponses(articleId) {
  const res = await fetch(`${API}/article/${articleId}/responses`, { headers });
  const { responses } = await res.json();

  for (const r of responses ?? []) {
    await db.query(
      `INSERT INTO moderation_queue (response_id, article_id, author_id, body, status)
       VALUES ($1, $2, $3, $4, 'pending')
       ON CONFLICT (response_id) DO NOTHING`,
      [r.id, articleId, r.author_id, r.content ?? r.text]
    );
  }
}
Enter fullscreen mode Exit fullscreen mode

List-level threads: /list/{list_id}/responses for list-native discussions.


Enrich for reviewers

Pair with:

  • /article/{id} — post title, tags, URL context
  • /user/{user_id} — author bio, follower count (signals for spam)

Store response_id to keep imports idempotent.


Product tips

  • Show original Medium permalink in the admin so moderators can escalate on-platform.
  • Auto-hide on your embed only after decision—Medium’s thread may still exist.
  • Rate-limit polling; comments are not stock tickers.

Keywords

medium comments api, medium responses endpoint, medium moderation, syndicated blog comments.


Further reading

Top comments (0)