# ContentCalendar AI IG (`edgeofcali/ig-content-calendar-ai`) Actor

ContentCalendar AI IG — high-performance Apify actor.

- **URL**: https://apify.com/edgeofcali/ig-content-calendar-ai.md
- **Developed by:** [Edward Martinez](https://apify.com/edgeofcali) (community)
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## ContentCalendar AI IG

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue?logo=apify)](https://apify.com)
[![Instagram](https://img.shields.io/badge/Platform-Instagram-E1306C?logo=instagram)](https://instagram.com)
[![Node 20+](https://img.shields.io/badge/Node-20%2B-green?logo=node.js)](https://nodejs.org)
[![AI Powered](https://img.shields.io/badge/AI-Powered-purple?logo=openai)](https://apify.com)
[![Category](https://img.shields.io/badge/Category-AI%20Agent-orange)](https://apify.com/store)

> **Generate a complete, AI-optimised 30-day Instagram content calendar tailored to your niche, brand voice, and growth goals — in seconds.**

***

### 🚀 What Does This Actor Do?

ContentCalendar AI IG is an intelligent Apify actor that produces a fully-structured **30-day Instagram content calendar** customised to your niche and objectives. Powered by AI-driven content strategy logic and real Instagram trend data scraped from Instagram's Explore and hashtag pages, every calendar entry is packed with actionable details.

Each of the 30 calendar days includes:

- **Content Type** (Reels, Carousels, Stories, IGTV, etc.)
- **Topic Idea** perfectly matched to your niche
- **Caption Hook** to stop the scroll
- **Hashtag Set** (up to 20 tags) for maximum reach
- **Optimal Posting Time** based on engagement research
- **Story Idea** to complement the main post
- **Key Message** aligned with your goals
- **Call to Action** to drive conversions
- **AI Calendar Score** for prioritisation
- **Weekly Themes** for content cohesion
- **Competitor Gap** insight from GapFinder logic
- **Trending Topic** from TrendOracle logic
- **Engagement Prediction** score and rationale

***

### 🎯 Use Cases

| Use Case | Description |
|---|---|
| 🏋️ Fitness Coaches | Plan 30 days of workout tips, transformation posts, and motivation reels |
| 🍔 Food Bloggers | Organise recipe carousels, taste-test reels, and meal prep tutorials |
| 👗 Fashion Brands | Schedule OOTD posts, trend roundups, and product launches |
| 💼 Business Consultants | Plan educational carousels, case studies, and engagement content |
| ✈️ Travel Creators | Organise destination guides, travel tips, and hidden gems content |
| 💄 Beauty Influencers | Create skincare routines, tutorials, and product review schedules |
| 🧘 Wellness Brands | Build mindfulness posts, wellness tips, and community engagement plans |
| 🛍️ eCommerce Stores | Plan promotional posts, UGC reposts, and product spotlights |

***

### 📥 Input Fields

| Field | Type | Default | Description |
|---|---|---|---|
| 🎯 `niche` | String | `lifestyle` | Your Instagram niche (e.g., fitness, food, fashion, travel) |
| 🏆 `goals` | String | `grow followers and increase engagement` | Your growth goals for the 30-day period |
| 🗣️ `brandVoice` | String | `friendly and inspiring` | The tone and personality of your brand |
| 📅 `postsPerWeek` | Integer | `5` | How many posts you plan to publish per week (1–7) |
| 🏛️ `contentPillars` | Array | `["education","entertainment","inspiration","promotion"]` | The core content themes your brand covers |
| 👤 `audiencePersona` | String | `millennials interested in wellness and personal growth` | Description of your ideal audience |

***

### 📤 Output Fields

| Field | Type | Description |
|---|---|---|
| `url` | String | Source Instagram URL scraped for trend data |
| `scrapedAt` | String | ISO 8601 timestamp of when data was collected |
| `actorVersion` | String | Actor version string |
| `aiInsight` | String | AI-computed 1-sentence insight about this day's content strategy |
| `aiScore` | Number | Relevance/quality score 0–10 |
| `calendarDays` | Number | Total calendar days (always 30) |
| `dayNumber` | Number | The day number in the 30-day calendar (1–30) |
| `weekNumber` | Number | The week number this day falls in (1–5) |
| `postDate` | String | Suggested calendar date for this post |
| `contentType` | String | Recommended content format (Reel, Carousel, Story, etc.) |
| `topic` | String | Specific topic idea for this day |
| `captionHook` | String | Attention-grabbing first line for your caption |
| `hashtagSet` | Array | Up to 20 targeted hashtags for reach and discoverability |
| `bestPostTime` | String | Optimal time to post for your audience |
| `storyIdea` | String | Complementary Instagram Story concept |
| `keyMessage` | String | The core message to communicate on this day |
| `callToAction` | String | Engagement-driving CTA for the post |
| `aiCalendarScore` | Number | AI-calculated score for this day's strategy strength (0–10) |
| `weeklyThemes` | Array | The 4 weekly themes for the month |
| `trendingTopic` | String | Aligned trending topic from TrendOracle logic |
| `competitorGap` | String | Identified competitor content gap from GapFinder logic |
| `engagementPrediction` | String | Predicted engagement level with rationale |
| `pillarCategory` | String | Which content pillar this day's post serves |

***

### 📊 Example Output

```json
{
  "url": "https://www.instagram.com/explore/tags/lifestyle/",
  "scrapedAt": "2025-01-15T09:30:00.000Z",
  "actorVersion": "0.1.0",
  "dayNumber": 1,
  "weekNumber": 1,
  "postDate": "2025-01-15",
  "contentType": "Carousel Post",
  "topic": "Top 5 lifestyle tips for beginners",
  "captionHook": "Stop what you're doing — this lifestyle tip will change everything 👇",
  "hashtagSet": [
    "#lifestyle",
    "#lifestyletips",
    "#education",
    "#instagramgrowth",
    "#contentcreator",
    "#socialmediamarketing",
    "#instagramstrategy",
    "#contentcalendar",
    "#instagramtips",
    "#growyourinstagram",
    "#top5lifestyletips",
    "#growfollowersandincrease"
  ],
  "bestPostTime": "7:00 AM",
  "storyIdea": "Poll: What's your biggest lifestyle challenge?",
  "keyMessage": "On Day 1, focus on education to advance your goal: grow followers. Emphasise #lifestyle2025 and fill the gap: Lack of beginner-friendly content.",
  "callToAction": "Save this post for later!",
  "aiCalendarScore": 6.5,
  "weeklyThemes": ["Mindful Mondays", "Wellness Wednesdays", "Feel-Good Fridays", "Sunday Reset"],
  "trendingTopic": "#lifestyle2025",
  "competitorGap": "Lack of beginner-friendly lifestyle content",
  "engagementPrediction": "Medium-High — strong format or timing",
  "pillarCategory": "education",
  "aiInsight": "Day 1 Carousel Post on 'Top 5 lifestyle tips' targets the 'Lack of beginner-friendly lifestyle content' gap and aligns with trending topic '#lifestyle2025', projected Medium-High engagement.",
  "aiScore": 6.5,
  "calendarDays": 30
}
```

***

### ⚙️ How It Works

1. **Input Processing** — The actor reads your niche, goals, brand voice, posting frequency, content pillars, and audience persona.
2. **Calendar Generation** — 30 days of structured content are generated using AI strategy templates aligned with your inputs.
3. **Live Instagram Scraping** — The PlaywrightCrawler visits Instagram Explore and hashtag pages relevant to your niche.
4. **Trend Enhancement** — Scraped hashtags and trending content are used to enrich your calendar entries in real time.
5. **Validation & Output** — Every record is Zod-validated before being pushed to the Apify dataset.

***

### 💰 Pricing

This actor uses Apify's compute unit (CU) model. A typical run generating a full 30-day calendar costs approximately **0.05–0.2 CUs** depending on Instagram's response time and proxy usage.

- **Free tier:** 30-day calendars for up to 3 niches/month
- **Starter:** $9.99/month — unlimited calendars, priority support
- **Pro:** $29.99/month — API access, team sharing, custom content pillars

***

### 🛡️ Compliance & Rate Limiting

- Random 800–2000ms delays between all requests
- Maximum 3 retries per request
- Proxy rotation via Apify Proxy
- Graceful error handling — never crashes on missing data

***

### 🤝 Support

For questions, feature requests, or bug reports, open an issue on the actor's page or contact the developer via Apify.

# Actor input Schema

## `startUrls` (type: `array`):

List of URLs to start scraping from.

## `maxItems` (type: `integer`):

Maximum number of results to return.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "maxItems": 50
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://apify.com"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("edgeofcali/ig-content-calendar-ai").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 = { "startUrls": [{ "url": "https://apify.com" }] }

# Run the Actor and wait for it to finish
run = client.actor("edgeofcali/ig-content-calendar-ai").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ]
}' |
apify call edgeofcali/ig-content-calendar-ai --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,edgeofcali/ig-content-calendar-ai"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/prIwHWW8IkuaOXzrT/builds/eU4EQxT7cqKpZVD7d/openapi.json
