Big-Link-Man/jobs/README.md

219 lines
4.6 KiB
Markdown

# Job File Format
Job files define batch content generation parameters using JSON format.
## Structure
```json
{
"jobs": [
{
"project_id": 1,
"tiers": {
"tier1": {
"count": 5,
"min_word_count": 2000,
"max_word_count": 2500,
"min_h2_tags": 3,
"max_h2_tags": 5,
"min_h3_tags": 5,
"max_h3_tags": 10
}
}
}
]
}
```
## Fields
### Job Level
- `project_id` (required): The project ID to generate content for
- `tiers` (required): Dictionary of tier configurations
- `deployment_targets` (optional): Array of site custom_hostnames or site_deployment_ids to cycle through
- `deployment_overflow` (optional): Strategy when batch size exceeds deployment_targets ("round_robin", "random_available", or "none"). Default: "round_robin"
### Tier Level
- `count` (required): Number of articles to generate for this tier
- `min_word_count` (optional): Minimum word count (uses defaults if not specified)
- `max_word_count` (optional): Maximum word count (uses defaults if not specified)
- `min_h2_tags` (optional): Minimum H2 headings (uses defaults if not specified)
- `max_h2_tags` (optional): Maximum H2 headings (uses defaults if not specified)
- `min_h3_tags` (optional): Minimum H3 subheadings total (uses defaults if not specified)
- `max_h3_tags` (optional): Maximum H3 subheadings total (uses defaults if not specified)
## Tier Defaults
If tier parameters are not specified, these defaults are used:
### tier1
- `min_word_count`: 2000
- `max_word_count`: 2500
- `min_h2_tags`: 3
- `max_h2_tags`: 5
- `min_h3_tags`: 5
- `max_h3_tags`: 10
### tier2
- `min_word_count`: 1500
- `max_word_count`: 2000
- `min_h2_tags`: 2
- `max_h2_tags`: 4
- `min_h3_tags`: 3
- `max_h3_tags`: 8
### tier3
- `min_word_count`: 1000
- `max_word_count`: 1500
- `min_h2_tags`: 2
- `max_h2_tags`: 3
- `min_h3_tags`: 2
- `max_h3_tags`: 6
## Examples
### Simple: Single Tier with Defaults
```json
{
"jobs": [
{
"project_id": 1,
"tiers": {
"tier1": {
"count": 5
}
}
}
]
}
```
### Custom Word Counts
```json
{
"jobs": [
{
"project_id": 1,
"tiers": {
"tier1": {
"count": 3,
"min_word_count": 2500,
"max_word_count": 3000
}
}
}
]
}
```
### Multi-Tier
```json
{
"jobs": [
{
"project_id": 1,
"tiers": {
"tier1": {
"count": 5
},
"tier2": {
"count": 10
},
"tier3": {
"count": 15
}
}
}
]
}
```
### Multiple Projects
```json
{
"jobs": [
{
"project_id": 1,
"tiers": {
"tier1": {
"count": 5
}
}
},
{
"project_id": 2,
"tiers": {
"tier1": {
"count": 3
},
"tier2": {
"count": 8
}
}
}
]
}
```
## Usage
Run batch generation with:
```bash
python main.py generate-batch --job-file jobs/example_tier1_batch.json --username youruser --password yourpass
```
### Options
- `--job-file, -j`: Path to job JSON file (required)
- `--username, -u`: Username for authentication
- `--password, -p`: Password for authentication
- `--debug`: Save AI responses to debug_output/
- `--continue-on-error`: Continue processing if article generation fails
- `--model, -m`: AI model to use (default: gpt-4o-mini)
### Deployment Target Assignment (Story 2.5)
Optionally specify which sites/buckets to deploy articles to:
```json
{
"jobs": [
{
"project_id": 1,
"deployment_targets": [
"www.domain1.com",
"www.domain2.com",
"www.domain3.com"
],
"deployment_overflow": "round_robin",
"tiers": {
"tier1": {
"count": 10
}
}
}
]
}
```
This generates 10 articles distributed across 3 sites:
- Articles 0, 3, 6, 9 → domain1.com
- Articles 1, 4, 7 → domain2.com
- Articles 2, 5, 8 → domain3.com
**Overflow Strategies:**
- `round_robin` (default): Cycle back through specified targets
- `random_available`: Use random sites not in the targets list
- `none`: Error if batch exceeds target count (strict mode)
If `deployment_targets` is omitted, articles receive random templates (no site assignment).
### Debug Mode
When using `--debug`, AI responses are saved to `debug_output/`:
- `title_project{id}_tier{tier}_article{n}_{timestamp}.txt`
- `outline_project{id}_tier{tier}_article{n}_{timestamp}.json`
- `content_project{id}_tier{tier}_article{n}_{timestamp}.html`
- `augmented_project{id}_tier{tier}_article{n}_{timestamp}.html` (if augmented)