# Discord Community Digest Generator (`charlieakan/discord-community-digest-generator`) Actor

Generate daily or weekly Discord community digests, top links, unanswered questions, active channels, and markdown summaries from servers you manage.

- **URL**: https://apify.com/charlieakan/discord-community-digest-generator.md
- **Developed by:** [CharlieAKAN](https://apify.com/charlieakan) (community)
- **Categories:** Social media, Automation, Other
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / completed discord community digest

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Discord Community Digest Generator

Generate daily or weekly Discord community digests from servers you own or manage.

This Actor turns recent Discord channel activity into CSV/API-friendly rows and a ready-to-copy markdown digest. It is built for community managers, server owners, moderators, creators, support teams, and product communities.

### What it generates

The Actor scans selected Discord channels and reports:

- total messages scanned
- active channels
- unique authors
- most active channels
- most active authors
- links shared
- open-looking questions
- attachment counts
- optional message samples
- a markdown digest summary

This v1 uses deterministic heuristics. It does **not** call an LLM by default, so cost and behavior are predictable.

### Important permission note

This Actor is for Discord servers you own or manage. It requires your own Discord bot token and only accesses channels your bot has permission to read.

It does **not** bypass Discord permissions, use user tokens, scrape private servers, or extract members from servers you do not control.

For message content, your Discord bot may need the Message Content Intent enabled in the Discord Developer Portal and the right channel permissions.

### Input

```json
{
  "botToken": "YOUR_DISCORD_BOT_TOKEN",
  "guildId": "123456789012345678",
  "channelIds": ["234567890123456789"],
  "hoursBack": 24,
  "maxMessagesPerChannel": 500,
  "includeMessageSamples": false,
  "includeMarkdownDigest": true,
  "topLimit": 10
}
````

#### Input fields

- `botToken` — Discord bot token. Store this as a secret.
- `guildId` — Discord server ID.
- `channelIds` — optional text/thread/announcement channel IDs. If omitted, the Actor scans visible text and announcement channels.
- `hoursBack` — time window, 1 to 168 hours.
- `maxMessagesPerChannel` — per-channel scan cap.
- `includeMessageSamples` — include short snippets in output. Disabled by default for privacy.
- `includeMarkdownDigest` — write a ready-to-copy markdown digest row.
- `topLimit` — number of top links/questions/authors to include.

### Output

Dataset row types:

- `summary`
- `channel_activity`
- `active_author`
- `link`
- `question`
- `markdown_digest`
- `channel_error`

Example markdown digest row:

```json
{
  "recordType": "markdown_digest",
  "guildId": "123456789012345678",
  "markdownDigest": "# Discord community digest\n..."
}
```

### Common uses

- create daily or weekly Discord recaps
- find active channels and dead channels
- collect links shared by the community
- surface unanswered-looking questions
- prepare moderator/community manager reports
- export community activity to Sheets, Notion, Airtable, or a warehouse

# Actor input Schema

## `botToken` (type: `string`):

Discord bot token. Use an Apify secret. The bot must be installed in the server and have permission to view selected channels and read message history.

## `guildId` (type: `string`):

Discord guild/server ID that you own or manage.

## `channelIds` (type: `array`):

Text, announcement, forum thread, or public thread channel IDs to include. If empty, the Actor uses visible text/announcement channels.

## `hoursBack` (type: `integer`):

How far back to collect messages for the digest.

## `maxMessagesPerChannel` (type: `integer`):

Maximum messages to scan per selected channel.

## `includeMessageSamples` (type: `boolean`):

Include short representative message snippets in the output. Disable for stricter privacy.

## `includeMarkdownDigest` (type: `boolean`):

Write a ready-to-copy markdown digest row.

## `topLimit` (type: `integer`):

How many top channels, links, questions, and active users to include.

## Actor input object example

```json
{
  "hoursBack": 24,
  "maxMessagesPerChannel": 500,
  "includeMessageSamples": false,
  "includeMarkdownDigest": true,
  "topLimit": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("charlieakan/discord-community-digest-generator").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("charlieakan/discord-community-digest-generator").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call charlieakan/discord-community-digest-generator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=charlieakan/discord-community-digest-generator",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Discord Community Digest Generator",
        "description": "Generate daily or weekly Discord community digests, top links, unanswered questions, active channels, and markdown summaries from servers you manage.",
        "version": "0.1",
        "x-build-id": "xfFIZvx1Meh1qPJqm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/charlieakan~discord-community-digest-generator/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-charlieakan-discord-community-digest-generator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/charlieakan~discord-community-digest-generator/runs": {
            "post": {
                "operationId": "runs-sync-charlieakan-discord-community-digest-generator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/charlieakan~discord-community-digest-generator/run-sync": {
            "post": {
                "operationId": "run-sync-charlieakan-discord-community-digest-generator",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "botToken",
                    "guildId"
                ],
                "properties": {
                    "botToken": {
                        "title": "Discord bot token",
                        "type": "string",
                        "description": "Discord bot token. Use an Apify secret. The bot must be installed in the server and have permission to view selected channels and read message history."
                    },
                    "guildId": {
                        "title": "Discord server ID",
                        "type": "string",
                        "description": "Discord guild/server ID that you own or manage."
                    },
                    "channelIds": {
                        "title": "Channel IDs",
                        "type": "array",
                        "description": "Text, announcement, forum thread, or public thread channel IDs to include. If empty, the Actor uses visible text/announcement channels.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "hoursBack": {
                        "title": "Hours back",
                        "minimum": 1,
                        "maximum": 168,
                        "type": "integer",
                        "description": "How far back to collect messages for the digest.",
                        "default": 24
                    },
                    "maxMessagesPerChannel": {
                        "title": "Max messages per channel",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum messages to scan per selected channel.",
                        "default": 500
                    },
                    "includeMessageSamples": {
                        "title": "Include message samples",
                        "type": "boolean",
                        "description": "Include short representative message snippets in the output. Disable for stricter privacy.",
                        "default": false
                    },
                    "includeMarkdownDigest": {
                        "title": "Include markdown digest",
                        "type": "boolean",
                        "description": "Write a ready-to-copy markdown digest row.",
                        "default": true
                    },
                    "topLimit": {
                        "title": "Top item limit",
                        "minimum": 3,
                        "maximum": 50,
                        "type": "integer",
                        "description": "How many top channels, links, questions, and active users to include.",
                        "default": 10
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
