-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.example.json
More file actions
88 lines (76 loc) · 4.34 KB
/
Copy pathconfig.example.json
File metadata and controls
88 lines (76 loc) · 4.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
{
"_comment": "Copy this file to config.json and fill in your values. Credentials go in environment variables, never here.",
"site_url": "https://your-wordpress-site.example.com",
"categories": [
{
"name": "personal-finance",
"_comment_ymyl": "Set ymyl:true for health, finance, legal, safety topics — adds citations + disclaimer scaffolding.",
"ymyl": true
},
{
"name": "home-improvement",
"ymyl": false
},
{
"name": "pet-care",
"ymyl": false
},
{
"name": "productivity",
"ymyl": false
}
],
"rotation_strategy": "sequential",
"_comment_rotation": "Options: 'sequential' (cycles through categories in order) or 'random' (picks one at random each run).",
"target_word_count": 1500,
"_comment_word_count": "Approximate word count for generated posts. 1200-2000 suits most informational queries; 3000+ for competitive head terms.",
"publish_status": "draft",
"_comment_status": "Options: 'draft' (recommended while evaluating output), 'publish', or 'private'.",
"embed_youtube": false,
"_comment_youtube": "Set true to search for a relevant YouTube video and embed it after the intro paragraph. Requires YOUTUBE_API_KEY env var.",
"serp": {
"provider": "apify",
"_comment_provider": "Currently supported: 'apify'. To use another provider, implement a branch in dispatch_serp_query() in scripts/serp_research.py.",
"actor_id": "apify/google-search-scraper",
"_comment_actor": "Apify actor ID for Google SERP scraping. Check the Apify Store for current highly-rated options.",
"results_per_query": 10,
"extract_paa": true,
"_comment_paa": "extract_paa: extract People-Also-Ask questions from SERP results.",
"country_code": "us",
"language_code": "en"
},
"post": {
"prompt_template": "Write a comprehensive, answer-first blog post titled '{topic}' for the content category '{category}'. Start with a direct, concise answer to the question in the opening paragraph (targeting position-zero featured snippets). Follow with well-structured body sections using H2 and H3 headings that address related questions. Include a minimum of 5 FAQ entries. Target approximately {word_count} words. {ymyl_instructions}",
"_comment_prompt": "Adjust this template for your LLM. {ymyl_instructions} is replaced with citation and disclaimer requirements when ymyl:true.",
"ymyl_instructions": "This is a YMYL (Your Money or Your Life) topic. Include a 'Sources' section with at least three reputable citations (e.g., government, academic, or established industry publications) and a disclaimer paragraph stating that the content is for informational purposes only and does not constitute professional financial, medical, or legal advice.",
"default_author_id": 1,
"_comment_author": "WordPress user ID of the post author. 1 is typically the admin account. Find yours via GET /wp-json/wp/v2/users/me.",
"default_tags": [],
"_comment_tags": "Array of WordPress tag IDs to apply to every post. Leave empty to skip. Find tag IDs via GET /wp-json/wp/v2/tags."
},
"image": {
"provider": "none",
"_comment_provider": "Options: 'none' (skip image generation), 'dalle' (OpenAI DALL-E), 'pexels' (free stock photos), 'stable-diffusion'. Wire up scripts/image_stub.py for your chosen provider.",
"width": 1200,
"height": 630,
"_comment_dimensions": "Featured image dimensions in pixels. 1200x630 is the standard Open Graph size."
},
"ledger": {
"topics_csv": "ledger/topic-ledger.csv",
"_comment_topics": "Path to the CSV file tracking published and skipped topics. Auto-created on first run.",
"backlinks_csv": "ledger/backlink-opportunities.csv",
"_comment_backlinks": "Path to the CSV file accumulating external domains linked as citations — for future link-building outreach.",
"rotation_state_json": "ledger/rotation_state.json",
"_comment_rotation_state": "JSON file that stores which category index to use next. Auto-created on first run."
},
"internal_link_check": {
"enabled": true,
"_comment": "When true, wp_publish.py check-slugs is called before publish and aborts on any dead slug.",
"abort_on_failure": true
},
"logging": {
"log_dir": "logs",
"log_level": "INFO",
"_comment": "Log files are written to log_dir/pipeline_YYYY-MM-DD.log. Options: DEBUG, INFO, WARNING, ERROR."
}
}