Skip to main content
مستندات
مرکز آموزش

مدیریت محتوا را با راهنماهای جامع، آموزش‌ها و مستندات API به‌خوبی یاد بگیرید

لینک‌های سریع

راهنمای مدیریت محتوای AI

Discuse متن و تصویر را از نظر احساسات/سمیت، هرزنامه، زبان نامطلوب، واژه‌های نامناسب، لینک‌ها و تصاویر صریح بررسی می‌کند و سپس برای هر دسته نتیجه‌ای جداگانه برمی‌گرداند تا کد شما بتواند محتوا را به‌صورت خودکار تأیید، علامت‌گذاری یا رد کند. شما محتوا را به یک endpoint، POST https://api.discuse.com/api/v2/check، ارسال می‌کنید و امتیازهای ساختاریافته را دریافت می‌کنید. این راهنما توضیح می‌دهد بررسی‌ها چگونه کار می‌کنند، الگوهای مدیریت محتوا پیرامون آن‌ها چیست، و چطور Discuse API را به فرایند کاری خود متصل کنید.

تعدیل محتوای AI چیست؟

تعدیل محتوای AI از مدل‌های یادگیری ماشین برای شناسایی و دسته‌بندی خودکار محتوای بالقوه آسیب‌زا استفاده می‌کند. در حالی که بازبین انسانی هر مورد را جداگانه می‌خواند، این مدل‌ها محتوا را به‌محض دریافت امتیازدهی می‌کنند؛ بنابراین ارسال‌ها می‌توانند پیش از آن‌که به دست کاربران دیگر برسند بررسی شوند.

چگونه کار می‌کند؟

  1. ارسال محتوا: متن و/یا URLهای رسانه را به API تعدیل ارسال کنید.
  2. اجرای بررسی‌ها: API بررسی‌های فعال‌شده را اجرا می‌کند (احساسات، زبان، هرزنامه، کلمات نامناسب، تصاویر، لینک‌ها، آنتی‌ویروس).
  3. امتیازدهی به هر دسته: هر بررسی امتیازها و یک پرچم hit برمی‌گرداند که نشان می‌دهد آیا از آستانه‌ای که پیکربندی کرده‌اید عبور کرده است یا نه.
  4. تصمیم‌گیری: برای تأیید، علامت‌گذاری یا رد کردن، has_violations (و امتیازهای مربوط به هر بررسی) را بخوانید.

با Discuse، درخواست به این شکل است:

const response = await fetch('https://api.discuse.com/api/v2/check', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': process.env.DISCUSE_API_KEY
  },
  body: JSON.stringify({
    content: { text: 'message to check', image_urls: ['https://...'] },
    settings: { check_sentiment: true, check_spam: true, check_images: true }
  })
});
const result = await response.json(); // { has_violations, results: { sentiment, spamfinder, images, ... }, usage }

هر بررسی Discuse چه مواردی را پوشش می‌دهد؟

بررسی (کلید settings) موارد تحت پوشش فیلدهای کلیدی نتیجه
check_sentiment منفی‌بودن، سمی‌بودن، ناسزاگویی، تهدیدها و توهین‌ها در متن sentiment.is_toxic, sentiment.toxicity, sentiment.score, sentiment.hit
check_spam دسته‌بندی متن به‌عنوان هرزنامه spamfinder.label, spamfinder.confidence, spamfinder.is_spam, spamfinder.hit
check_language این‌که آیا متن با زبان مورد انتظار مطابقت دارد یا نه language.language, language.confidence, language.hit
check_badwords تطبیق با فهرست سفارشی کلمات نامناسب badwords.hit, badwords.matched_words
check_images تصاویر صریح در URLهای تصویر images.porn, images.sexual, images.neutral, images.hit
check_links اعتبار لینک links.status, links.hit
check_antivirus بدافزار در URLهای سند/فایل antivirus.status, antivirus.hit

