Objective:
Develop a Blog Content Generation API using Node.js and Express.js, integrating CRUD
operations and OpenAI API for AI-powered content creation. The API should allow users to
manage blogs effectively while leveraging AI to generate high-quality blog content,
SEO-friendly titles, and meta descriptions.
Task Requirements
Y
1. API Features
Implement the following endpoints for blog management and AI-powered content generation:
EM
Method Endpoint Description
AD
POST /blogs Creates a new blog with title, author, category, and an
optional initial content. Generates a unique slug from the
title.
AC
GET /blogs Retrieves a paginated list of all blogs. Supports query
parameters for pagination (e.g., ?page=1&limit=10) and
filtering by category and status.
P
GET /blogs/:id Fetches a specific blog by ID. Returns blog details if found;
otherwise, returns an error.
TA
PUT /blogs/:id Updates a blog’s title, content, category, or status.
Prevents unauthorized updates and ensures slug updates
dynamically if the title is changed.
DELETE /blogs/:id Deletes a blog by ID. Ensures the blog exists before deletion
and prevents accidental deletions using confirmation checks.
POST /blogs/:id/ge Uses OpenAI (GPT-4) to generate blog content based on the
nerate-conten given title and category. Stores the generated content,
t SEO title, and SEO description in the blog entity and returns
the updated blog object. Handles OpenAI API failures with a
fallback message.
2. Blog Schema
Y
Each blog entity must include the following fields:
EM
Field Type Description
title String Required, unique. The blog title.
AD
slug String Required, unique, auto-generated from title.
author String Required. Author name.
AC
category String Required. Enum: ['technology', 'health',
'lifestyle', 'education',
'entertainment'].
P
TA
content String Optional. Stores the blog content. Defaults to empty.
summary String Required. A short description or summary of the blog.
tags Array of Optional. Allows tagging for better categorization.
Strings
status String Required. Enum: ['draft', 'published',
'archived']. Default: 'draft'.
featuredIm String (URL) Optional. Stores the URL of the featured image.
age
views Number Tracks the number of views. Default: 0.
Y
seoTitle String Optional. AI-generated SEO title for search
optimization.
EM
seoDescrip String Optional. AI-generated meta description for better
tion search visibility.
AD
createdAt Timestamp Auto-generated. Stores blog creation timestamp.
updatedAt Timestamp Auto-generated. Stores last update timestamp.
AC
3. OpenAI Integration
P
Use the OpenAI API (GPT-4) to enhance blog content generation dynamically.
TA
Endpoint: /blogs/:id/generate-content
Functionality:
● Fetch blog details (title, category).
● Use OpenAI to generate a structured, high-quality blog post.
● Generate an SEO title and meta description based on the blog content.
● Store the generated content, SEO title, and SEO description in the blog.
● Return the updated blog object with AI-generated content.
Error Handling:
● If OpenAI API fails, return a fallback message (e.g., "Content generation is
temporarily unavailable.").
● Ensure AI-generated content is validated before saving it to prevent inappropriate
or irrelevant content.
4. Technical Requirements
● Backend:
○ Use Node.js and Express.js for API development.
○ Use MongoDB with Mongoose for database management.
○ Implement environment variable management using dotenv (.env file).
○ Ensure proper error handling with meaningful HTTP status codes.
○ Implement request validation to prevent invalid data input.
● OpenAI API:
Y
○ Use OpenAI's GPT-4 to generate blog content dynamically.
EM
○ OpenAI Key:
sk-proj-eyWUtyjF7I0Z7-RUQRH34gE4E8h6mcnmq7lnqhuJVYMUvp2JI1IXhK
hQTdFemJND4ETxtyNl0HT3BlbkFJxTr41IWChZYShqUM3Q78PtpD58OoWX
VgLa8rqgRqvgFSTjhFJkI4UiS15PqeKiIm7I6Ak7YSMA
5. Enhancements & Future Improvements
AD
● Image Generation: Use OpenAI's DALL·E API to generate custom blog images.
● SEO Optimization: Add meta tags and structured data for better search engine
visibility.
● User Management: Implement multi-user roles (admin, editor, writer).
AC
● Analytics & Reports: Track user engagement and blog performance over time.
6. Environment Variables
Users can either provide their own credentials or use the default ones provided below
P
# MongoDB Connection URI
TA
MONGO_URI=mongodb+srv://user:[email protected]/db?re
tryWrites=true&w=majority&appName=Cluster0
# OpenAI API Key
OPENAI_API_KEY=your-openai-api-key