{"id":51126540,"url":"https://github.com/apiverve/content-moderator-node-tutorial","last_synced_at":"2026-06-25T08:01:58.595Z","repository":{"id":338744040,"uuid":"1158966841","full_name":"apiverve/content-moderator-node-tutorial","owner":"apiverve","description":"Content moderation tool for filtering profanity built with Node.js","archived":false,"fork":false,"pushed_at":"2026-02-16T07:40:23.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-16T14:17:12.816Z","etag":null,"topics":["apiverve","content-moderation","express","moderation","nodejs","profanity-filter","text-filtering","tutorial"],"latest_commit_sha":null,"homepage":"https://apiverve.com/marketplace/profanityfilter","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apiverve.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-16T06:22:58.000Z","updated_at":"2026-02-16T07:40:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/apiverve/content-moderator-node-tutorial","commit_stats":null,"previous_names":["apiverve/content-moderator-node-tutorial"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/apiverve/content-moderator-node-tutorial","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apiverve%2Fcontent-moderator-node-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apiverve%2Fcontent-moderator-node-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apiverve%2Fcontent-moderator-node-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apiverve%2Fcontent-moderator-node-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apiverve","download_url":"https://codeload.github.com/apiverve/content-moderator-node-tutorial/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apiverve%2Fcontent-moderator-node-tutorial/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34765322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apiverve","content-moderation","express","moderation","nodejs","profanity-filter","text-filtering","tutorial"],"created_at":"2026-06-25T08:01:58.516Z","updated_at":"2026-06-25T08:01:58.590Z","avatar_url":"https://github.com/apiverve.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Content Moderator | APIVerve API Tutorial\r\n\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\r\n[![Build](https://img.shields.io/badge/Build-Passing-brightgreen.svg)]()\r\n[![Node.js](https://img.shields.io/badge/Node.js-18+-339933)](https://nodejs.org)\r\n[![Express](https://img.shields.io/badge/Express-4-000000)](https://expressjs.com)\r\n[![APIVerve | Profanity Filter](https://img.shields.io/badge/APIVerve-Profanity_Filter-purple)](https://apiverve.com/marketplace/profanityfilter?utm_source=github\u0026utm_medium=tutorial\u0026utm_campaign=content-moderator-node-tutorial)\r\n\r\nA Node.js web app for filtering profanity from user-generated content. Perfect for moderating comments, chat messages, and user submissions.\r\n\r\n![Screenshot](https://raw.githubusercontent.com/apiverve/content-moderator-node-tutorial/main/screenshot.jpg)\r\n\r\n---\r\n\r\n### Get Your Free API Key\r\n\r\nThis tutorial requires an APIVerve API key. **[Sign up free](https://dashboard.apiverve.com?utm_source=github\u0026utm_medium=tutorial\u0026utm_campaign=content-moderator-node-tutorial)** - no credit card required.\r\n\r\n---\r\n\r\n## Features\r\n\r\n- Filter profanity from any text input\r\n- Customizable mask character (*, #, etc.)\r\n- Shows filtered result and flagged words\r\n- Clean/Flagged status indicator\r\n- Count of profane words found\r\n- Modern, responsive UI\r\n- Built with Express.js\r\n\r\n## Quick Start\r\n\r\n1. **Clone this repository**\r\n   ```bash\r\n   git clone https://github.com/apiverve/content-moderator-node-tutorial.git\r\n   cd content-moderator-node-tutorial\r\n   ```\r\n\r\n2. **Install dependencies**\r\n   ```bash\r\n   npm install\r\n   ```\r\n\r\n3. **Add your API key**\r\n\r\n   Set environment variable or edit `server.js`:\r\n   ```bash\r\n   export API_KEY=your-api-key-here\r\n   ```\r\n\r\n4. **Start the server**\r\n   ```bash\r\n   npm start\r\n   ```\r\n\r\n5. **Open in browser**\r\n\r\n   Visit http://localhost:3000 and test the moderator!\r\n\r\n## Project Structure\r\n\r\n```\r\ncontent-moderator-node-tutorial/\r\n├── server.js           # Express server \u0026 API endpoint\r\n├── public/\r\n│   └── index.html      # Frontend UI\r\n├── package.json        # Dependencies\r\n├── screenshot.jpg      # Preview image\r\n├── LICENSE             # MIT license\r\n├── .gitignore          # Git ignore rules\r\n└── README.md           # This file\r\n```\r\n\r\n## How It Works\r\n\r\n1. User enters text in the web interface\r\n2. Frontend sends POST request to `/api/moderate`\r\n3. Server calls the Profanity Filter API\r\n4. API returns filtered text and flagged words\r\n5. Frontend displays results with status\r\n\r\n### The API Call\r\n\r\n```javascript\r\nconst response = await fetch('https://api.apiverve.com/v1/profanityfilter', {\r\n  method: 'POST',\r\n  headers: {\r\n    'Content-Type': 'application/json',\r\n    'x-api-key': API_KEY\r\n  },\r\n  body: JSON.stringify({\r\n    text: 'Text to moderate',\r\n    mask: '*'\r\n  })\r\n});\r\n```\r\n\r\n## API Reference\r\n\r\n**Endpoint:** `POST https://api.apiverve.com/v1/profanityfilter`\r\n\r\n**Request Body:**\r\n\r\n| Parameter | Type | Required | Description |\r\n|-----------|------|----------|-------------|\r\n| `text` | string | Yes | Text to filter |\r\n| `mask` | string | No | Character to replace profanity (default: *) |\r\n\r\n**Example Response:**\r\n\r\n```json\r\n{\r\n  \"status\": \"ok\",\r\n  \"error\": null,\r\n  \"data\": {\r\n    \"isProfane\": true,\r\n    \"filteredText\": \"Today is so **** hot! Why the **** would anyone go outside?\",\r\n    \"mask\": \"*\",\r\n    \"trimmed\": false,\r\n    \"profaneWords\": 2\r\n  }\r\n}\r\n```\r\n\r\n## Use Cases\r\n\r\n- **Comment moderation** - Filter user comments before posting\r\n- **Chat applications** - Real-time message filtering\r\n- **User profiles** - Validate usernames and bios\r\n- **Reviews** - Clean up product/service reviews\r\n- **Forums** - Moderate discussion posts\r\n- **Gaming** - Filter in-game chat\r\n\r\n## Customization Ideas\r\n\r\n- Add batch processing for multiple texts\r\n- Save moderation history to database\r\n- Add different severity levels\r\n- Implement allow/block lists\r\n- Add real-time filtering as you type\r\n- Build a moderation dashboard with statistics\r\n\r\n## Related APIs\r\n\r\nExplore more APIs at [APIVerve](https://apiverve.com/marketplace?utm_source=github\u0026utm_medium=tutorial\u0026utm_campaign=content-moderator-node-tutorial):\r\n\r\n- [Spam Detector](https://apiverve.com/marketplace/spamdetector?utm_source=github\u0026utm_medium=tutorial\u0026utm_campaign=content-moderator-node-tutorial) - Detect spam content\r\n- [Sentiment Analysis](https://apiverve.com/marketplace/sentimentanalysis?utm_source=github\u0026utm_medium=tutorial\u0026utm_campaign=content-moderator-node-tutorial) - Analyze text sentiment\r\n- [Content Filter](https://apiverve.com/marketplace/contentfilter?utm_source=github\u0026utm_medium=tutorial\u0026utm_campaign=content-moderator-node-tutorial) - Advanced content filtering\r\n\r\n## Free Plan Note\r\n\r\nThis tutorial works with the free APIVerve plan. Some APIs may have:\r\n- **Locked fields**: Premium response fields return `null` on free plans\r\n- **Ignored parameters**: Some optional parameters require a paid plan\r\n\r\nThe API response includes a `premium` object when limitations apply. [Upgrade anytime](https://dashboard.apiverve.com/plans) to unlock all features.\r\n\r\n## License\r\n\r\nMIT - see [LICENSE](LICENSE)\r\n\r\n## Links\r\n\r\n- [Get API Key](https://dashboard.apiverve.com?utm_source=github\u0026utm_medium=tutorial\u0026utm_campaign=content-moderator-node-tutorial) - Sign up free\r\n- [APIVerve Marketplace](https://apiverve.com/marketplace?utm_source=github\u0026utm_medium=tutorial\u0026utm_campaign=content-moderator-node-tutorial) - Browse 300+ APIs\r\n- [Profanity Filter API](https://apiverve.com/marketplace/profanityfilter?utm_source=github\u0026utm_medium=tutorial\u0026utm_campaign=content-moderator-node-tutorial) - API details\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapiverve%2Fcontent-moderator-node-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapiverve%2Fcontent-moderator-node-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapiverve%2Fcontent-moderator-node-tutorial/lists"}