هر کلید یک مقدار بولی است. آستانه‌های عددی که یک امتیاز را به hit تبدیل می‌کنند، برای هر پروژه در داشبورد پیکربندی می‌شوند و در هر درخواست ارسال نمی‌شوند — به راهنمای پیکربندی آستانه مراجعه کنید.

مزایای نظارت AI

مقیاس‌پذیری

AI حجم‌هایی از محتوا را پردازش می‌کند که از توان تیم‌های انسانی خارج است. یک فراخوانی API نتیجه را در چند میلی‌ثانیه برمی‌گرداند، بنابراین نظارت هم‌گام با ارسال‌ها پیش می‌رود و پشت صف بررسی عقب نمی‌ماند. بررسی‌های خودکار را برای موارد مرزی با یک صف انسانی ترکیب کنید (در ادامه توضیح داده شده است).

سرعت

بررسی‌های بلادرنگ به شما امکان می‌دهند محتوا را پیش از انتشار غربال کنید:

// Pre-moderation: Check content before publishing
async function publishPost(content) {
  const moderation = await checkContent(content);

  if (moderation.has_violations) {
    return { published: false, reason: moderation.message };
  }

  // Content passes moderation
  return await saveAndPublish(content);
}

یکپارچگی

AI قوانین یکسانی را به‌طور یکنواخت روی همه محتواها اعمال می‌کند؛ بدون خستگی و بدون تفاوت میان بررسی‌کنندگان. تصمیم‌ها قابل بازتولیدند: ورودی یکسان با آستانه‌های یکسان پروژه، همان پرچم‌های hit را ایجاد می‌کند و این موضوع اجرای قوانین را قابل ممیزی می‌سازد.

معماری نظارت

جریان پیشانظارت

User Submits → AI Check → Decision
                 ↓
    ┌───────────┼───────────┐
    ↓           ↓           ↓
  Allow      Review       Block
    ↓           ↓           ↓
 Publish   Human Queue   Reject

جریان پس‌نظارت

User Submits → Publish → AI Check → Action
                           ↓
              ┌────────────┼────────────┐
              ↓            ↓            ↓
            Safe       Borderline    Violation
              ↓            ↓            ↓
           Keep       Flag/Review    Remove

رویکرد ترکیبی (توصیه‌شده)

پاسخ Discuse زمانی has_violations را تنظیم می‌کند که هر بررسی فعال‌شده‌ای از آستانهٔ پیکربندی‌شدهٔ خود عبور کند، و امتیازهای زیربنایی هر دسته را نیز در اختیارتان می‌گذارد تا بتوانید بازهٔ اطمینان خودتان را روی آن اضافه کنید:

async function moderateContent(content) {
  const result = await checkContent(content);

  // Build a confidence figure from the scores you care about.
  // e.g. the toxicity score and the spam classifier confidence.
  const confidence = Math.max(
    result.results?.sentiment?.toxicity ?? 0,
    result.results?.spamfinder?.confidence ?? 0,
    result.results?.images?.porn ?? 0
  );

  // High confidence: automate.
  if (confidence > 0.95) {
    return result.has_violations
      ? { action: 'auto_remove', reason: result.message }
      : { action: 'auto_approve' };
  }

  // Medium confidence: route to a human.
  if (confidence > 0.5) {
    await addToReviewQueue(content, result);
    return { action: 'pending_review' };
  }

  // Low confidence: approve, keep watching.
  return { action: 'approve_with_monitoring' };
}

پیاده‌سازی نظارت با AI

گام ۱: سیاست خود را تعریف کنید

پیش از فراخوانی API تصمیم بگیرید چه محتوایی قابل‌قبول است و برای هر دسته باید چه اقدامی انجام شود. در Discuse، حدّ عددی هر دسته در تنظیمات پروژه شما (داشبورد) قرار دارد؛ بنابراین سیاست برنامه شما نتیجه API را به یک اقدام نگاشت می‌کند، نه اینکه دوباره آستانه را تعیین کند:

