adding data

This commit is contained in:
2025-12-30 14:34:34 +01:00
parent 5f1b2d0474
commit 30a2a13d20
8 changed files with 1454 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
{
"permissions": {
"allow": [
"Bash(mv:*)",
"Bash(python3:*)",
"Bash(pip3 install:*)",
"Bash(source:*)",
"Bash(pip install:*)",
"Bash(python python/scraper.py:*)"
]
}
}

18
CLAUDE.md Normal file
View File

@@ -0,0 +1,18 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Purpose
This project aims to create comprehensive API-like documentation of all game elements in Anno 117: Pax Romana. The documentation (docs.md) should catalog buildings, resources, production chains, population tiers, and other game mechanics in a structured, queryable format.
## Project Status
This is a new project. The documentation structure and format are yet to be established.
## Goals
- Document all game elements (buildings, goods, production chains, population needs, etc.)
- Provide structured data that can be queried and referenced
- Create relationships between game elements (e.g., which buildings produce which goods)
- Track game version compatibility as the game evolves

View File

@@ -0,0 +1,7 @@
# Anno 117: Pax Romana documentation
## Run scraper
```bash
source venv/bin/activate && python python/scraper.py
```

713
docs.md Normal file
View File

@@ -0,0 +1,713 @@
# Anno 117: Pax Romana — Sandbox Mode Data Reference (API-Style)
> **Version:** 0.2 (compiled from provided research files; not yet a full extracted DB)
> **Focus:** Sandbox / Endless Mode mechanics (no controls/UI bindings)
> **Data Sources:** research_1.txt [oai_citation:0‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64), research_2.txt [oai_citation:1‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973), research_3.txt [oai_citation:2‡research_3.txt](sediment://file_00000000e73871f6bf8844e9c7de47e3)
>
> **Scope Warning (important):**
> This document only includes **entities and numeric stats explicitly present** in the supplied research files.
> Where a field is unknown, it is marked `Unknown` (not guessed).
---
## Table of Contents
- [Schemas](#schemas)
- [Schema: Building](#schema-building)
- [Schema: Good](#schema-good)
- [Schema: PopulationTier](#schema-populationtier)
- [Schema: ProductionChain](#schema-productionchain)
- [Schema: Specialist](#schema-specialist)
- [Schema: ShipHull](#schema-shiphull)
- [Schema: ShipModule](#schema-shipmodule)
- [Entities](#entities)
- [Population Tiers](#population-tiers)
- [Goods](#goods)
- [Buildings](#buildings)
- [Production Chains](#production-chains)
- [Trade & Logistics](#trade--logistics)
- [Ships & Naval](#ships--naval)
- [Specialists](#specialists)
- [Economy & Diagnostics](#economy--diagnostics)
- [Monuments](#monuments)
- [Troubleshooting Playbooks](#troubleshooting-playbooks)
- [Glossary](#glossary)
---
## Schemas
### Schema: Building
**Entity Type:** `Building`
| Field | Type | Notes |
|------|------|------|
| id | string | stable anchor id |
| name | string | display name |
| category | string | Production / Service / Safety / Monument / etc. |
| description | string | 12 lines max |
| requiredPopulationTier | string | link to tier |
| buildCost | object | `{ gold?, goods[] }` |
| constructionTime | string | usually instant per research |
| maintenance | object | `{ goldPerMin?, workforce[] }` |
| workforce | array | `[{ tier, count }]` |
| placementConstraints | array | coast/marsh/forest/fields/etc |
| roadRequired | boolean | |
| warehouseRequired | boolean | implies “in range of Warehouse/Trading Post” |
| inputGoods | array | links to goods |
| outputGoods | array | links to goods |
| cycleTimeSeconds | number | production cycle time |
| areaEffects | array | `{ type, value, target, radius? }` |
| productionChain | array | links to chain(s) |
| unlockCondition | string | tier, research, count, etc |
| usagePatterns | string | short |
| commonPitfalls | string | short |
---
### Schema: Good
**Entity Type:** `Good`
| Field | Type | Notes |
|------|------|------|
| id | string | stable anchor id |
| name | string | |
| category | string | Food / Construction / Intermediate / etc |
| usedFor | array | Construction, Consumption, Input, Trade |
| providesAttributes | array | `{ attribute, value, consumer? }` |
| producedBy | array | building links |
| consumedBy | array | building/tier links |
---
### Schema: PopulationTier
**Entity Type:** `PopulationTier`
| Field | Type |
|------|------|
| id | string |
| name | string |
| region | string |
| workforceFraction | number |
| needsCategories | array |
| notes | string |
| commonPitfalls | string |
---
### Schema: ProductionChain
**Entity Type:** `ProductionChain`
| Field | Type |
|------|------|
| id | string |
| name | string |
| steps | array | `{ building, in[], out[], cycleSeconds }` |
| recommendedRatios | array | `{ building, count }` |
| bottlenecks | array | goods/buildings |
| notes | string |
---
### Schema: Specialist
**Entity Type:** `Specialist`
| Field | Type |
|------|------|
| id | string |
| name | string |
| rarity | string |
| category | string |
| slotType | string |
| scope | string |
| effects | array | `{ type, target, value, scope }` |
| improvesBuildings | array | building links |
| stackRules | string |
| usagePatterns | string |
| commonPitfalls | string |
---
### Schema: ShipHull
**Entity Type:** `ShipHull`
| Field | Type |
|------|------|
| id | string |
| name | string |
| sizeClass | string |
| moduleSlots | number |
| notes | string |
---
### Schema: ShipModule
**Entity Type:** `ShipModule`
| Field | Type |
|------|------|
| id | string |
| name | string |
| effect | string |
| tradeoffs | string |
| notes | string |
---
## Entities
## Population Tiers
### Tier I — Liberti (Latium) / Waders (Albion) {#tier-i}
- **Entity Type:** PopulationTier
- **workforceFraction:** `0.50` [oai_citation:3‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **needsCategories:** Food, Public Service, Fashion [oai_citation:4‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **notes:** Avoid upgrading all Tier I housing at once; you can lose Tier I workers needed for basic chains. [oai_citation:5‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **commonPitfalls:** “Everything upgraded” ⇒ fisheries/farms/sawmills understaffed.
### Tier II — Plebeians (Latium) / Mercators or Smiths (Albion) {#tier-ii}
- **Entity Type:** PopulationTier
- **workforceFraction:** `0.30` [oai_citation:6‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **notes:** Tier II introduces major upkeep spikes (mills/bakeries/bricks, etc.). [oai_citation:7‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **commonPitfalls:** Overbuilding production buildings drains gold via maintenance. [oai_citation:8‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
### Tier III — Equites (Latium) / Higher Albion tiers {#tier-iii}
- **Entity Type:** PopulationTier
- **workforceFraction:** `0.20` [oai_citation:9‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **notes:** Higher complexity; shortages cascade across chains. [oai_citation:10‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
### Tier IV — Patricians (Latium) {#tier-iv}
- **Entity Type:** PopulationTier
- **workforceFraction:** `0.00` (reported “no workforce”) [oai_citation:11‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **notes:** Very high needs; unlock monuments like Amphitheatre. [oai_citation:12‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
---
## Goods
### Sardines {#good-sardines}
- **Entity Type:** Good
- **category:** Food
- **usedFor:** Consumption (Tier I Food need)
- **providesAttributes:** +1 Population, +1 Income (per house when fulfilling Food need) [oai_citation:13‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **producedBy:** [Fishing Hut](#building-fishing-hut)
- **consumedBy:** [Tier I](#tier-i)
### Porridge {#good-porridge}
- **Entity Type:** Good
- **category:** Food
- **usedFor:** Consumption (Tier I Food need)
- **providesAttributes:** +2 Population (per house when fulfilling Food need) [oai_citation:14‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **producedBy:** [Porridge Stand](#building-porridge-stand)
- **consumedBy:** [Tier I](#tier-i)
### Oats {#good-oats}
- **Entity Type:** Good
- **category:** Agricultural
- **usedFor:** Input (Porridge)
- **producedBy:** [Oat Farm](#building-oat-farm)
- **consumedBy:** [Porridge Stand](#building-porridge-stand)
### Hemp {#good-hemp}
- **Entity Type:** Good
- **category:** Agricultural
- **usedFor:** Input (Tunics)
- **producedBy:** [Hemp Farm](#building-hemp-farm)
- **consumedBy:** [Spinner](#building-spinner)
### Tunics {#good-tunics}
- **Entity Type:** Good
- **category:** Clothing / Fashion
- **usedFor:** Consumption (Tier I Fashion need)
- **providesAttributes:** +2 Population (reported) [oai_citation:15‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **producedBy:** [Spinner](#building-spinner)
- **consumedBy:** [Tier I](#tier-i)
### Timber (Planks) {#good-timber}
- **Entity Type:** Good
- **category:** Construction Material
- **usedFor:** Construction, Inputs
- **producedBy:** [Sawmill](#building-sawmill)
- **consumedBy:** Many (construction costs reference Timber widely) [oai_citation:16‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
---
## Buildings
### Woodcutter Hut {#building-woodcutter-hut}
- **Entity Type:** Building
- **category:** Production / Raw Materials
- **description:** Produces Logs from forest density.
- **requiredPopulationTier:** [Tier I](#tier-i)
- **buildCost:** `{ goods: [{ good: "Timber", amount: 2 }] }` [oai_citation:17‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **constructionTime:** Instant (reported general rule) [oai_citation:18‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **maintenance:** `{ goldPerMin: -5, workforce: [{ tier: "Tier I", count: 2 }] }` (approx.) [oai_citation:19‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **workforce:** `[{ tier: Tier I, count: 2 }]` [oai_citation:20‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **placementConstraints:** Forest overlap required; low density reduces productivity. [oai_citation:21‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **roadRequired:** true [oai_citation:22‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **warehouseRequired:** true [oai_citation:23‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **inputGoods:** none
- **outputGoods:** `Unknown (Logs)` (named in text; Good entry not separately defined)
- **cycleTimeSeconds:** 30 [oai_citation:24‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **productionChain:** [Chain: Timber](#chain-timber)
- **unlockCondition:** Tier I [oai_citation:25‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **usagePatterns:** Place deep in dense forest, keep a warehouse in range.
- **commonPitfalls:** Sparse forest ⇒ “mystery” timber shortages downstream.
---
### Sawmill {#building-sawmill}
- **Entity Type:** Building
- **category:** Production / Construction Materials
- **description:** Converts Logs → Timber planks.
- **requiredPopulationTier:** [Tier I](#tier-i)
- **buildCost:** `{ goods: [{ good: "Timber", amount: 2 }] }` [oai_citation:26‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **constructionTime:** Instant [oai_citation:27‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **maintenance:** `{ goldPerMin: -5, workforce: [{ tier: "Tier I", count: 2 }] }` (approx.) [oai_citation:28‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **workforce:** `[{ tier: Tier I, count: 2 }]` [oai_citation:29‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **placementConstraints:** None special (but requires logistics)
- **roadRequired:** true [oai_citation:30‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **warehouseRequired:** true [oai_citation:31‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **inputGoods:** `Unknown (Logs)`
- **outputGoods:** [Timber](#good-timber)
- **cycleTimeSeconds:** 30 [oai_citation:32‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **productionChain:** [Chain: Timber](#chain-timber)
- **unlockCondition:** Tier I
- **usagePatterns:** Pair 1:1 with Woodcutters (matching cycle times).
- **commonPitfalls:** Too many sawmills ⇒ upkeep drain without benefit.
---
### Fishing Hut (Latium) {#building-fishing-hut}
- **Entity Type:** Building
- **category:** Production / Food (Fishery)
- **description:** Coastal fishery producing Sardines.
- **requiredPopulationTier:** [Tier I](#tier-i)
- **buildCost:** `{ goods: [{ good: "Timber", amount: 2 }] }` [oai_citation:33‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **constructionTime:** Instant [oai_citation:34‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **maintenance:** `{ goldPerMin: -6, workforce: [{ tier: "Tier I", count: 4 }] }` [oai_citation:35‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **workforce:** `[{ tier: Tier I, count: 4 }]` [oai_citation:36‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **placementConstraints:** Coast / Harbor Area required. [oai_citation:37‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **roadRequired:** true [oai_citation:38‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **warehouseRequired:** true [oai_citation:39‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **inputGoods:** none
- **outputGoods:** [Sardines](#good-sardines)
- **cycleTimeSeconds:** 60 [oai_citation:40‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **productionChain:** [Chain: Tier I Food](#chain-tier-i-food)
- **unlockCondition:** Tier I [oai_citation:41‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **usagePatterns:** Cluster fisheries for specialist + area-effect stacking.
- **commonPitfalls:** Overbuilt fisheries ⇒ gold bleed; also “need flicker” if storage/transport dips.
---
### Cockle Picker (Albion) {#building-cockle-picker}
- **Entity Type:** Building
- **category:** Production / Food (Fishery analogue)
- **description:** Coastal gatherer producing Cockles for Waders.
- **requiredPopulationTier:** [Tier I](#tier-i)
- **buildCost:** `Unknown` (research says “similar to Fishing Hut”, but not hard numbers) [oai_citation:42‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **maintenance:** `Unknown`
- **workforce:** `Unknown`
- **placementConstraints:** Coast (Albion) [oai_citation:43‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **cycleTimeSeconds:** `Unknown (reported ~60s but not asserted)`
- **usagePatterns:** Albion starter food option.
- **commonPitfalls:** Confusing coast vs marsh producers in Albion. [oai_citation:44‡research_3.txt](sediment://file_00000000e73871f6bf8844e9c7de47e3)
---
### Eel Grabber (Albion) {#building-eel-grabber}
- **Entity Type:** Building
- **category:** Production / Food (Marsh fishery)
- **description:** Marshland fish producer (Eels).
- **requiredPopulationTier:** [Tier I](#tier-i)
- **buildCost:** Unknown
- **maintenance:** Unknown
- **workforce:** Unknown
- **placementConstraints:** Marshland placement required (Albion-specific). [oai_citation:45‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **cycleTimeSeconds:** `Unknown (likely 60s per research wording; not asserted as fact)` [oai_citation:46‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **usagePatterns:** Place in marsh; pair with coastal cockles early.
- **commonPitfalls:** Trying to place on coast; marsh-only building. [oai_citation:47‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
---
### Oat Farm {#building-oat-farm}
- **Entity Type:** Building
- **category:** Production / Agriculture
- **description:** Produces Oats; uses field modules; aqueduct optional.
- **requiredPopulationTier:** [Tier I](#tier-i)
- **buildCost:** `{ goods: [{ good: "Timber", amount: 3 }] }` [oai_citation:48‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **constructionTime:** Instant [oai_citation:49‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **maintenance:** `{ goldPerMin: -4, workforce: [{ tier: "Tier I", count: 3 }] }` [oai_citation:50‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **workforce:** `[{ tier: Tier I, count: 3 }]` [oai_citation:51‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **placementConstraints:** Requires fields; requires relevant fertility (oat/grain). [oai_citation:52‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **roadRequired:** true [oai_citation:53‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **warehouseRequired:** true [oai_citation:54‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **inputGoods:** none
- **outputGoods:** [Oats](#good-oats)
- **cycleTimeSeconds:** 60 [oai_citation:55‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **productionChain:** [Chain: Porridge](#chain-porridge)
- **unlockCondition:** Tier I
- **usagePatterns:** Keep fields compact; warehouse nearby; consider aqueduct support.
- **commonPitfalls:** Insufficient fields/fertility ⇒ low output; long travel distance ⇒ apparent underproduction.
---
### Porridge Stand {#building-porridge-stand}
- **Entity Type:** Building
- **category:** Production / Food
- **description:** Converts Oats → Porridge.
- **requiredPopulationTier:** [Tier I](#tier-i)
- **buildCost:** `{ goods: [{ good: "Timber", amount: 2 }] }` [oai_citation:56‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **constructionTime:** Instant [oai_citation:57‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **maintenance:** `{ goldPerMin: -8, workforce: [{ tier: "Tier I", count: 2 }] }` [oai_citation:58‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **workforce:** `[{ tier: Tier I, count: 2 }]` [oai_citation:59‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **placementConstraints:** Needs road/warehouse.
- **roadRequired:** true [oai_citation:60‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **warehouseRequired:** true [oai_citation:61‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **inputGoods:** [Oats](#good-oats)
- **outputGoods:** [Porridge](#good-porridge)
- **cycleTimeSeconds:** 60 [oai_citation:62‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **productionChain:** [Chain: Porridge](#chain-porridge)
- **unlockCondition:** Tier I
- **usagePatterns:** Pair 1:1 with Oat Farms for balanced flow (both 60s).
- **commonPitfalls:** Oats delivered too slowly ⇒ porridge “flicker” and population drops.
---
### Hemp Farm {#building-hemp-farm}
- **Entity Type:** Building
- **category:** Production / Agriculture
- **description:** Produces Hemp for Tunics; uses fields; aqueduct optional.
- **requiredPopulationTier:** [Tier I](#tier-i)
- **buildCost:** `{ goods: [{ good: "Timber", amount: 2 }] }` [oai_citation:63‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **maintenance:** `{ goldPerMin: -4, workforce: [{ tier: "Tier I", count: 3 }] }` [oai_citation:64‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **placementConstraints:** Fields + correct fertility. [oai_citation:65‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **roadRequired:** true [oai_citation:66‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **warehouseRequired:** true [oai_citation:67‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **outputGoods:** [Hemp](#good-hemp)
- **cycleTimeSeconds:** 60 [oai_citation:68‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **productionChain:** [Chain: Tunics](#chain-tunics)
- **usagePatterns:** Keep close to Spinner; reduce hauling delays.
- **commonPitfalls:** Too few fields or long hauling times ⇒ spinner starvation.
---
### Spinner {#building-spinner}
- **Entity Type:** Building
- **category:** Production / Clothing
- **description:** Converts Hemp → Tunics; provides local income area effect.
- **requiredPopulationTier:** [Tier I](#tier-i)
- **buildCost:** `{ goods: [{ good: "Timber", amount: 2 }] }` [oai_citation:69‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **maintenance:** `{ goldPerMin: -8, workforce: [{ tier: "Tier I", count: 3 }] }` [oai_citation:70‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **inputGoods:** [Hemp](#good-hemp)
- **outputGoods:** [Tunics](#good-tunics)
- **cycleTimeSeconds:** 30 [oai_citation:71‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **areaEffects:** `[{ type: "IncomeAreaEffect", value: +1, target: "Nearby buildings (incl residences)", radius: "Unknown" }]` [oai_citation:72‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **productionChain:** [Chain: Tunics](#chain-tunics)
- **usagePatterns:** Place near residences to maximize income area effect.
- **commonPitfalls:** Spinner output can be fine while income effect is wasted if placed far from housing.
---
### Bakery {#building-bakery}
- **Entity Type:** Building
- **category:** Production / Food (Tier II)
- **description:** Produces Bread (Tier II staple); high upkeep.
- **requiredPopulationTier:** [Tier II](#tier-ii)
- **buildCost:** `Unknown in supplied snippets` (but bakery upkeep is explicitly given) [oai_citation:73‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **maintenance:** `{ goldPerMin: -14, workforce: [{ tier: "Tier II", count: 3 }] }` [oai_citation:74‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **inputGoods:** `Unknown (Flour + Charcoal implied by chain text)` [oai_citation:75‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **outputGoods:** `Unknown (Bread)` [oai_citation:76‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **cycleTimeSeconds:** 60 (from bread chain summary) [oai_citation:77‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **usagePatterns:** Only scale to actual consumption; bakeries are a common cashflow killer.
- **commonPitfalls:** Overbuilding bakeries ⇒ negative income swings; missing charcoal ⇒ “mystery” bread shortages. [oai_citation:78‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
---
## Production Chains
### Chain: Timber {#chain-timber}
- **Entity Type:** ProductionChain
- **steps:**
- `{ building: [Woodcutter Hut](#building-woodcutter-hut), in: [], out: ["Logs"], cycleSeconds: 30 }` [oai_citation:79‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- `{ building: [Sawmill](#building-sawmill), in: ["Logs"], out: [Timber](#good-timber), cycleSeconds: 30 }` [oai_citation:80‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **recommendedRatios:** Woodcutter 1 : Sawmill 1 (matching 30s cycles) [oai_citation:81‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **bottlenecks:** Forest density (Woodcutter placement) [oai_citation:82‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
### Chain: Tier I Food {#chain-tier-i-food}
- **Entity Type:** ProductionChain
- **steps:**
- `{ building: [Fishing Hut](#building-fishing-hut), in: [], out: [Sardines](#good-sardines), cycleSeconds: 60 }` [oai_citation:83‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- `{ building: [Oat Farm](#building-oat-farm), in: [], out: [Oats](#good-oats), cycleSeconds: 60 }` [oai_citation:84‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- `{ building: [Porridge Stand](#building-porridge-stand), in: [Oats](#good-oats), out: [Porridge](#good-porridge), cycleSeconds: 60 }` [oai_citation:85‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **notes:** Many Tier I settlements produce both Sardines and Porridge to maximize population. [oai_citation:86‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
### Chain: Porridge {#chain-porridge}
- **Entity Type:** ProductionChain
- **steps:**
- Oat Farm (60s) → Oats [oai_citation:87‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- Porridge Stand (60s) + Oats → Porridge [oai_citation:88‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **recommendedRatios:** Oat Farm 1 : Porridge Stand 1 (both 60s)
- **bottlenecks:** Field layout, fertility, hauling distance. [oai_citation:89‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
### Chain: Tunics {#chain-tunics}
- **Entity Type:** ProductionChain
- **steps:**
- Hemp Farm (60s) → Hemp [oai_citation:90‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- Spinner (30s) + Hemp → Tunics [oai_citation:91‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **recommendedRatios:** `Unknown` (cycle mismatch suggests multiple spinners can consume one farm; exact throughput not given in files)
- **notes:** Spinner provides an income area effect (+1) near buildings. [oai_citation:92‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
### Chain: Bread (summary) {#chain-bread}
- **Entity Type:** ProductionChain
- **steps (summary only):**
- Wheat Farm (60s) → Grain
- Grain Mill (30s) → Flour
- Bakery (60s) + (requires Charcoal) → Bread [oai_citation:93‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **recommendedRatios:** 2 Wheat : 1 Mill : 2 Bakeries [oai_citation:94‡research_3.txt](sediment://file_00000000e73871f6bf8844e9c7de47e3)
- **bottlenecks:** Charcoal availability; bakery upkeep. [oai_citation:95‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64) [oai_citation:96‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
---
## Trade & Logistics
### Entity: TradeRoute {#entity-traderoute}
- **Entity Type:** SystemEntity
- **description:** Automated ship loop moving goods between islands.
- **configuration:**
- Select ship
- Enable Trade Route
- Assign goods per cargo slot
- Assign islands for load/unload
- **rules:**
- Route loops indefinitely
- Used to supply production chains across islands
- **usagePatterns:** Specialize islands (agricultural vs industrial) and route goods accordingly. [oai_citation:97‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **commonPitfalls:** Under-shipping (not enough cargo throughput) ⇒ need flicker and income oscillation.
### Entity: DiplomaticTrade {#entity-diplomatictrade}
- **Entity Type:** SystemEntity
- **description:** Passive buy/sell orders at Trading Post with AI via treaties.
- **configuration:** Set fixed buy/sell orders, price, quantity. [oai_citation:98‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
- **usagePatterns:** Monetize surplus production; import hard-to-get goods. [oai_citation:99‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
---
## Ships & Naval
### Shipyard (system) {#system-shipyard}
- **Entity Type:** SystemEntity
- **description:** Ships are constructed in a Shipyard; construction consumes resources and time.
- **rule:** Insufficient workforce slows ship construction. [oai_citation:100‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
### Hulls {#naval-hulls}
#### Penteconter {#hull-penteconter}
- **Entity Type:** ShipHull
- **sizeClass:** Small
- **moduleSlots:** 2 [oai_citation:101‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
- **notes:** Fewer slots; cheaper; likely faster acceleration.
#### Trireme {#hull-trireme}
- **Entity Type:** ShipHull
- **sizeClass:** Medium
- **moduleSlots:** 3 [oai_citation:102‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
#### Quinquireme {#hull-quinquireme}
- **Entity Type:** ShipHull
- **sizeClass:** Large
- **moduleSlots:** 4 [oai_citation:103‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
- **notes:** More capacity and HP; slower acceleration. [oai_citation:104‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
### Modules {#naval-modules}
#### Mast {#module-mast}
- **Entity Type:** ShipModule
- **effect:** +long-distance speed (wind) [oai_citation:105‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
#### Rows (Oars) {#module-rows}
- **Entity Type:** ShipModule
- **effect:** +base speed, acceleration, maneuver [oai_citation:106‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
- **tradeoffs:** Consumes more crew than sails. [oai_citation:107‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
#### Reinforced Hull {#module-reinforced-hull}
- **Entity Type:** ShipModule
- **effect:** +health/durability [oai_citation:108‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
#### Archer Tower {#module-archer-tower}
- **Entity Type:** ShipModule
- **effect:** short-range multi-arrow attack (all-around) [oai_citation:109‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
- **tradeoffs:** Requires more soldiers/crew. [oai_citation:110‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
#### Scorpio {#module-scorpio}
- **Entity Type:** ShipModule
- **effect:** side-mounted high-damage spears (medium range) [oai_citation:111‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
#### Onager {#module-onager}
- **Entity Type:** ShipModule
- **effect:** forward catapult (long range, high damage, low accuracy) [oai_citation:112‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
### Ship Design Slots {#naval-design-slots}
- **rule:** Save up to 2 custom designs per hull per shipyard (6 total). [oai_citation:113‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
- **rule:** Ships cannot be refitted after building (per research text). [oai_citation:114‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
---
## Specialists
### Specialist System (general) {#system-specialists}
- **Entity Type:** SystemEntity
- **description:** Specialists slot into certain buildings and modify stats (productivity, workforce, upkeep, etc.).
- **known effect examples:** +25% productivity, 25% workforce needed (examples referenced) [oai_citation:115‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **sources:** Obtained via quests, events, or trade. [oai_citation:116‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
### Uiscarix, Hygiean Fishmonger {#specialist-uiscarix-hygiean-fishmonger}
- **Entity Type:** Specialist
- **rarity:** Epic (from user screenshot)
- **category:** Finance (from user screenshot)
- **slotType:** Specialist (from user screenshot)
- **scope:** Fisheries in range (from user screenshot)
- **effects:**
| Effect Type | Target | Value | Scope |
|------------|--------|-------|-------|
| Income Area Effect | Fisheries | +1.5 | Radius-based |
- **improvesBuildings:**
- [Eel Grabber](#building-eel-grabber)
- [Oyster Bed](#building-oyster-bed) *(not defined in supplied files; placeholder)*
- [Cockle Picker](#building-cockle-picker)
- [Scomber's Shack](#building-scombers-shack) *(placeholder)*
- [Fishing Hut](#building-fishing-hut)
- [Sturgeon Hatchery](#building-sturgeon-hatchery) *(placeholder)*
- **stackRules:** Unknown (not present in supplied files)
- **usagePatterns:** Slot into a coastal hub building covering many fisheries.
- **commonPitfalls:** Misplaced radius ⇒ zero value; does not fix overproduction warnings.
---
## Economy & Diagnostics
### Maintenance Model {#system-maintenance}
- **rule:** Nearly every building has ongoing gold + workforce maintenance. [oai_citation:117‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **example:** Fishing Hut costs 6 gold/min and uses 4 Tier I workers. [oai_citation:118‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **example:** Bakery costs 14 gold/min and uses 3 Tier II workers. [oai_citation:119‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **rule:** Deleting buildings stops upkeep and frees workforce. [oai_citation:120‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
### Area Effects {#system-area-effects}
- **rule:** Buildings can give positive/negative proximity modifiers (shown by green/red arrows on placement). [oai_citation:121‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **example:** Spinner gives income boost near buildings. [oai_citation:122‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **example:** Polluters (e.g., Charcoal Burner) decrease happiness/health (mentioned). [oai_citation:123‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
### Statistics Screen {#system-statistics-screen}
- **rule:** Use statistics to compare production vs consumption; overproduction flagged (e.g., “too much Sheep”). [oai_citation:124‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
- **diagnostic:**
- Green bar high ⇒ overproduction ⇒ export/demolish/disable
- White bar high ⇒ shortage ⇒ add buildings or fix logistics [oai_citation:125‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
---
## Monuments
### Amphitheatre {#monument-amphitheatre}
- **Entity Type:** Building (Monument)
- **unique:** One per island (reported) [oai_citation:126‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **unlockCondition:** Patricians exist (Tier IV) [oai_citation:127‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **construction:** 4 stages; large time + resources; later stages require expensive materials (marble/glass/iron mentioned) [oai_citation:128‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **effects (complete):** +3 Population, +3 Happiness, +7 Prestige (large radius) [oai_citation:129‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **events:** Hosts events (local games / grand games / naumachia) consuming goods/workforce for city buffs. [oai_citation:130‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
- **commonPitfalls:** Starting monument too early can bankrupt you (maintenance + diverted materials).
---
## Troubleshooting Playbooks
### Playbook: “My income is bouncing up and down” {#playbook-income-bouncing}
1. **Check upkeep spikes:** did you place a high-upkeep building (e.g., Bakery)? [oai_citation:131‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
2. **Check need flicker:** are food/clothing stocks dipping to zero intermittently? (storage/transport) [oai_citation:132‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
3. **Check workforce:** red hammer / missing tier workers after upgrades. [oai_citation:133‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
4. **Open Statistics Screen:** verify production vs consumption bars. [oai_citation:134‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
5. **Fix by priority:** Tier I Food → Tier I Fashion → Tier II staple chains.
### Playbook: “Game says I have too much Sheep” {#playbook-too-much-sheep}
1. Confirm overproduction in Statistics Screen. [oai_citation:135‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
2. Add/scale downstream processor (Felter) if present in your build.
3. Export surplus via trade routes or diplomatic orders. [oai_citation:136‡research_2.txt](sediment://file_000000005adc71f685d34607bf4d3973)
4. Demolish/disable extra farms to stop upkeep drain. [oai_citation:137‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
### Playbook: “Why are my houses not upgrading?” {#playbook-houses-not-upgrading}
1. Ensure at least one need per category is met. [oai_citation:138‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
2. Ensure service buildings area coverage includes houses (roads/range). [oai_citation:139‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
3. Ensure storage has the goods (not just “producing”, but delivered). [oai_citation:140‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
---
## Glossary
- **Need Flicker:** A need repeatedly turning on/off because storage hits zero intermittently.
- **Area Effect:** Radius-based modifier from a building or specialist (income, happiness, safety).
- **Upkeep:** Ongoing gold loss and workforce reservation for a building.
- **Throughput:** Effective goods per time, impacted by cycle time and logistics.
- **Warehouse Cloud:** Shared island storage accessible via connected warehouses/trading post. [oai_citation:141‡research_1.txt](sediment://file_00000000bf1071f69301ec14cba01a64)
---
## Placeholders (defined for linking; no data in supplied files)
### Oyster Bed {#building-oyster-bed}
- **Entity Type:** Building
- **status:** Placeholder (no stats in supplied research files)
### Scomber's Shack {#building-scombers-shack}
- **Entity Type:** Building
- **status:** Placeholder (no stats in supplied research files)
### Sturgeon Hatchery {#building-sturgeon-hatchery}
- **Entity Type:** Building
- **status:** Placeholder (no stats in supplied research files)

14
processed.md Normal file
View File

@@ -0,0 +1,14 @@
# Processed Scraped Files
This file tracks which JSON files from `scraped_data/` have been incorporated into `docs.md`.
When Claude processes a JSON file and adds its data to docs.md, mark it here.
## Processed Files
<!-- Add processed files below in format: - [x] filename.json -->
## Pending Files
- [ ] anno-117-tools_produktionsketten.json
- [ ] anno-117-tools.json

256
python/scraper.py Normal file
View File

@@ -0,0 +1,256 @@
#!/usr/bin/env python3
"""
Anno 117 Web Scraper
Scrapes pages listed in scraping.md, extracts game data,
discovers new pages, and updates the scraping list.
"""
import re
import json
from pathlib import Path
from urllib.parse import urljoin, urlparse
import requests
from bs4 import BeautifulSoup
# Project paths
PROJECT_ROOT = Path(__file__).parent.parent
SCRAPING_MD = PROJECT_ROOT / "scraping.md"
PROCESSED_MD = PROJECT_ROOT / "processed.md"
OUTPUT_DIR = PROJECT_ROOT / "scraped_data"
def read_scraping_md() -> tuple[list[str], list[str], str]:
"""
Read scraping.md and return (unchecked_urls, checked_urls, full_content).
"""
content = SCRAPING_MD.read_text(encoding="utf-8")
unchecked = re.findall(r"^- \[ \] (https?://[^\s]+)", content, re.MULTILINE)
checked = re.findall(r"^- \[x\] (https?://[^\s]+)", content, re.MULTILINE)
return unchecked, checked, content
def mark_url_as_done(url: str) -> None:
"""Mark a URL as scraped in scraping.md."""
content = SCRAPING_MD.read_text(encoding="utf-8")
# Use regex to match the exact URL (followed by newline or end of string)
# This prevents partial URL matches
escaped_url = re.escape(url)
pattern = rf"^- \[ \] {escaped_url}$"
replacement = f"- [x] {url}"
content = re.sub(pattern, replacement, content, flags=re.MULTILINE)
SCRAPING_MD.write_text(content, encoding="utf-8")
print(f"Marked as done: {url}")
def add_new_urls(new_urls: list[str]) -> None:
"""Add newly discovered URLs to scraping.md if not already present."""
unchecked, checked, content = read_scraping_md()
existing = set(unchecked + checked)
urls_to_add = [url for url in new_urls if url not in existing]
if urls_to_add:
# Append new URLs at the end
additions = "\n".join(f"- [ ] {url}" for url in urls_to_add)
content = content.rstrip() + "\n" + additions + "\n"
SCRAPING_MD.write_text(content, encoding="utf-8")
print(f"Added {len(urls_to_add)} new URLs to scraping.md")
for url in urls_to_add:
print(f" + {url}")
def extract_links(soup: BeautifulSoup, base_url: str) -> list[str]:
"""Extract relevant anno.land links from the page."""
links = []
base_domain = urlparse(base_url).netloc
for a in soup.find_all("a", href=True):
href = a["href"]
full_url = urljoin(base_url, href)
parsed = urlparse(full_url)
# Only keep links from the same domain and relevant paths
if parsed.netloc == base_domain:
# Filter for Anno 117 related content
if any(keyword in parsed.path for keyword in [
"anno-117", "goods", "buildings", "specialists",
"skills", "guides", "tools", "datenbank"
]):
# Clean the URL (remove fragments and query params for deduplication)
clean_url = f"{parsed.scheme}://{parsed.netloc}{parsed.path}"
if clean_url.endswith("/"):
clean_url = clean_url.rstrip("/") + "/"
else:
clean_url = clean_url + "/" if not parsed.path.endswith((".html", ".php")) else clean_url
if clean_url not in links:
links.append(clean_url)
return links
def scrape_page(url: str) -> dict:
"""
Scrape a single page and extract relevant content.
Returns a dict with the scraped data.
"""
print(f"Scraping: {url}")
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
}
response = requests.get(url, headers=headers, timeout=30)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
# Extract page title
title = soup.find("title")
title_text = title.get_text(strip=True) if title else "Unknown"
# Extract main content (adjust selectors based on site structure)
main_content = soup.find("main") or soup.find("article") or soup.find("div", class_="content")
# Extract all text content
if main_content:
text_content = main_content.get_text(separator="\n", strip=True)
else:
# Fallback to body
body = soup.find("body")
text_content = body.get_text(separator="\n", strip=True) if body else ""
# Extract tables (common for game data)
tables = []
for table in soup.find_all("table"):
table_data = []
for row in table.find_all("tr"):
cells = [cell.get_text(strip=True) for cell in row.find_all(["td", "th"])]
if cells:
table_data.append(cells)
if table_data:
tables.append(table_data)
# Extract images (for item/building icons)
images = []
for img in soup.find_all("img"):
src = img.get("src", "")
alt = img.get("alt", "")
if src and any(keyword in src.lower() for keyword in ["icon", "item", "building", "good"]):
images.append({"src": urljoin(url, src), "alt": alt})
# Extract discovered links
discovered_links = extract_links(soup, url)
# Extract all images (not just filtered ones)
all_images = []
for img in soup.find_all("img"):
src = img.get("src", "")
alt = img.get("alt", "")
if src:
all_images.append({"src": urljoin(url, src), "alt": alt})
return {
"url": url,
"title": title_text,
"text_content": text_content, # Full content for Claude to process
"tables": tables,
"images": images, # Filtered icons
"all_images": all_images, # All images on page
"discovered_links": discovered_links,
"full_html_length": len(response.text)
}
def save_scraped_data(data: dict, url: str) -> Path:
"""Save scraped data to a JSON file."""
OUTPUT_DIR.mkdir(exist_ok=True)
# Create filename from URL
parsed = urlparse(url)
path_parts = [p for p in parsed.path.split("/") if p]
filename = "_".join(path_parts) if path_parts else "index"
filename = re.sub(r"[^\w\-]", "_", filename)
output_file = OUTPUT_DIR / f"{filename}.json"
with open(output_file, "w", encoding="utf-8") as f:
json.dump(data, f, indent=2, ensure_ascii=False)
print(f"Saved to: {output_file}")
return output_file
def add_pending_file(json_filename: str) -> None:
"""Add a JSON file to the pending section of processed.md."""
content = PROCESSED_MD.read_text(encoding="utf-8")
# Check if file is already listed
if json_filename in content:
return
# Add to pending section
pending_marker = "## Pending Files"
if pending_marker in content:
content = content.replace(
pending_marker,
f"{pending_marker}\n- [ ] {json_filename}"
)
PROCESSED_MD.write_text(content, encoding="utf-8")
print(f"Added to processed.md pending: {json_filename}")
def main():
"""Main entry point - scrape one unchecked page."""
unchecked, checked, _ = read_scraping_md()
if not unchecked:
print("No unchecked URLs found in scraping.md")
return
print(f"Found {len(unchecked)} unchecked URLs")
print(f"Already scraped: {len(checked)} URLs")
# Take the first unchecked URL
url = unchecked[0]
try:
# Scrape the page
data = scrape_page(url)
# Save the data
output_file = save_scraped_data(data, url)
# Track in processed.md as pending
add_pending_file(output_file.name)
# Print summary
print(f"\n--- Summary ---")
print(f"Title: {data['title']}")
print(f"Content length: {len(data['text_content'])} chars")
print(f"Tables found: {len(data['tables'])}")
print(f"Images found: {len(data['images'])}")
print(f"Links discovered: {len(data['discovered_links'])}")
# Add discovered links to scraping.md
if data["discovered_links"]:
add_new_urls(data["discovered_links"])
# Mark this URL as done
mark_url_as_done(url)
print(f"\nSuccessfully scraped: {url}")
except requests.RequestException as e:
print(f"Error scraping {url}: {e}")
raise
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,67 @@
{
"url": "https://anno.land/anno-117-tools/",
"title": "🛠️ Anno 117 Tools & Planer | ANNOLAND",
"text_content": "Tools & Planer\nfür Anno 117\nKleine Helfer für Anno 117\nAuf dieser Seite findest du eine Reihe nützlicher Tools, die dir das Spielen von Anno 117 (hoffentlich) erleichtern. Vom Warenrechner über Baulayouts bis zum Skillbaum-Planer ist alles dabei. Etwas funktioniert nicht richtig? Dann\nschreib mir\nbitte.\nFolge Annoland\nYouTube\nTikTok\nWarenrechner\nEine Übersicht der Produktionsketten für alle Regionen in Anno 117, inklusive der richtigen Anzahl jedes Gebäudes, damit die Warenkette effizient läuft.\nSkillbaum Planer\nMit diesem praktischen Tool kannst du deine Anno 117 Forschung inkl. der exakten Reihenfolge planen, speichern und mit anderen teilen.\nBaulayouts (WIP)\nPlatzsparend bauen gehört zu den größten Herausforderungen in Anno 117, wenn du Wert auf eine effiziente Nutzung deiner Inselfläche legst.\nStadtplaner (WIP)\nDu willst wissen, für welche wichtigen Gebäude du in deiner Stadt genügend Platz benötigst? Dieser Planer hilft dir, bestens auf alles vorbereitet zu sein.\nSchönbau Galerie (WIP)\nDu legst wenig Wert auf Effizienz und möchtest vor allem, dass deine Stadt in Anno 117 hübsch aussieht? Dann findest du hier Inspiration für den Schönbau.",
"tables": [],
"images": [],
"all_images": [
{
"src": "https://anno.land/wp-content/uploads/Annoland-BG-04.webp",
"alt": "Anno 117 Tools & Planer Intro Banner"
},
{
"src": "https://anno.land/wp-content/uploads/Warenrechner-Thumb.webp",
"alt": "Warenrechner Thumbnail"
},
{
"src": "https://anno.land/wp-content/uploads/Anno-117-Skilltree-Planer-Thumb.webp",
"alt": "Skillbaum Planer Thumbnail"
},
{
"src": "https://anno.land/wp-content/uploads/Anno-117-Baulayouts-Thumb-2.webp",
"alt": "Baulayouts (WIP) Thumbnail"
},
{
"src": "https://anno.land/wp-content/uploads/Tool-Stadtplaner.webp",
"alt": "Stadtplaner (WIP) Thumbnail"
},
{
"src": "https://anno.land/wp-content/uploads/Anno-117-Schoenbau-Thumb.webp",
"alt": "Schönbau Galerie (WIP) Thumbnail"
},
{
"src": "https://anno.land/wp-content/uploads/Annoland-BG-04.webp",
"alt": "Anno 117 Tools & Planer Outro Banner"
},
{
"src": "https://anno.land/wp-content/uploads/sprache-de.webp",
"alt": "de_DE"
},
{
"src": "https://anno.land/wp-content/uploads/sprache-en.webp",
"alt": "en_US"
}
],
"discovered_links": [
"https://anno.land/anno-117-tools/",
"https://anno.land/anno-117-tools/produktionsketten/",
"https://anno.land/anno-117-tools/skillbaum-planer/",
"https://anno.land/anno-117-tools/stadtplaner/",
"https://anno.land/anno-117-tools/baulayouts/",
"https://anno.land/anno-117-tools/schoenbau/",
"https://anno.land/anno-117-guides/",
"https://anno.land/anno-117-guides/tipps-tricks/",
"https://anno.land/anno-117-guides/gold-verdienen/",
"https://anno.land/anno-117-guides/beduerfnisse-guide/",
"https://anno.land/anno-117-guides/zwischenfaelle-managen/",
"https://anno.land/anno-117-datenbanken/",
"https://anno.land/anno-117-specialists/",
"https://anno.land/anno-117-datenbanken/kapitaen-item-datenbank/",
"https://anno.land/anno-117-goods/",
"https://anno.land/anno-117-buildings/",
"https://anno.land/anno-117-skills/",
"https://anno.land/anno-117-guides/links-mods/",
"https://anno.land/en/anno-117-tools/"
],
"full_html_length": 32392
}

367
scraping.md Normal file
View File

@@ -0,0 +1,367 @@
# Scrape sources
Make sure to check for javascript/ajax calls that retrieve more data.
Use Playwright MCP to retrieve data and url's when you cannot do it with code.
If the pages that you scrape are not english, translate the content to english.
Make sure the game entities/elements are always references to in their english names.
If you find more soruces, add them to the list in this file.
Check off pages when they are scraped.
Scrape the following pages, and their child pages:
- [x] https://anno.land/anno-117-tools/
- [x] https://anno.land/anno-117-tools/produktionsketten/
- [ ] https://anno.land/anno-117-tools/skillbaum-planer/?set=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- [ ] https://anno.land/anno-117-guides/
- [ ] https://anno.land/anno-117-guides/tipps-tricks/
- [ ] https://anno.land/anno-117-guides/gold-verdienen-finanzen-guide/
- [ ] https://anno.land/anno-117-guides/beduerfnisse-guide/
- [ ] https://anno.land/anno-117-guides/zwischenfaelle-managen/
- [ ] https://anno.land/anno-117-datenbanken/
- [ ] https://anno.land/anno-117-specialists/
- [ ] https://anno.land/anno-117-datenbanken/kapitaen-item-datenbank/
- [ ] https://anno.land/anno-117-goods/
- [ ] https://anno.land/anno-117-buildings/
- [ ] https://anno.land/anno-117-skills/
- [ ] https://anno.land/anno-117-tools/skillbaum-planer/
- [ ] https://anno.land/anno-117-tools/stadtplaner/
- [ ] https://anno.land/anno-117-tools/baulayouts/
- [ ] https://anno.land/anno-117-tools/schoenbau/
- [ ] https://anno.land/anno-117-guides/gold-verdienen/
- [ ] https://anno.land/anno-117-guides/links-mods/
- [ ] https://anno.land/en/anno-117-tools/
- [ ] https://anno.land/anno-117-buildings/sardinenhuette-latium/
- [ ] https://anno.land/anno-117-goods/sardinen/
- [ ] https://anno.land/anno-117-buildings/haferhof-latium/
- [ ] https://anno.land/anno-117-goods/hafer/
- [ ] https://anno.land/anno-117-buildings/garkueche-latium/
- [ ] https://anno.land/anno-117-goods/haferbrei/
- [ ] https://anno.land/anno-117-buildings/markt-latium/
- [ ] https://anno.land/anno-117-buildings/taberna-latium/
- [ ] https://anno.land/anno-117-buildings/hanfhof-latium/
- [ ] https://anno.land/anno-117-goods/hanf/
- [ ] https://anno.land/anno-117-buildings/spinnerei-latium/
- [ ] https://anno.land/anno-117-goods/tuniken/
- [ ] https://anno.land/anno-117-buildings/schafshof-latium/
- [ ] https://anno.land/anno-117-goods/schafe/
- [ ] https://anno.land/anno-117-buildings/pileusfilzer-latium/
- [ ] https://anno.land/anno-117-goods/pilei/
- [ ] https://anno.land/anno-117-buildings/weizenhof-latium/
- [ ] https://anno.land/anno-117-goods/weizen/
- [ ] https://anno.land/anno-117-buildings/kornmuehle-latium/
- [ ] https://anno.land/anno-117-goods/mehl/
- [ ] https://anno.land/anno-117-buildings/baeckerei-latium/
- [ ] https://anno.land/anno-117-goods/brot/
- [ ] https://anno.land/anno-117-buildings/makrelenhuette-latium/
- [ ] https://anno.land/anno-117-goods/makrelen/
- [ ] https://anno.land/anno-117-buildings/salzgaerten-latium/
- [ ] https://anno.land/anno-117-goods/salz/
- [ ] https://anno.land/anno-117-buildings/garumsaucier-latium/
- [ ] https://anno.land/anno-117-goods/garum/
- [ ] https://anno.land/anno-117-buildings/heiligtum-latium/
- [ ] https://anno.land/anno-117-buildings/grammaticus-latium/
- [ ] https://anno.land/anno-117-buildings/schweinehof-latium/
- [ ] https://anno.land/anno-117-goods/schweine/
- [ ] https://anno.land/anno-117-buildings/gerberei-latium/
- [ ] https://anno.land/anno-117-goods/leder/
- [ ] https://anno.land/anno-117-buildings/sandalenmacher-latium/
- [ ] https://anno.land/anno-117-goods/sandalen/
- [ ] https://anno.land/anno-117-buildings/lavendulahof-latium/
- [ ] https://anno.land/anno-117-goods/lavendula/
- [ ] https://anno.land/anno-117-buildings/suelzsieder-latium/
- [ ] https://anno.land/anno-117-goods/schmalz/
- [ ] https://anno.land/anno-117-buildings/seifensieder-latium/
- [ ] https://anno.land/anno-117-goods/seife/
- [ ] https://anno.land/anno-117-buildings/lehmgrube-latium/
- [ ] https://anno.land/anno-117-goods/lehm/
- [ ] https://anno.land/anno-117-buildings/harzzapfer-latium/
- [ ] https://anno.land/anno-117-goods/harz/
- [ ] https://anno.land/anno-117-buildings/toepfer-latium/
- [ ] https://anno.land/anno-117-goods/amphoren/
- [ ] https://anno.land/anno-117-buildings/olivenzuechter-latium/
- [ ] https://anno.land/anno-117-goods/oliven/
- [ ] https://anno.land/anno-117-buildings/olivenpresse-latium/
- [ ] https://anno.land/anno-117-goods/olivenoel/
- [ ] https://anno.land/anno-117-buildings/weingut-latium/
- [ ] https://anno.land/anno-117-goods/weintrauben/
- [ ] https://anno.land/anno-117-buildings/bienenstock-latium/
- [ ] https://anno.land/anno-117-goods/honigwaben/
- [ ] https://anno.land/anno-117-buildings/winzer-latium/
- [ ] https://anno.land/anno-117-goods/wein/
- [ ] https://anno.land/anno-117-buildings/sammelbecken-latium/
- [ ] https://anno.land/anno-117-buildings/aquaedukt-latium/
- [ ] https://anno.land/anno-117-buildings/zisterne-latium/
- [ ] https://anno.land/anno-117-buildings/theater-latium/
- [ ] https://anno.land/anno-117-buildings/aleatorium-latium/
- [ ] https://anno.land/anno-117-buildings/flachshof-latium/
- [ ] https://anno.land/anno-117-goods/flachs/
- [ ] https://anno.land/anno-117-buildings/weber-latium/
- [ ] https://anno.land/anno-117-goods/stoffe/
- [ ] https://anno.land/anno-117-buildings/schneckenzucht-latium/
- [ ] https://anno.land/anno-117-goods/purpurschnecken/
- [ ] https://anno.land/anno-117-buildings/faerberwerkstatt-latium/
- [ ] https://anno.land/anno-117-goods/tyrischer-purpur/
- [ ] https://anno.land/anno-117-buildings/webstuhl-latium/
- [ ] https://anno.land/anno-117-goods/togen/
- [ ] https://anno.land/anno-117-buildings/sandarakbaumschule-latium/
- [ ] https://anno.land/anno-117-goods/sandarakholz/
- [ ] https://anno.land/anno-117-buildings/tabulus-latium/
- [ ] https://anno.land/anno-117-goods/schrifttafeln/
- [ ] https://anno.land/anno-117-buildings/mineralsteinbruch-latium/
- [ ] https://anno.land/anno-117-goods/mineralien/
- [ ] https://anno.land/anno-117-buildings/mineralienmalmer-latium/
- [ ] https://anno.land/anno-117-goods/farbstoffe/
- [ ] https://anno.land/anno-117-buildings/sandraffinerie-latium/
- [ ] https://anno.land/anno-117-goods/quarzsand/
- [ ] https://anno.land/anno-117-buildings/glasschmelzer-latium/
- [ ] https://anno.land/anno-117-goods/glas/
- [ ] https://anno.land/anno-117-buildings/glasblaeser-latium/
- [ ] https://anno.land/anno-117-goods/feines-glas/
- [ ] https://anno.land/anno-117-buildings/forum-latium/
- [ ] https://anno.land/anno-117-buildings/baeder-latium/
- [ ] https://anno.land/anno-117-buildings/amphitheater-latium/
- [ ] https://anno.land/anno-117-buildings/austernfarm-latium/
- [ ] https://anno.land/anno-117-goods/austern/
- [ ] https://anno.land/anno-117-buildings/stoerzucht-latium/
- [ ] https://anno.land/anno-117-goods/stoere/
- [ ] https://anno.land/anno-117-buildings/fischweider-latium/
- [ ] https://anno.land/anno-117-goods/kaviar/
- [ ] https://anno.land/anno-117-buildings/meeresgourmet-latium/
- [ ] https://anno.land/anno-117-goods/austern-mit-kaviar/
- [ ] https://anno.land/anno-117-buildings/tempel-latium/
- [ ] https://anno.land/anno-117-buildings/bibliothek-latium/
- [ ] https://anno.land/anno-117-buildings/goldwaescher-latium/
- [ ] https://anno.land/anno-117-goods/golderz/
- [ ] https://anno.land/anno-117-buildings/goldschmied-latium/
- [ ] https://anno.land/anno-117-goods/gold/
- [ ] https://anno.land/anno-117-buildings/juwelier-latium/
- [ ] https://anno.land/anno-117-goods/halsketten/
- [ ] https://anno.land/anno-117-buildings/polsterer-latium/
- [ ] https://anno.land/anno-117-goods/polster/
- [ ] https://anno.land/anno-117-buildings/liegenbauer-latium/
- [ ] https://anno.land/anno-117-goods/liegen/
- [ ] https://anno.land/anno-117-buildings/saitenmacher-latium/
- [ ] https://anno.land/anno-117-goods/saiten/
- [ ] https://anno.land/anno-117-buildings/vergolder-latium/
- [ ] https://anno.land/anno-117-goods/verziertes-holz/
- [ ] https://anno.land/anno-117-buildings/lyramacher-latium/
- [ ] https://anno.land/anno-117-goods/lyren/
- [ ] https://anno.land/anno-117-buildings/herzmuschelfarm-albion/
- [ ] https://anno.land/anno-117-goods/herzmuscheln/
- [ ] https://anno.land/anno-117-buildings/aalfaenger-albion/
- [ ] https://anno.land/anno-117-goods/aale/
- [ ] https://anno.land/anno-117-buildings/markt-albion/
- [ ] https://anno.land/anno-117-buildings/saengerstube-albion/
- [ ] https://anno.land/anno-117-buildings/schilfsammler-albion/
- [ ] https://anno.land/anno-117-goods/schilf/
- [ ] https://anno.land/anno-117-buildings/schuhweber-albion/
- [ ] https://anno.land/anno-117-goods/schilfschuhe/
- [ ] https://anno.land/anno-117-buildings/hanfhof-albion/
- [ ] https://anno.land/anno-117-buildings/spinnerei-albion/
- [ ] https://anno.land/anno-117-buildings/ochsenhof-albion/
- [ ] https://anno.land/anno-117-goods/ochsen/
- [ ] https://anno.land/anno-117-buildings/kaeserei-albion/
- [ ] https://anno.land/anno-117-goods/kaese/
- [ ] https://anno.land/anno-117-buildings/gerstenhof-albion/
- [ ] https://anno.land/anno-117-goods/gerste/
- [ ] https://anno.land/anno-117-buildings/maelzerei-albion/
- [ ] https://anno.land/anno-117-goods/malz/
- [ ] https://anno.land/anno-117-buildings/brauerei-albion/
- [ ] https://anno.land/anno-117-goods/bier/
- [ ] https://anno.land/anno-117-buildings/wettkampfwiese-albion/
- [ ] https://anno.land/anno-117-buildings/fanum-albion/
- [ ] https://anno.land/anno-117-buildings/schafshof-albion/
- [ ] https://anno.land/anno-117-buildings/faerberwaupflanze-albion/
- [ ] https://anno.land/anno-117-goods/faerberpflanzen/
- [ ] https://anno.land/anno-117-buildings/hosenmacher-albion/
- [ ] https://anno.land/anno-117-goods/hosen/
- [ ] https://anno.land/anno-117-buildings/kupfermine-albion/
- [ ] https://anno.land/anno-117-goods/kupfererz/
- [ ] https://anno.land/anno-117-buildings/drahtzwirbler-albion/
- [ ] https://anno.land/anno-117-goods/torques/
- [ ] https://anno.land/anno-117-buildings/zinnmine-albion/
- [ ] https://anno.land/anno-117-goods/zinnerz/
- [ ] https://anno.land/anno-117-buildings/horner-albion/
- [ ] https://anno.land/anno-117-goods/trinkhoerner/
- [ ] https://anno.land/anno-117-buildings/bronzeschmelzer-albion/
- [ ] https://anno.land/anno-117-goods/bronze/
- [ ] https://anno.land/anno-117-buildings/schildschlaeger-albion/
- [ ] https://anno.land/anno-117-goods/clanschilde/
- [ ] https://anno.land/anno-117-buildings/salzkrautsammler-albion/
- [ ] https://anno.land/anno-117-goods/salzkraut/
- [ ] https://anno.land/anno-117-buildings/erdofen-albion/
- [ ] https://anno.land/anno-117-goods/rinderbraten/
- [ ] https://anno.land/anno-117-buildings/weingut-albion/
- [ ] https://anno.land/anno-117-buildings/bienenstock-albion/
- [ ] https://anno.land/anno-117-buildings/winzer-albion/
- [ ] https://anno.land/anno-117-buildings/aeltestenrat-albion/
- [ ] https://anno.land/anno-117-buildings/theater-albion/
- [ ] https://anno.land/anno-117-buildings/gruenhaende-albion/
- [ ] https://anno.land/anno-117-goods/keltischgruen/
- [ ] https://anno.land/anno-117-buildings/birrusnaeher-albion/
- [ ] https://anno.land/anno-117-goods/umhaenge/
- [ ] https://anno.land/anno-117-buildings/biberfaenger-albion/
- [ ] https://anno.land/anno-117-goods/biber/
- [ ] https://anno.land/anno-117-buildings/salzkrautbrenner-albion/
- [ ] https://anno.land/anno-117-goods/salzlake/
- [ ] https://anno.land/anno-117-buildings/bieberhutmacher-albion/
- [ ] https://anno.land/anno-117-goods/fellmuetzen/
- [ ] https://anno.land/anno-117-buildings/pferdefaenger-albion/
- [ ] https://anno.land/anno-117-goods/ponys/
- [ ] https://anno.land/anno-117-buildings/gestellbauer-albion/
- [ ] https://anno.land/anno-117-goods/holz/
- [ ] https://anno.land/anno-117-goods/unterbau/
- [ ] https://anno.land/anno-117-buildings/wagenbauer-albion/
- [ ] https://anno.land/anno-117-goods/streitwagen/
- [ ] https://anno.land/anno-117-buildings/huegelgrab-albion/
- [ ] https://anno.land/anno-117-buildings/heiliger-hain-albion/
- [ ] https://anno.land/anno-117-buildings/weizenhof-albion/
- [ ] https://anno.land/anno-117-buildings/eselsmuehle-albion/
- [ ] https://anno.land/anno-117-buildings/baeckerei-albion/
- [ ] https://anno.land/anno-117-buildings/schweinehof-albion/
- [ ] https://anno.land/anno-117-buildings/kraeutergarten-albion/
- [ ] https://anno.land/anno-117-goods/kraeuter/
- [ ] https://anno.land/anno-117-buildings/salsicium-albion/
- [ ] https://anno.land/anno-117-goods/wuerste/
- [ ] https://anno.land/anno-117-buildings/grammaticus-albion/
- [ ] https://anno.land/anno-117-buildings/silbermine-albion/
- [ ] https://anno.land/anno-117-goods/silbererz/
- [ ] https://anno.land/anno-117-buildings/silberschmiede-albion/
- [ ] https://anno.land/anno-117-goods/silber/
- [ ] https://anno.land/anno-117-buildings/fibularium-albion/
- [ ] https://anno.land/anno-117-goods/fibeln/
- [ ] https://anno.land/anno-117-buildings/suelzsieder-albion/
- [ ] https://anno.land/anno-117-buildings/schlammtrockner-albion/
- [ ] https://anno.land/anno-117-goods/schlamm/
- [ ] https://anno.land/anno-117-buildings/toepfer-albion/
- [ ] https://anno.land/anno-117-buildings/harzzapfer-albion/
- [ ] https://anno.land/anno-117-buildings/vogelfaenger-albion/
- [ ] https://anno.land/anno-117-goods/kleine-voegel/
- [ ] https://anno.land/anno-117-buildings/zungenzieher-albion/
- [ ] https://anno.land/anno-117-goods/vogelzungen/
- [ ] https://anno.land/anno-117-buildings/delicium-albion/
- [ ] https://anno.land/anno-117-goods/vogelzungen-in-aspik/
- [ ] https://anno.land/anno-117-buildings/aleatorium-albion/
- [ ] https://anno.land/anno-117-buildings/pferdezuechter-albion/
- [ ] https://anno.land/anno-117-goods/pferde/
- [ ] https://anno.land/anno-117-buildings/haarnetzweber-albion/
- [ ] https://anno.land/anno-117-goods/haarnetz/
- [ ] https://anno.land/anno-117-buildings/perueckenknuepfer-albion/
- [ ] https://anno.land/anno-117-goods/peruecken/
- [ ] https://anno.land/anno-117-buildings/flachshof-albion/
- [ ] https://anno.land/anno-117-buildings/kammmuschelzuechter-albion/
- [ ] https://anno.land/anno-117-goods/kammmuschelschalen/
- [ ] https://anno.land/anno-117-buildings/narcissium-albion/
- [ ] https://anno.land/anno-117-goods/handspiegel/
- [ ] https://anno.land/anno-117-buildings/tempel-albion/
- [ ] https://anno.land/anno-117-buildings/baeder-albion/
- [ ] https://anno.land/anno-117-buildings/sammelbecken-albion/
- [ ] https://anno.land/anno-117-buildings/aquaedukt-albion/
- [ ] https://anno.land/anno-117-buildings/zisterne-albion/
- [ ] https://anno.land/anno-117-buildings/holzfaeller-latium/
- [ ] https://anno.land/anno-117-buildings/saegewerk-latium/
- [ ] https://anno.land/anno-117-goods/bretter/
- [ ] https://anno.land/anno-117-buildings/ziegelei-latium/
- [ ] https://anno.land/anno-117-goods/ziegel/
- [ ] https://anno.land/anno-117-buildings/kalksteinbruch-latium/
- [ ] https://anno.land/anno-117-goods/kalkstein/
- [ ] https://anno.land/anno-117-buildings/betonmischer-latium/
- [ ] https://anno.land/anno-117-goods/beton/
- [ ] https://anno.land/anno-117-buildings/marmorsteinbruch-latium/
- [ ] https://anno.land/anno-117-goods/rohmarmor/
- [ ] https://anno.land/anno-117-buildings/marmor-steinmetz-latium/
- [ ] https://anno.land/anno-117-goods/marmor/
- [ ] https://anno.land/anno-117-buildings/mosaikmacher-latium/
- [ ] https://anno.land/anno-117-goods/mosaike/
- [ ] https://anno.land/anno-117-buildings/holzfaeller-albion/
- [ ] https://anno.land/anno-117-buildings/saegewerk-albion/
- [ ] https://anno.land/anno-117-buildings/lehmwerkhof-albion/
- [ ] https://anno.land/anno-117-goods/flechtwerk/
- [ ] https://anno.land/anno-117-buildings/ziegelei-albion/
- [ ] https://anno.land/anno-117-buildings/kalksteinbruch-albion/
- [ ] https://anno.land/anno-117-buildings/sandraffinerie-albion/
- [ ] https://anno.land/anno-117-buildings/betonmischer-albion/
- [ ] https://anno.land/anno-117-buildings/granitsteinbruch-albion/
- [ ] https://anno.land/anno-117-goods/granitbloecke/
- [ ] https://anno.land/anno-117-buildings/granitschneider-albion/
- [ ] https://anno.land/anno-117-goods/granit/
- [ ] https://anno.land/anno-117-buildings/koehler-albion/
- [ ] https://anno.land/anno-117-goods/kohle/
- [ ] https://anno.land/anno-117-buildings/koehler-latium/
- [ ] https://anno.land/anno-117-buildings/liberti-latium/
- [ ] https://anno.land/anno-117-buildings/kontor-latium/
- [ ] https://anno.land/anno-117-buildings/lagerhaus-latium/
- [ ] https://anno.land/anno-117-buildings/schiffswerft-latium/
- [ ] https://anno.land/anno-117-buildings/anlegestelle-latium/
- [ ] https://anno.land/anno-117-buildings/depot-latium/
- [ ] https://anno.land/anno-117-buildings/reparaturkran-latium/
- [ ] https://anno.land/anno-117-buildings/seilmacher-latium/
- [ ] https://anno.land/anno-117-goods/seile/
- [ ] https://anno.land/anno-117-buildings/segelmacher-latium/
- [ ] https://anno.land/anno-117-goods/segel/
- [ ] https://anno.land/anno-117-buildings/kaserne-latium/
- [ ] https://anno.land/anno-117-buildings/belagerungswerkstatt-latium/
- [ ] https://anno.land/anno-117-buildings/campus-equitum-latium/
- [ ] https://anno.land/anno-117-buildings/eisenmine-latium/
- [ ] https://anno.land/anno-117-goods/eisenerz/
- [ ] https://anno.land/anno-117-buildings/ofen-latium/
- [ ] https://anno.land/anno-117-goods/eisen/
- [ ] https://anno.land/anno-117-buildings/waffenschmied-latium/
- [ ] https://anno.land/anno-117-goods/waffen/
- [ ] https://anno.land/anno-117-buildings/pferdezuechter-latium/
- [ ] https://anno.land/anno-117-buildings/ruestungsschmied-latium/
- [ ] https://anno.land/anno-117-goods/ruestung/
- [ ] https://anno.land/anno-117-buildings/vigiles-latium/
- [ ] https://anno.land/anno-117-buildings/custodia-latium/
- [ ] https://anno.land/anno-117-buildings/medici-latium/
- [ ] https://anno.land/anno-117-buildings/brunnen-latium/
- [ ] https://anno.land/anno-117-buildings/wachturm-latium/
- [ ] https://anno.land/anno-117-buildings/latrine-latium/
- [ ] https://anno.land/anno-117-buildings/villa-des-praetors-latium/
- [ ] https://anno.land/anno-117-buildings/officium-latium/
- [ ] https://anno.land/anno-117-buildings/schrein-von-ceres-latium/
- [ ] https://anno.land/anno-117-buildings/schrein-von-epona-latium/
- [ ] https://anno.land/anno-117-buildings/schrein-von-cernunnos-latium/
- [ ] https://anno.land/anno-117-buildings/schrein-von-mars-latium/
- [ ] https://anno.land/anno-117-buildings/schrein-von-merkur-lugus-latium/
- [ ] https://anno.land/anno-117-buildings/schrein-von-minerva-latium/
- [ ] https://anno.land/anno-117-buildings/schrein-von-neptun-latium/
- [ ] https://anno.land/anno-117-buildings/schrein-von-epona-albion/
- [ ] https://anno.land/anno-117-buildings/schrein-von-ceres-albion/
- [ ] https://anno.land/anno-117-buildings/schrein-von-cernunnos-albion/
- [ ] https://anno.land/anno-117-buildings/schrein-von-mars-albion/
- [ ] https://anno.land/anno-117-buildings/schrein-von-merkur-lugus-albion/
- [ ] https://anno.land/anno-117-buildings/schrein-von-minerva-albion/
- [ ] https://anno.land/anno-117-buildings/schrein-von-neptun-albion/
- [ ] https://anno.land/anno-117-buildings/wanderer-albion/
- [ ] https://anno.land/anno-117-buildings/kontor-albion/
- [ ] https://anno.land/anno-117-buildings/lagerhaus-albion/
- [ ] https://anno.land/anno-117-buildings/schleusentor-albion/
- [ ] https://anno.land/anno-117-buildings/entwaesserungskanal-albion/
- [ ] https://anno.land/anno-117-buildings/schiffswerft-albion/
- [ ] https://anno.land/anno-117-buildings/depot-albion/
- [ ] https://anno.land/anno-117-buildings/handelskai-albion/
- [ ] https://anno.land/anno-117-buildings/reparaturkran-albion/
- [ ] https://anno.land/anno-117-buildings/segelmacher-albion/
- [ ] https://anno.land/anno-117-buildings/seilmacher-albion/
- [ ] https://anno.land/anno-117-buildings/kaserne-albion/
- [ ] https://anno.land/anno-117-buildings/campus-equitum-albion/
- [ ] https://anno.land/anno-117-buildings/belagerungswerkstatt-albion/
- [ ] https://anno.land/anno-117-buildings/eisenmine-albion/
- [ ] https://anno.land/anno-117-buildings/ofen-albion/
- [ ] https://anno.land/anno-117-buildings/waffenschmied-albion/
- [ ] https://anno.land/anno-117-buildings/gerberei-albion/
- [ ] https://anno.land/anno-117-buildings/ruestungsschmied-albion/
- [ ] https://anno.land/anno-117-buildings/villa-des-praetors-albion/
- [ ] https://anno.land/anno-117-buildings/officium-albion/
- [ ] https://anno.land/anno-117-buildings/medici-albion/
- [ ] https://anno.land/anno-117-buildings/custodes-albion/
- [ ] https://anno.land/anno-117-buildings/vigiles-albion/
- [ ] https://anno.land/anno-117-buildings/latrine-albion/
- [ ] https://anno.land/anno-117-buildings/wachturm-albion/
- [ ] https://anno.land/anno-117-buildings/brunnen-albion/
- [ ] https://anno.land/en/anno-117-tools/produktionsketten/