@dracoonghost/trndup-sdk 1.3.23 → 1.3.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +277 -0
- package/dist/index.d.ts +277 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -703,15 +703,39 @@ declare namespace Instagram {
|
|
|
703
703
|
interface PostInsightsSyncStatusResponse {
|
|
704
704
|
needsSync: boolean;
|
|
705
705
|
status: SyncStatus;
|
|
706
|
+
/** Progress tracking - primary fields for UI */
|
|
707
|
+
progress: {
|
|
708
|
+
/** Number of posts that have been processed (attempted insights sync) */
|
|
709
|
+
completed: number;
|
|
710
|
+
/** Total number of posts */
|
|
711
|
+
total: number;
|
|
712
|
+
/** Posts remaining to be processed */
|
|
713
|
+
remaining: number;
|
|
714
|
+
/** Percentage complete (0-100) */
|
|
715
|
+
percent: number;
|
|
716
|
+
};
|
|
717
|
+
/** Total number of posts */
|
|
706
718
|
totalPosts: number;
|
|
719
|
+
/** Posts that have been processed (may or may not have insights) */
|
|
720
|
+
postsProcessed: number;
|
|
721
|
+
/** Posts that actually have insights data */
|
|
707
722
|
postsWithInsights: number;
|
|
723
|
+
/** Percentage of posts with insights (0-100) */
|
|
708
724
|
coverage: number;
|
|
709
725
|
lastSyncAt: string | null;
|
|
710
726
|
metadata?: {
|
|
727
|
+
postsProcessed?: number;
|
|
711
728
|
postsWithInsights?: number;
|
|
712
729
|
totalPosts?: number;
|
|
713
730
|
lastCheckedAt?: string;
|
|
714
731
|
} | null;
|
|
732
|
+
/** Queue processing info */
|
|
733
|
+
queue: {
|
|
734
|
+
isProcessing: boolean;
|
|
735
|
+
jobsActive: number;
|
|
736
|
+
jobsWaiting: number;
|
|
737
|
+
jobsFailed: number;
|
|
738
|
+
};
|
|
715
739
|
message: string;
|
|
716
740
|
}
|
|
717
741
|
interface SyncResponse {
|
|
@@ -1377,6 +1401,259 @@ declare namespace Insights {
|
|
|
1377
1401
|
/** Days per comparison period (14-90, default: 30) */
|
|
1378
1402
|
period?: number;
|
|
1379
1403
|
}
|
|
1404
|
+
interface TopPostData {
|
|
1405
|
+
mediaId: string;
|
|
1406
|
+
caption: string | null;
|
|
1407
|
+
mediaType: 'IMAGE' | 'VIDEO' | 'CAROUSEL_ALBUM' | 'REELS';
|
|
1408
|
+
thumbnailUrl: string | null;
|
|
1409
|
+
permalink: string;
|
|
1410
|
+
postedAt: string;
|
|
1411
|
+
ageInDays: number;
|
|
1412
|
+
}
|
|
1413
|
+
interface TopPostMetrics {
|
|
1414
|
+
reach: number;
|
|
1415
|
+
views: number;
|
|
1416
|
+
likes: number;
|
|
1417
|
+
comments: number;
|
|
1418
|
+
shares: number;
|
|
1419
|
+
saves: number;
|
|
1420
|
+
engagementRate: number;
|
|
1421
|
+
}
|
|
1422
|
+
interface TopPostComparison {
|
|
1423
|
+
vsAccountAverage: {
|
|
1424
|
+
reach: number;
|
|
1425
|
+
engagement: number;
|
|
1426
|
+
description: string;
|
|
1427
|
+
};
|
|
1428
|
+
standoutReasons: string[];
|
|
1429
|
+
}
|
|
1430
|
+
interface BestPerformingPostData {
|
|
1431
|
+
period: {
|
|
1432
|
+
start: string;
|
|
1433
|
+
end: string;
|
|
1434
|
+
days: number;
|
|
1435
|
+
};
|
|
1436
|
+
topPost: TopPostData;
|
|
1437
|
+
metrics: TopPostMetrics;
|
|
1438
|
+
comparison: TopPostComparison;
|
|
1439
|
+
insight: string;
|
|
1440
|
+
runnersUp: Array<{
|
|
1441
|
+
mediaId: string;
|
|
1442
|
+
caption: string | null;
|
|
1443
|
+
reach: number;
|
|
1444
|
+
thumbnailUrl: string | null;
|
|
1445
|
+
}>;
|
|
1446
|
+
}
|
|
1447
|
+
type BestPerformingPostResponse = InsufficientDataResponse | {
|
|
1448
|
+
hasData: true;
|
|
1449
|
+
data: BestPerformingPostData;
|
|
1450
|
+
_meta: InsightMeta;
|
|
1451
|
+
};
|
|
1452
|
+
type PostingConsistencyStatus = 'excellent' | 'good' | 'needs_improvement' | 'poor' | 'inactive';
|
|
1453
|
+
interface MonthlyPostData {
|
|
1454
|
+
month: string;
|
|
1455
|
+
posts: number;
|
|
1456
|
+
avgGap: number | null;
|
|
1457
|
+
}
|
|
1458
|
+
interface PostingConsistencyData {
|
|
1459
|
+
period: {
|
|
1460
|
+
start: string;
|
|
1461
|
+
end: string;
|
|
1462
|
+
days: number;
|
|
1463
|
+
};
|
|
1464
|
+
consistencyScore: number;
|
|
1465
|
+
status: PostingConsistencyStatus;
|
|
1466
|
+
metrics: {
|
|
1467
|
+
totalPosts: number;
|
|
1468
|
+
avgDaysBetweenPosts: number;
|
|
1469
|
+
postVariance: number;
|
|
1470
|
+
daysSinceLastPost: number;
|
|
1471
|
+
lastPostDate: string | null;
|
|
1472
|
+
};
|
|
1473
|
+
pattern: {
|
|
1474
|
+
isRegular: boolean;
|
|
1475
|
+
typicalGap: string;
|
|
1476
|
+
longestStreak: number;
|
|
1477
|
+
currentStreak: number;
|
|
1478
|
+
trend: 'increasing' | 'stable' | 'decreasing';
|
|
1479
|
+
trendDescription: string;
|
|
1480
|
+
};
|
|
1481
|
+
monthlyBreakdown: MonthlyPostData[];
|
|
1482
|
+
recommendation: {
|
|
1483
|
+
suggested: string;
|
|
1484
|
+
current: string;
|
|
1485
|
+
reason: string;
|
|
1486
|
+
};
|
|
1487
|
+
insight: string;
|
|
1488
|
+
recommendations: string[];
|
|
1489
|
+
}
|
|
1490
|
+
type PostingConsistencyResponse = InsufficientDataResponse | {
|
|
1491
|
+
hasData: true;
|
|
1492
|
+
data: PostingConsistencyData;
|
|
1493
|
+
_meta: InsightMeta;
|
|
1494
|
+
};
|
|
1495
|
+
type FollowerQualityLabel = 'excellent' | 'good' | 'fair' | 'needs_attention' | 'concerning';
|
|
1496
|
+
interface FollowerQualityData {
|
|
1497
|
+
period: {
|
|
1498
|
+
start: string;
|
|
1499
|
+
end: string;
|
|
1500
|
+
days: number;
|
|
1501
|
+
};
|
|
1502
|
+
qualityScore: number;
|
|
1503
|
+
scoreLabel: FollowerQualityLabel;
|
|
1504
|
+
metrics: {
|
|
1505
|
+
followsGained: number;
|
|
1506
|
+
unfollows: number;
|
|
1507
|
+
netFollowers: number;
|
|
1508
|
+
retentionRate: number;
|
|
1509
|
+
engagementPerFollower: number;
|
|
1510
|
+
reachPerFollower: number;
|
|
1511
|
+
accountsEngaged: number;
|
|
1512
|
+
};
|
|
1513
|
+
trend: {
|
|
1514
|
+
scoreChange: number;
|
|
1515
|
+
direction: 'improving' | 'stable' | 'declining';
|
|
1516
|
+
description: string;
|
|
1517
|
+
};
|
|
1518
|
+
insight: string;
|
|
1519
|
+
recommendations: string[];
|
|
1520
|
+
}
|
|
1521
|
+
type FollowerQualityResponse = InsufficientDataResponse | {
|
|
1522
|
+
hasData: true;
|
|
1523
|
+
data: FollowerQualityData;
|
|
1524
|
+
_meta: InsightMeta;
|
|
1525
|
+
};
|
|
1526
|
+
type InstagramMomentumStatus = 'surging' | 'rising' | 'steady' | 'cooling' | 'dropping';
|
|
1527
|
+
type InstagramMomentumTrend = 'accelerating' | 'stable' | 'decelerating';
|
|
1528
|
+
interface InstagramMetricChange {
|
|
1529
|
+
current: number;
|
|
1530
|
+
previous: number;
|
|
1531
|
+
change: number;
|
|
1532
|
+
}
|
|
1533
|
+
interface InstagramMomentumData {
|
|
1534
|
+
score: number;
|
|
1535
|
+
rawChange: number;
|
|
1536
|
+
status: InstagramMomentumStatus;
|
|
1537
|
+
trend: InstagramMomentumTrend;
|
|
1538
|
+
previousScore: number | null;
|
|
1539
|
+
period: {
|
|
1540
|
+
current: {
|
|
1541
|
+
start: string;
|
|
1542
|
+
end: string;
|
|
1543
|
+
};
|
|
1544
|
+
previous: {
|
|
1545
|
+
start: string;
|
|
1546
|
+
end: string;
|
|
1547
|
+
};
|
|
1548
|
+
};
|
|
1549
|
+
breakdown: {
|
|
1550
|
+
reach: InstagramMetricChange;
|
|
1551
|
+
engagement: InstagramMetricChange;
|
|
1552
|
+
followers: InstagramMetricChange;
|
|
1553
|
+
profileViews: InstagramMetricChange;
|
|
1554
|
+
};
|
|
1555
|
+
insight: string;
|
|
1556
|
+
topDrivers: string[];
|
|
1557
|
+
}
|
|
1558
|
+
type InstagramMomentumResponse = InsufficientDataResponse | {
|
|
1559
|
+
hasData: true;
|
|
1560
|
+
data: InstagramMomentumData;
|
|
1561
|
+
_meta: InsightMeta;
|
|
1562
|
+
};
|
|
1563
|
+
type EngagementStyle = 'passive' | 'active' | 'viral' | 'valuable';
|
|
1564
|
+
interface EngagementMetricBreakdown {
|
|
1565
|
+
count: number;
|
|
1566
|
+
percent: number;
|
|
1567
|
+
trend: number;
|
|
1568
|
+
}
|
|
1569
|
+
interface EngagementBreakdownData {
|
|
1570
|
+
period: {
|
|
1571
|
+
start: string;
|
|
1572
|
+
end: string;
|
|
1573
|
+
days: number;
|
|
1574
|
+
};
|
|
1575
|
+
totalEngagement: number;
|
|
1576
|
+
breakdown: {
|
|
1577
|
+
likes: EngagementMetricBreakdown;
|
|
1578
|
+
comments: EngagementMetricBreakdown;
|
|
1579
|
+
shares: EngagementMetricBreakdown;
|
|
1580
|
+
saves: EngagementMetricBreakdown;
|
|
1581
|
+
};
|
|
1582
|
+
engagementStyle: EngagementStyle;
|
|
1583
|
+
analysis: {
|
|
1584
|
+
strongestType: string;
|
|
1585
|
+
weakestType: string;
|
|
1586
|
+
opportunity: string;
|
|
1587
|
+
};
|
|
1588
|
+
insight: string;
|
|
1589
|
+
recommendations: string[];
|
|
1590
|
+
}
|
|
1591
|
+
type EngagementBreakdownResponse = InsufficientDataResponse | {
|
|
1592
|
+
hasData: true;
|
|
1593
|
+
data: EngagementBreakdownData;
|
|
1594
|
+
_meta: InsightMeta;
|
|
1595
|
+
};
|
|
1596
|
+
type InstagramHealthLabel = 'excellent' | 'good' | 'fair' | 'needs_attention' | 'poor';
|
|
1597
|
+
interface HealthScoreComponent {
|
|
1598
|
+
score: number;
|
|
1599
|
+
label: string;
|
|
1600
|
+
trend: number;
|
|
1601
|
+
}
|
|
1602
|
+
interface InstagramHealthScoreData {
|
|
1603
|
+
period: {
|
|
1604
|
+
start: string;
|
|
1605
|
+
end: string;
|
|
1606
|
+
days: number;
|
|
1607
|
+
};
|
|
1608
|
+
overall: number;
|
|
1609
|
+
label: InstagramHealthLabel;
|
|
1610
|
+
components: {
|
|
1611
|
+
consistency: HealthScoreComponent;
|
|
1612
|
+
engagement: HealthScoreComponent;
|
|
1613
|
+
growth: HealthScoreComponent;
|
|
1614
|
+
reach: HealthScoreComponent;
|
|
1615
|
+
};
|
|
1616
|
+
metrics: {
|
|
1617
|
+
postsPerWeek: number;
|
|
1618
|
+
avgEngagementRate: number;
|
|
1619
|
+
followerGrowthRate: number;
|
|
1620
|
+
avgReachPerPost: number;
|
|
1621
|
+
};
|
|
1622
|
+
percentageChanges: {
|
|
1623
|
+
overall: number;
|
|
1624
|
+
components: {
|
|
1625
|
+
consistency: number;
|
|
1626
|
+
engagement: number;
|
|
1627
|
+
growth: number;
|
|
1628
|
+
reach: number;
|
|
1629
|
+
};
|
|
1630
|
+
};
|
|
1631
|
+
insight: string;
|
|
1632
|
+
recommendations: string[];
|
|
1633
|
+
}
|
|
1634
|
+
type InstagramHealthScoreResponse = InsufficientDataResponse | {
|
|
1635
|
+
hasData: true;
|
|
1636
|
+
data: InstagramHealthScoreData;
|
|
1637
|
+
_meta: InsightMeta;
|
|
1638
|
+
};
|
|
1639
|
+
interface InstagramAllInsightsData {
|
|
1640
|
+
bestPost: BestPerformingPostResponse;
|
|
1641
|
+
consistency: PostingConsistencyResponse;
|
|
1642
|
+
followerQuality: FollowerQualityResponse;
|
|
1643
|
+
momentum: InstagramMomentumResponse;
|
|
1644
|
+
engagement: EngagementBreakdownResponse;
|
|
1645
|
+
health: InstagramHealthScoreResponse;
|
|
1646
|
+
}
|
|
1647
|
+
interface InstagramAllInsightsResponse {
|
|
1648
|
+
data: InstagramAllInsightsData;
|
|
1649
|
+
meta: {
|
|
1650
|
+
available: string[];
|
|
1651
|
+
};
|
|
1652
|
+
}
|
|
1653
|
+
interface GetInstagramInsightParams {
|
|
1654
|
+
/** Time range (e.g., "30d") */
|
|
1655
|
+
range?: string;
|
|
1656
|
+
}
|
|
1380
1657
|
}
|
|
1381
1658
|
declare namespace Activity {
|
|
1382
1659
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -703,15 +703,39 @@ declare namespace Instagram {
|
|
|
703
703
|
interface PostInsightsSyncStatusResponse {
|
|
704
704
|
needsSync: boolean;
|
|
705
705
|
status: SyncStatus;
|
|
706
|
+
/** Progress tracking - primary fields for UI */
|
|
707
|
+
progress: {
|
|
708
|
+
/** Number of posts that have been processed (attempted insights sync) */
|
|
709
|
+
completed: number;
|
|
710
|
+
/** Total number of posts */
|
|
711
|
+
total: number;
|
|
712
|
+
/** Posts remaining to be processed */
|
|
713
|
+
remaining: number;
|
|
714
|
+
/** Percentage complete (0-100) */
|
|
715
|
+
percent: number;
|
|
716
|
+
};
|
|
717
|
+
/** Total number of posts */
|
|
706
718
|
totalPosts: number;
|
|
719
|
+
/** Posts that have been processed (may or may not have insights) */
|
|
720
|
+
postsProcessed: number;
|
|
721
|
+
/** Posts that actually have insights data */
|
|
707
722
|
postsWithInsights: number;
|
|
723
|
+
/** Percentage of posts with insights (0-100) */
|
|
708
724
|
coverage: number;
|
|
709
725
|
lastSyncAt: string | null;
|
|
710
726
|
metadata?: {
|
|
727
|
+
postsProcessed?: number;
|
|
711
728
|
postsWithInsights?: number;
|
|
712
729
|
totalPosts?: number;
|
|
713
730
|
lastCheckedAt?: string;
|
|
714
731
|
} | null;
|
|
732
|
+
/** Queue processing info */
|
|
733
|
+
queue: {
|
|
734
|
+
isProcessing: boolean;
|
|
735
|
+
jobsActive: number;
|
|
736
|
+
jobsWaiting: number;
|
|
737
|
+
jobsFailed: number;
|
|
738
|
+
};
|
|
715
739
|
message: string;
|
|
716
740
|
}
|
|
717
741
|
interface SyncResponse {
|
|
@@ -1377,6 +1401,259 @@ declare namespace Insights {
|
|
|
1377
1401
|
/** Days per comparison period (14-90, default: 30) */
|
|
1378
1402
|
period?: number;
|
|
1379
1403
|
}
|
|
1404
|
+
interface TopPostData {
|
|
1405
|
+
mediaId: string;
|
|
1406
|
+
caption: string | null;
|
|
1407
|
+
mediaType: 'IMAGE' | 'VIDEO' | 'CAROUSEL_ALBUM' | 'REELS';
|
|
1408
|
+
thumbnailUrl: string | null;
|
|
1409
|
+
permalink: string;
|
|
1410
|
+
postedAt: string;
|
|
1411
|
+
ageInDays: number;
|
|
1412
|
+
}
|
|
1413
|
+
interface TopPostMetrics {
|
|
1414
|
+
reach: number;
|
|
1415
|
+
views: number;
|
|
1416
|
+
likes: number;
|
|
1417
|
+
comments: number;
|
|
1418
|
+
shares: number;
|
|
1419
|
+
saves: number;
|
|
1420
|
+
engagementRate: number;
|
|
1421
|
+
}
|
|
1422
|
+
interface TopPostComparison {
|
|
1423
|
+
vsAccountAverage: {
|
|
1424
|
+
reach: number;
|
|
1425
|
+
engagement: number;
|
|
1426
|
+
description: string;
|
|
1427
|
+
};
|
|
1428
|
+
standoutReasons: string[];
|
|
1429
|
+
}
|
|
1430
|
+
interface BestPerformingPostData {
|
|
1431
|
+
period: {
|
|
1432
|
+
start: string;
|
|
1433
|
+
end: string;
|
|
1434
|
+
days: number;
|
|
1435
|
+
};
|
|
1436
|
+
topPost: TopPostData;
|
|
1437
|
+
metrics: TopPostMetrics;
|
|
1438
|
+
comparison: TopPostComparison;
|
|
1439
|
+
insight: string;
|
|
1440
|
+
runnersUp: Array<{
|
|
1441
|
+
mediaId: string;
|
|
1442
|
+
caption: string | null;
|
|
1443
|
+
reach: number;
|
|
1444
|
+
thumbnailUrl: string | null;
|
|
1445
|
+
}>;
|
|
1446
|
+
}
|
|
1447
|
+
type BestPerformingPostResponse = InsufficientDataResponse | {
|
|
1448
|
+
hasData: true;
|
|
1449
|
+
data: BestPerformingPostData;
|
|
1450
|
+
_meta: InsightMeta;
|
|
1451
|
+
};
|
|
1452
|
+
type PostingConsistencyStatus = 'excellent' | 'good' | 'needs_improvement' | 'poor' | 'inactive';
|
|
1453
|
+
interface MonthlyPostData {
|
|
1454
|
+
month: string;
|
|
1455
|
+
posts: number;
|
|
1456
|
+
avgGap: number | null;
|
|
1457
|
+
}
|
|
1458
|
+
interface PostingConsistencyData {
|
|
1459
|
+
period: {
|
|
1460
|
+
start: string;
|
|
1461
|
+
end: string;
|
|
1462
|
+
days: number;
|
|
1463
|
+
};
|
|
1464
|
+
consistencyScore: number;
|
|
1465
|
+
status: PostingConsistencyStatus;
|
|
1466
|
+
metrics: {
|
|
1467
|
+
totalPosts: number;
|
|
1468
|
+
avgDaysBetweenPosts: number;
|
|
1469
|
+
postVariance: number;
|
|
1470
|
+
daysSinceLastPost: number;
|
|
1471
|
+
lastPostDate: string | null;
|
|
1472
|
+
};
|
|
1473
|
+
pattern: {
|
|
1474
|
+
isRegular: boolean;
|
|
1475
|
+
typicalGap: string;
|
|
1476
|
+
longestStreak: number;
|
|
1477
|
+
currentStreak: number;
|
|
1478
|
+
trend: 'increasing' | 'stable' | 'decreasing';
|
|
1479
|
+
trendDescription: string;
|
|
1480
|
+
};
|
|
1481
|
+
monthlyBreakdown: MonthlyPostData[];
|
|
1482
|
+
recommendation: {
|
|
1483
|
+
suggested: string;
|
|
1484
|
+
current: string;
|
|
1485
|
+
reason: string;
|
|
1486
|
+
};
|
|
1487
|
+
insight: string;
|
|
1488
|
+
recommendations: string[];
|
|
1489
|
+
}
|
|
1490
|
+
type PostingConsistencyResponse = InsufficientDataResponse | {
|
|
1491
|
+
hasData: true;
|
|
1492
|
+
data: PostingConsistencyData;
|
|
1493
|
+
_meta: InsightMeta;
|
|
1494
|
+
};
|
|
1495
|
+
type FollowerQualityLabel = 'excellent' | 'good' | 'fair' | 'needs_attention' | 'concerning';
|
|
1496
|
+
interface FollowerQualityData {
|
|
1497
|
+
period: {
|
|
1498
|
+
start: string;
|
|
1499
|
+
end: string;
|
|
1500
|
+
days: number;
|
|
1501
|
+
};
|
|
1502
|
+
qualityScore: number;
|
|
1503
|
+
scoreLabel: FollowerQualityLabel;
|
|
1504
|
+
metrics: {
|
|
1505
|
+
followsGained: number;
|
|
1506
|
+
unfollows: number;
|
|
1507
|
+
netFollowers: number;
|
|
1508
|
+
retentionRate: number;
|
|
1509
|
+
engagementPerFollower: number;
|
|
1510
|
+
reachPerFollower: number;
|
|
1511
|
+
accountsEngaged: number;
|
|
1512
|
+
};
|
|
1513
|
+
trend: {
|
|
1514
|
+
scoreChange: number;
|
|
1515
|
+
direction: 'improving' | 'stable' | 'declining';
|
|
1516
|
+
description: string;
|
|
1517
|
+
};
|
|
1518
|
+
insight: string;
|
|
1519
|
+
recommendations: string[];
|
|
1520
|
+
}
|
|
1521
|
+
type FollowerQualityResponse = InsufficientDataResponse | {
|
|
1522
|
+
hasData: true;
|
|
1523
|
+
data: FollowerQualityData;
|
|
1524
|
+
_meta: InsightMeta;
|
|
1525
|
+
};
|
|
1526
|
+
type InstagramMomentumStatus = 'surging' | 'rising' | 'steady' | 'cooling' | 'dropping';
|
|
1527
|
+
type InstagramMomentumTrend = 'accelerating' | 'stable' | 'decelerating';
|
|
1528
|
+
interface InstagramMetricChange {
|
|
1529
|
+
current: number;
|
|
1530
|
+
previous: number;
|
|
1531
|
+
change: number;
|
|
1532
|
+
}
|
|
1533
|
+
interface InstagramMomentumData {
|
|
1534
|
+
score: number;
|
|
1535
|
+
rawChange: number;
|
|
1536
|
+
status: InstagramMomentumStatus;
|
|
1537
|
+
trend: InstagramMomentumTrend;
|
|
1538
|
+
previousScore: number | null;
|
|
1539
|
+
period: {
|
|
1540
|
+
current: {
|
|
1541
|
+
start: string;
|
|
1542
|
+
end: string;
|
|
1543
|
+
};
|
|
1544
|
+
previous: {
|
|
1545
|
+
start: string;
|
|
1546
|
+
end: string;
|
|
1547
|
+
};
|
|
1548
|
+
};
|
|
1549
|
+
breakdown: {
|
|
1550
|
+
reach: InstagramMetricChange;
|
|
1551
|
+
engagement: InstagramMetricChange;
|
|
1552
|
+
followers: InstagramMetricChange;
|
|
1553
|
+
profileViews: InstagramMetricChange;
|
|
1554
|
+
};
|
|
1555
|
+
insight: string;
|
|
1556
|
+
topDrivers: string[];
|
|
1557
|
+
}
|
|
1558
|
+
type InstagramMomentumResponse = InsufficientDataResponse | {
|
|
1559
|
+
hasData: true;
|
|
1560
|
+
data: InstagramMomentumData;
|
|
1561
|
+
_meta: InsightMeta;
|
|
1562
|
+
};
|
|
1563
|
+
type EngagementStyle = 'passive' | 'active' | 'viral' | 'valuable';
|
|
1564
|
+
interface EngagementMetricBreakdown {
|
|
1565
|
+
count: number;
|
|
1566
|
+
percent: number;
|
|
1567
|
+
trend: number;
|
|
1568
|
+
}
|
|
1569
|
+
interface EngagementBreakdownData {
|
|
1570
|
+
period: {
|
|
1571
|
+
start: string;
|
|
1572
|
+
end: string;
|
|
1573
|
+
days: number;
|
|
1574
|
+
};
|
|
1575
|
+
totalEngagement: number;
|
|
1576
|
+
breakdown: {
|
|
1577
|
+
likes: EngagementMetricBreakdown;
|
|
1578
|
+
comments: EngagementMetricBreakdown;
|
|
1579
|
+
shares: EngagementMetricBreakdown;
|
|
1580
|
+
saves: EngagementMetricBreakdown;
|
|
1581
|
+
};
|
|
1582
|
+
engagementStyle: EngagementStyle;
|
|
1583
|
+
analysis: {
|
|
1584
|
+
strongestType: string;
|
|
1585
|
+
weakestType: string;
|
|
1586
|
+
opportunity: string;
|
|
1587
|
+
};
|
|
1588
|
+
insight: string;
|
|
1589
|
+
recommendations: string[];
|
|
1590
|
+
}
|
|
1591
|
+
type EngagementBreakdownResponse = InsufficientDataResponse | {
|
|
1592
|
+
hasData: true;
|
|
1593
|
+
data: EngagementBreakdownData;
|
|
1594
|
+
_meta: InsightMeta;
|
|
1595
|
+
};
|
|
1596
|
+
type InstagramHealthLabel = 'excellent' | 'good' | 'fair' | 'needs_attention' | 'poor';
|
|
1597
|
+
interface HealthScoreComponent {
|
|
1598
|
+
score: number;
|
|
1599
|
+
label: string;
|
|
1600
|
+
trend: number;
|
|
1601
|
+
}
|
|
1602
|
+
interface InstagramHealthScoreData {
|
|
1603
|
+
period: {
|
|
1604
|
+
start: string;
|
|
1605
|
+
end: string;
|
|
1606
|
+
days: number;
|
|
1607
|
+
};
|
|
1608
|
+
overall: number;
|
|
1609
|
+
label: InstagramHealthLabel;
|
|
1610
|
+
components: {
|
|
1611
|
+
consistency: HealthScoreComponent;
|
|
1612
|
+
engagement: HealthScoreComponent;
|
|
1613
|
+
growth: HealthScoreComponent;
|
|
1614
|
+
reach: HealthScoreComponent;
|
|
1615
|
+
};
|
|
1616
|
+
metrics: {
|
|
1617
|
+
postsPerWeek: number;
|
|
1618
|
+
avgEngagementRate: number;
|
|
1619
|
+
followerGrowthRate: number;
|
|
1620
|
+
avgReachPerPost: number;
|
|
1621
|
+
};
|
|
1622
|
+
percentageChanges: {
|
|
1623
|
+
overall: number;
|
|
1624
|
+
components: {
|
|
1625
|
+
consistency: number;
|
|
1626
|
+
engagement: number;
|
|
1627
|
+
growth: number;
|
|
1628
|
+
reach: number;
|
|
1629
|
+
};
|
|
1630
|
+
};
|
|
1631
|
+
insight: string;
|
|
1632
|
+
recommendations: string[];
|
|
1633
|
+
}
|
|
1634
|
+
type InstagramHealthScoreResponse = InsufficientDataResponse | {
|
|
1635
|
+
hasData: true;
|
|
1636
|
+
data: InstagramHealthScoreData;
|
|
1637
|
+
_meta: InsightMeta;
|
|
1638
|
+
};
|
|
1639
|
+
interface InstagramAllInsightsData {
|
|
1640
|
+
bestPost: BestPerformingPostResponse;
|
|
1641
|
+
consistency: PostingConsistencyResponse;
|
|
1642
|
+
followerQuality: FollowerQualityResponse;
|
|
1643
|
+
momentum: InstagramMomentumResponse;
|
|
1644
|
+
engagement: EngagementBreakdownResponse;
|
|
1645
|
+
health: InstagramHealthScoreResponse;
|
|
1646
|
+
}
|
|
1647
|
+
interface InstagramAllInsightsResponse {
|
|
1648
|
+
data: InstagramAllInsightsData;
|
|
1649
|
+
meta: {
|
|
1650
|
+
available: string[];
|
|
1651
|
+
};
|
|
1652
|
+
}
|
|
1653
|
+
interface GetInstagramInsightParams {
|
|
1654
|
+
/** Time range (e.g., "30d") */
|
|
1655
|
+
range?: string;
|
|
1656
|
+
}
|
|
1380
1657
|
}
|
|
1381
1658
|
declare namespace Activity {
|
|
1382
1659
|
/**
|