const MODERATION_POLICY = {
  // What to do when a given Discuse check reports a hit.
  // Thresholds themselves are configured per project in the dashboard.
  actions: {
    sentiment: 'block',   // toxic / threatening text
    spam: 'block',
    badwords: 'flag',
    images: 'block',      // explicit imagery
    links: 'flag'
  }
};

گام ۲: API را یکپارچه کنید

محتوا و بررسی‌هایی را که می‌خواهید برای این درخواست فعال باشند ارسال کنید. هر سوییچ check_* یک مقدار بولی اختیاری است که مقدار پیش‌فرض پروژه را برای همین فراخوانی بازنویسی می‌کند:

async function checkContent(content) {
  const response = await fetch('https://api.discuse.com/api/v2/check', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.DISCUSE_API_KEY
    },
    body: JSON.stringify({
      content: {
        text: content.text,
        image_urls: content.images
      },
      settings: {
        check_sentiment: true,
        check_spam: true,
        check_images: true
      }
    })
  });

  if (!response.ok) {
    throw new Error(`Discuse API returned ${response.status}`);
  }
  return response.json();
}

گام ۳: تصمیم‌ها را اعمال کنید

هر بررسی‌ای را که یک hit گزارش می‌کند، به اقدامی که تعریف کرده‌اید نگاشت کنید:

function applyModerationDecision(result) {
  const r = result.results || {};

  if (r.sentiment?.hit) return { action: MODERATION_POLICY.actions.sentiment, category: 'sentiment' };
  if (r.spamfinder?.hit) return { action: MODERATION_POLICY.actions.spam, category: 'spam' };
  if (r.images?.hit)    return { action: MODERATION_POLICY.actions.images, category: 'images' };
  if (r.badwords?.hit)  return { action: MODERATION_POLICY.actions.badwords, category: 'badwords' };
  if (r.links?.hit)     return { action: MODERATION_POLICY.actions.links, category: 'links' };

  return { action: 'allow' };
}

گام ۴: موارد خاص را مدیریت کنید

async function handleModerationResult(content, result) {
  switch (result.action) {
    case 'block':
      await notifyUser(content.author, 'content_blocked', result);
      await logModeration(content, result);
      return false;

    case 'flag':
      await addToReviewQueue(content, result);
      await publishWithWarning(content);
      return true;

    case 'allow':
      await publish(content);
      return true;

    default:
      // Unknown action - fail safe by blocking
      await logError('unknown_moderation_action', result);
      return false;
  }
}

بهترین روش‌ها

محافظه‌کارانه شروع کنید و به‌مرور تنظیم کنید

کار را با آستانه‌های سخت‌گیرانه‌تر برای پروژه شروع کنید و هم‌زمان با اندازه‌گیری موارد مثبتِ کاذب، آن‌ها را ملایم‌تر کنید. در Discuse این آستانه‌ها جزو تنظیمات پروژه هستند؛ بنابراین تنظیم و بهینه‌سازی آن‌ها در داشبورد انجام می‌شود (یا از طریق settings update API)، نه در هر درخواست جداگانه. برای آشنایی با روند کار، راهنمای پیکربندی آستانه‌ها را ببینید.

صف بازبینی انسانی داشته باشید

AI باید قضاوت انسانی را در موارد مرزی تقویت کند، نه اینکه جایگزین آن شود:

async function processReviewQueue() {
  const items = await getReviewQueue();

  for (const item of items) {
    // Present to human reviewer with AI context
    const reviewUI = {
      content: item.content,
      ai_scores: item.moderation_result,
      similar_decisions: await getSimilarPreviousDecisions(item)
    };

    // Human makes final decision
    const decision = await presentToReviewer(reviewUI);

    // Log for model improvement
    await logHumanDecision(item, decision);
  }
}

پایش کنید و بهبود دهید

برای بهبود سیستم نظارت محتوای خود، شاخص‌های کلیدی را دنبال کنید:

