You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于关键词通过API删除Instagram评论:监听流与存量处理问询

Instagram Comment Moderation: Real-Time Listening + Bulk Deletion

Hey there! Let's tackle your comment moderation needs with practical, straightforward solutions using Instagram's official Graph API—this is the most reliable approach approved by Meta.

1. Simplest Way to Listen for Incoming Comments

The minimal efficient implementation uses webhooks (instead of polling, which is slow and risky for rate limits). Here's how to set it up:

Step-by-Step Setup

  • First, create a Facebook Developer account, register an app, and link your Instagram Business Account to it. You'll need these permissions: pages_show_list, instagram_basic, pages_manage_comments.
  • Configure a webhook for your app, subscribing to the comments field under your linked Instagram page. This tells Meta to send an HTTP POST request to your server every time a new comment is added.
  • Build a simple endpoint on your server to receive and process these webhook events.

Example Webhook Handler (Node.js/Express)

require('dotenv').config();
const express = require('express');
const fetch = require('node-fetch');
const app = express();

app.use(express.json());

// Your webhook endpoint
app.post('/instagram-comment-webhook', async (req, res) => {
  // Verify webhook (required for initial setup—follow Meta's docs for this step)
  if (req.body.object === 'page') {
    req.body.entry.forEach(entry => {
      entry.changes.forEach(async change => {
        if (change.field === 'comments') {
          const comment = change.value.comment;
          const forbiddenKeywords = ['spam', 'hateword', 'scam']; // Replace with your keywords

          // Check for forbidden keywords (case-insensitive)
          const isForbidden = forbiddenKeywords.some(keyword => 
            comment.text.toLowerCase().includes(keyword.toLowerCase())
          );

          if (isForbidden) {
            // Delete the violating comment
            await fetch(`https://graph.facebook.com/v18.0/${comment.id}`, {
              method: 'DELETE',
              headers: {
                'Authorization': `Bearer ${process.env.INSTAGRAM_ACCESS_TOKEN}`
              }
            });
            console.log(`Deleted comment ID: ${comment.id}`);
          }
        }
      });
    });
    res.status(200).send('EVENT_RECEIVED');
  } else {
    res.sendStatus(404);
  }
});

app.listen(3000, () => console.log('Webhook server running on port 3000'));

2. Delete Existing Comments with Target Keywords

To clean up old comments, you'll need to fetch all comments for your posts/media, filter them by keywords, and delete the matches.

Step-by-Step Process

  • Use the Graph API to fetch comments for each of your media posts (handle pagination, since API responses are limited per request).
  • Loop through each comment, check if it contains any forbidden keywords.
  • Call the delete endpoint for every matching comment.

Example Bulk Deletion Script (Python)

import requests

# Replace these with your values
ACCESS_TOKEN = "your_instagram_access_token"
FORBIDDEN_KEYWORDS = ["spam", "hateword", "scam"]
# If you want to target all posts, first fetch your media IDs (see Graph API docs)
TARGET_MEDIA_IDS = ["your_post_id_1", "your_post_id_2"]

def delete_violating_comments(media_id):
    next_page_url = f"https://graph.facebook.com/v18.0/{media_id}/comments?access_token={ACCESS_TOKEN}"
    
    while next_page_url:
        response = requests.get(next_page_url)
        data = response.json()
        
        # Process each comment in the current page
        for comment in data.get("data", []):
            comment_text = comment["text"].lower()
            if any(keyword.lower() in comment_text for keyword in FORBIDDEN_KEYWORDS):
                # Delete the comment
                delete_response = requests.delete(
                    f"https://graph.facebook.com/v18.0/{comment['id']}?access_token={ACCESS_TOKEN}"
                )
                if delete_response.ok:
                    print(f"Deleted old comment ID: {comment['id']}")
        
        # Move to the next page of comments
        next_page_url = data.get("paging", {}).get("next")

# Run deletion for all target media
for media_id in TARGET_MEDIA_IDS:
    delete_violating_comments(media_id)

Key Notes

  • Permissions: Make sure your access token has the required permissions mentioned earlier, and that it's valid (short-lived tokens can be extended to long-lived for ongoing use).
  • Rate Limits: Meta enforces rate limits on API calls—avoid hitting them by adding small delays if you're processing a huge number of comments.
  • Keyword Matching: For more precision, you can use regular expressions instead of simple string checks (e.g., to avoid partial matches like "scammer" when targeting "scam").

内容的提问来源于stack exchange,提问作者mrSidX

火山引擎 最新活动