diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ModelPipeline.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ModelPipeline.java
index c9f67dce..84db4558 100644
--- a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ModelPipeline.java
+++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ModelPipeline.java
@@ -2,6 +2,7 @@ package us.codecraft.webmagic.model;
import us.codecraft.webmagic.ResultItems;
import us.codecraft.webmagic.Task;
+import us.codecraft.webmagic.model.annotation.ExtractBy;
import us.codecraft.webmagic.pipeline.Pipeline;
import java.lang.annotation.Annotation;
diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/PageModelExtractor.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/PageModelExtractor.java
index 0207b7ac..445bdd92 100644
--- a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/PageModelExtractor.java
+++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/PageModelExtractor.java
@@ -2,6 +2,7 @@ package us.codecraft.webmagic.model;
import org.apache.commons.lang3.StringUtils;
import us.codecraft.webmagic.Page;
+import us.codecraft.webmagic.model.annotation.*;
import us.codecraft.webmagic.selector.*;
import java.lang.annotation.Annotation;
diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractBy.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractBy.java
similarity index 92%
rename from webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractBy.java
rename to webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractBy.java
index 661fd673..af8946a1 100644
--- a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractBy.java
+++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractBy.java
@@ -1,4 +1,4 @@
-package us.codecraft.webmagic.model;
+package us.codecraft.webmagic.model.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractBy2.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractBy2.java
similarity index 91%
rename from webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractBy2.java
rename to webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractBy2.java
index 55d5dfa8..f68b7d64 100644
--- a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractBy2.java
+++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractBy2.java
@@ -1,4 +1,4 @@
-package us.codecraft.webmagic.model;
+package us.codecraft.webmagic.model.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractBy3.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractBy3.java
similarity index 91%
rename from webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractBy3.java
rename to webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractBy3.java
index 10f6a9f4..f3212a6a 100644
--- a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractBy3.java
+++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractBy3.java
@@ -1,4 +1,4 @@
-package us.codecraft.webmagic.model;
+package us.codecraft.webmagic.model.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractByRaw.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractByRaw.java
similarity index 93%
rename from webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractByRaw.java
rename to webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractByRaw.java
index 5dca8e14..96927320 100644
--- a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractByRaw.java
+++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractByRaw.java
@@ -1,4 +1,4 @@
-package us.codecraft.webmagic.model;
+package us.codecraft.webmagic.model.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractByUrl.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractByUrl.java
similarity index 91%
rename from webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractByUrl.java
rename to webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractByUrl.java
index f443c0ee..52f4a57a 100644
--- a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/ExtractByUrl.java
+++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/ExtractByUrl.java
@@ -1,4 +1,4 @@
-package us.codecraft.webmagic.model;
+package us.codecraft.webmagic.model.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/HelpUrl.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/HelpUrl.java
similarity index 89%
rename from webmagic-extension/src/main/java/us/codecraft/webmagic/model/HelpUrl.java
rename to webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/HelpUrl.java
index 808d58aa..3437e444 100644
--- a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/HelpUrl.java
+++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/HelpUrl.java
@@ -1,4 +1,4 @@
-package us.codecraft.webmagic.model;
+package us.codecraft.webmagic.model.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/TargetUrl.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/TargetUrl.java
similarity index 91%
rename from webmagic-extension/src/main/java/us/codecraft/webmagic/model/TargetUrl.java
rename to webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/TargetUrl.java
index 3622f55c..c747da6c 100644
--- a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/TargetUrl.java
+++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/TargetUrl.java
@@ -1,4 +1,4 @@
-package us.codecraft.webmagic.model;
+package us.codecraft.webmagic.model.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/webmagic-lucene/src/main/test/java/us/codecraft/webmagic/lucene/OschinaBlog.java b/webmagic-lucene/src/main/test/java/us/codecraft/webmagic/lucene/OschinaBlog.java
index d4442753..4480f0be 100644
--- a/webmagic-lucene/src/main/test/java/us/codecraft/webmagic/lucene/OschinaBlog.java
+++ b/webmagic-lucene/src/main/test/java/us/codecraft/webmagic/lucene/OschinaBlog.java
@@ -3,9 +3,9 @@ package us.codecraft.webmagic.lucene;
import org.apache.lucene.document.Document;
import org.apache.lucene.queryparser.classic.ParseException;
import us.codecraft.webmagic.Site;
-import us.codecraft.webmagic.model.ExtractBy;
+import us.codecraft.webmagic.model.annotation.ExtractBy;
import us.codecraft.webmagic.model.OOSpider;
-import us.codecraft.webmagic.model.TargetUrl;
+import us.codecraft.webmagic.model.annotation.TargetUrl;
import us.codecraft.webmagic.pipeline.LucenePipeline;
import java.io.IOException;
diff --git a/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/IteyeBlog.java b/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/IteyeBlog.java
index 4d01902c..4be2edef 100644
--- a/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/IteyeBlog.java
+++ b/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/IteyeBlog.java
@@ -1,9 +1,9 @@
package us.codecraft.webmagic.model.samples;
import us.codecraft.webmagic.Site;
-import us.codecraft.webmagic.model.ExtractBy;
+import us.codecraft.webmagic.model.annotation.ExtractBy;
import us.codecraft.webmagic.model.OOSpider;
-import us.codecraft.webmagic.model.TargetUrl;
+import us.codecraft.webmagic.model.annotation.TargetUrl;
/**
* @author code4crafter@gmail.com
diff --git a/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/News163.java b/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/News163.java
index 83f8388b..848800d4 100644
--- a/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/News163.java
+++ b/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/News163.java
@@ -3,6 +3,10 @@ package us.codecraft.webmagic.model.samples;
import us.codecraft.webmagic.PagedModel;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.model.*;
+import us.codecraft.webmagic.model.annotation.ExtractBy;
+import us.codecraft.webmagic.model.annotation.ExtractBy2;
+import us.codecraft.webmagic.model.annotation.ExtractByUrl;
+import us.codecraft.webmagic.model.annotation.TargetUrl;
import us.codecraft.webmagic.pipeline.ConsolePipeline;
import us.codecraft.webmagic.pipeline.PagedPipeline;
import us.codecraft.webmagic.scheduler.RedisScheduler;
diff --git a/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/OschinaAnswer.java b/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/OschinaAnswer.java
index df238739..02b8a9c5 100644
--- a/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/OschinaAnswer.java
+++ b/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/OschinaAnswer.java
@@ -3,6 +3,9 @@ package us.codecraft.webmagic.model.samples;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.model.*;
+import us.codecraft.webmagic.model.annotation.ExtractBy;
+import us.codecraft.webmagic.model.annotation.HelpUrl;
+import us.codecraft.webmagic.model.annotation.TargetUrl;
/**
* @author code4crafter@gmail.com
diff --git a/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/OschinaBlog.java b/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/OschinaBlog.java
index 817ba448..64094925 100644
--- a/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/OschinaBlog.java
+++ b/webmagic-samples/src/main/java/us/codecraft/webmagic/model/samples/OschinaBlog.java
@@ -1,9 +1,9 @@
package us.codecraft.webmagic.model.samples;
import us.codecraft.webmagic.Site;
-import us.codecraft.webmagic.model.ExtractBy;
+import us.codecraft.webmagic.model.annotation.ExtractBy;
import us.codecraft.webmagic.model.OOSpider;
-import us.codecraft.webmagic.model.TargetUrl;
+import us.codecraft.webmagic.model.annotation.TargetUrl;
import us.codecraft.webmagic.pipeline.JsonFilePipeline;
/**