const METRICS = {
  // Accuracy metrics
  false_positive_rate: 'Content incorrectly blocked',
  false_negative_rate: 'Harmful content missed',

  // Operational metrics
  average_response_time: 'API latency',
  review_queue_depth: 'Human review backlog',

  // User impact
  appeal_rate: 'Users appealing decisions',
  appeal_success_rate: 'Appeals overturned'
};

به اعتراض‌ها با دقت رسیدگی کنید

وقتی کاربری اعتراض می‌کند، به‌جای تصمیم‌گیری دوباره به‌صورت خودکار، آن مورد را به بازبین انسانی ارجاع دهید. امتیازهای اولیه Discuse و سابقه کاربر را به‌عنوان زمینه در اختیار بازبین قرار دهید:

async function handleAppeal(contentId, userId) {
  const original = await getContentWithModeration(contentId);

  await addToReviewQueue(contentId, {
    type: 'appeal',
    original_decision: original.moderation, // Discuse `results` saved at decision time
    author_history: await getAuthorHistory(userId)
  });

  return { status: 'pending', message: 'Under review' };
}

خود API هیچ پارامتر «context» یا «author history» برای هر درخواست ندارد — زمینه چیزی است که شما در سمت خودتان، هنگام انتخاب آستانه‌ها و مسیریابی برای بازبینی، اعمال می‌کنید.

دام‌های رایج

اتکای بیش‌ازحد به AI

خودکارسازی همهٔ تصمیم‌ها یعنی خودکارسازی همهٔ اشتباه‌ها. برای موارد زیر حتماً انسان را در چرخه نگه دارید:

  • تصمیم‌های پیچیده و وابسته به زمینه
  • محتوای حساس و پرریسک (حقوقی، ایمنی)
  • اعتراض‌ها و موارد مرزی

نادیده گرفتن زمینه

یک عبارت واحد بسته به زمینه می‌تواند آسیب‌زا یا قابل‌قبول باشد:

"I'm going to kill it at this interview!" // Positive
"I'm going to kill you"                    // Threat

Discuse هر پیام را به‌تنهایی امتیازدهی می‌کند؛ هیچ پارامتر «زمینه» در سطح درخواست ندارد. زمینه را در سمت خودتان اعمال کنید: برای هر سطح، آستانه‌های سخت‌گیرانه‌تر یا آسان‌گیرانه‌تر پروژه را انتخاب کنید (پست عمومی در برابر پیام مستقیم)، و hitهای مرزی را برای بازبینی انسانی ارجاع دهید.

تنظیم کن و فراموش کن

مدیریت و پالایش محتوا نیازمند تنظیم و بهینه‌سازی مداوم است:

  • نرخ‌های مثبت کاذب/منفی کاذب را پایش کنید
  • آستانه‌ها را بر اساس داده‌ها به‌روزرسانی کنید
  • الگوهای جدید محتوا را بازبینی کنید
  • مدل‌ها را دوباره آموزش دهید یا به‌روزرسانی کنید

اجرای ناهماهنگ

سیاست را بر اساس قاعده اعمال کنید، نه بر اساس اینکه چه کسی آن را منتشر کرده است. آستانه‌ها را به‌جای استثناهای موردی، بر پایهٔ سطح اعتمادی مستند تعیین کنید:

// Avoid: per-person exceptions
if (user.isInfluencer) { /* lenient */ }

// Prefer: thresholds keyed to a documented trust level,
// configured the same way for everyone in that level.
const action = MODERATION_POLICY.actions[category];

گام‌های بعدی

نوشته تیم Discuse · آخرین به‌روزرسانی June 2026

مقاله‌های مرتبط

پیکربندی آستانه‌های تشخیص

موارد مثبت و منفی کاذب را برای کاربرد خود متعادل کنید

مقیاس‌پذیر کردن مدیریت محتوا

الگوهای معماری برای مدیریت محتوای پرترافیک